มีคำสั่งให้ค้นหาขนาดฐานข้อมูลทั้งหมดใน Postgres หรือไม่?
ฉันสามารถหาขนาดของฐานข้อมูลเฉพาะโดยใช้คำสั่งต่อไปนี้:
select pg_database_size('databaseName');
มีคำสั่งให้ค้นหาขนาดฐานข้อมูลทั้งหมดใน Postgres หรือไม่?
ฉันสามารถหาขนาดของฐานข้อมูลเฉพาะโดยใช้คำสั่งต่อไปนี้:
select pg_database_size('databaseName');
คำตอบ:
และ ... หากในกรณีที่คุณไม่ต้องการพิมพ์ข้อความค้นหาทั้งหมด ... คุณสามารถพิมพ์ ...
\l+ <database_name>
และคุณจะได้รับรายละเอียดบางอย่างเกี่ยวกับฐานข้อมูลรวมถึงขนาดของฐานข้อมูล
และ ... เพื่อให้ได้ขนาดฐานข้อมูลทั้งหมด
คุณสามารถพิมพ์ ...
\l+
คุณอาจต้องเข้าไปที่พรอมต์คำสั่ง postgresql เพื่อสอบถามด้วยคำสั่ง postgresql helper
ตรวจสอบคำสั่ง postgresql helper อื่น ๆ โดยพิมพ์
\?
ที่พรอมต์คำสั่ง postgresql
คุณสามารถรับชื่อของฐานข้อมูลทั้งหมดที่คุณสามารถเชื่อมต่อได้จากตารางระบบ "pg_datbase" เพียงใช้ฟังก์ชั่นกับชื่อดังต่อไปนี้
select t1.datname AS db_name,
pg_size_pretty(pg_database_size(t1.datname)) as db_size
from pg_database t1
order by pg_database_size(t1.datname) desc;
หากคุณต้องการให้เอาต์พุตใช้โดยเครื่องแทนมนุษย์คุณสามารถตัดฟังก์ชัน pg_size_pretty ()
pg_database_size()
รวมขนาดของดัชนี
\l+
ในกรณีที่คนถูกสงสัยแบบสอบถามนี้ให้ตรงค่าเช่นเดียวกับ รูปแบบเอาต์พุตอ่านง่ายกว่า (มีคอลัมน์น้อยกว่า) แลกเปลี่ยนระหว่างความสามารถเขียนได้และการอ่านได้ ...
-- Database Size
SELECT pg_size_pretty(pg_database_size('Database Name'));
-- Table Size
SELECT pg_size_pretty(pg_relation_size('table_name'));
ตามคำตอบที่นี่โดย@Hendy Irawan
แสดงขนาดฐานข้อมูล:
\l+
เช่น
=> \l+
berbatik_prd_commerce | berbatik_prd | UTF8 | en_US.UTF-8 | en_US.UTF-8 | | 19 MB | pg_default |
berbatik_stg_commerce | berbatik_stg | UTF8 | en_US.UTF-8 | en_US.UTF-8 | | 8633 kB | pg_default |
bursasajadah_prd | bursasajadah_prd | UTF8 | en_US.UTF-8 | en_US.UTF-8 | | 1122 MB | pg_default |
แสดงขนาดตาราง:
\d+
เช่น
=> \d+
public | tuneeca_prd | table | tomcat | 8192 bytes |
public | tuneeca_stg | table | tomcat | 1464 kB |
psql
จะทำงานเฉพาะใน
\d+ *
ทำงานได้แค่\d+
ส่งคืนธรรมดาDid not find any relations.
\c dbname
) \d+
แล้วทำ
ใช่มีคำสั่งให้ค้นหาขนาดของฐานข้อมูลใน Postgres มันคือต่อไปนี้:
SELECT pg_database.datname as "database_name", pg_size_pretty(pg_database_size(pg_database.datname)) AS size_in_mb FROM pg_database ORDER by size_in_mb DESC;
SELECT database_name, pg_size_pretty(size) from (SELECT pg_database.datname as "database_name", pg_database_size(pg_database.datname) AS size FROM pg_database ORDER by size DESC) as ordered;
SELECT pg_database.datname AS "DB Name", pg_size_pretty(pg_database_size(pg_database.datname)) AS "Size" FROM pg_database ORDER BY (pg_database_size(pg_database.datname)) DESC;
ผมใช้วิธีนี้แทนแบบสอบถามย่อย
SELECT pg_size_pretty(pg_database_size('name of database'));
จะให้ขนาดทั้งหมดของฐานข้อมูลเฉพาะ แต่ฉันไม่คิดว่าคุณสามารถทำฐานข้อมูลทั้งหมดภายในเซิร์ฟเวอร์
อย่างไรก็ตามคุณสามารถทำเช่นนี้ ...
DO
$$
DECLARE
r RECORD;
db_size TEXT;
BEGIN
FOR r in
SELECT datname FROM pg_database
WHERE datistemplate = false
LOOP
db_size:= (SELECT pg_size_pretty(pg_database_size(r.datname)));
RAISE NOTICE 'Database:% , Size:%', r.datname , db_size;
END LOOP;
END;
$$
pg_database
แทนที่จะเป็น pl / pgsql ที่น่าเกลียดนี้
จากวิกิพีเดีย PostgreSQL
หมายเหตุ: ฐานข้อมูลที่ผู้ใช้ไม่สามารถเชื่อมต่อได้จะถูกจัดเรียงราวกับว่ามีขนาดไม่ จำกัด
SELECT d.datname AS Name, pg_catalog.pg_get_userbyid(d.datdba) AS Owner,
CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')
THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))
ELSE 'No Access'
END AS Size
FROM pg_catalog.pg_database d
ORDER BY
CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')
THEN pg_catalog.pg_database_size(d.datname)
ELSE NULL
END DESC -- nulls first
LIMIT 20
หน้านี้ยังมีตัวอย่างข้อมูลเพื่อค้นหาขนาดของความสัมพันธ์ที่ยิ่งใหญ่ที่สุดและตารางที่ใหญ่ที่สุดของคุณ
คุณสามารถใช้แบบสอบถามด้านล่างเพื่อค้นหาขนาดของฐานข้อมูลทั้งหมดของ PostgreSQL
SELECT
datname AS DatabaseName
,pg_catalog.pg_get_userbyid(datdba) AS OwnerName
,CASE
WHEN pg_catalog.has_database_privilege(datname, 'CONNECT')
THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(datname))
ELSE 'No Access For You'
END AS DatabaseSize
FROM pg_catalog.pg_database
ORDER BY
CASE
WHEN pg_catalog.has_database_privilege(datname, 'CONNECT')
THEN pg_catalog.pg_database_size(datname)
ELSE NULL
END DESC;
เริ่ม pgAdmin เชื่อมต่อกับเซิร์ฟเวอร์คลิกที่ชื่อฐานข้อมูลและเลือกแท็บสถิติ คุณจะเห็นขนาดของฐานข้อมูลที่ด้านล่างของรายการ
จากนั้นหากคุณคลิกที่ฐานข้อมูลอื่นระบบจะยังคงอยู่ในแท็บสถิติเพื่อให้คุณสามารถดูขนาดฐานข้อมูลได้หลากหลายโดยไม่ต้องใช้ความพยายามมากนัก หากคุณเปิดรายการตารางมันจะแสดงตารางและขนาดทั้งหมด
Databases
โหนดต้นไม้ (แนบกับการเชื่อมต่อฐานข้อมูล) และเลือกStatistics
แท็บที่คุณจะนำเสนอด้วยการสรุปที่ดีของฐานข้อมูลและขนาดของพวกเขาทั้งหมด (คอลัมน์ที่สาม)
du -k /var/lib/postgresql/ |sort -n |tail
du -k /var/lib/pgsql/ | sort -n | tail