در این آموزش یاد می گیرید که چگونه اندازه اشیاء پایگاه داده Postgresql شامل پایگاه داده ها، جداول، فهرست ها، جدول ها و مقادیر را بدست آورید.
برای بدست آوردن اندازه یک جدول خاص، از تابع ()pg_relation_size استفاده می کنید. به عنوان مثال می توانید اندازه جدول actor را در پایگاه داده نمونه dvdrental به صورت زیر بدست آورید:
select pg_relation_size(‘actor’);
pg_relation_size
——————
۱۶۳۸۴
خروجی این تابع در مبنای byte می باشد که برای خواناتر شدن از تابع pg_size_pretty می توان استفاده کرد.
تابع pg_size_pretty یک عدد را با استفاده از بایت، کیلوبایت، مگابایت، گیگابایت یا TB به طور مناسب فرمت میکند. مثلا:
SELECT
pg_size_pretty (pg_relation_size(‘actor’)) size;
size
——-
۱۶ kB
(۱ row)
همانطور که مشاهده می کنید خروجی بر مبنای KB می باشد.
توجه داشته باشید که تابع ()pg_relation_size فقط اندازه جدول را برمیگرداند، بدون اینکه شاخصها یا اشیاء اضافی را شامل شود.
برای بدست آوردن اندازه کل جدول، از تابع pg_total_relation_size() استفاده می کنید. به عنوان مثال، عبارت زیر از pg_total_relation_size() برای بازیابی اندازه کل جدول actor استفاده می کند:
SELECT pg_size_pretty(pg_total_relation_size (‘actor’)) size;
size
——-
۷۲ kB
(۱ row)
میتوانید از تابع pg_total_relation_size() برای یافتن اندازه بزرگترین جداول از جمله indexها استفاده کنید.
به عنوان مثال، کوئری زیر ۵ جدول بزرگ را در پایگاه داده dvdrental برمی گرداند:
SELECT
relname AS “relation”,
pg_size_pretty (
pg_total_relation_size (C .oid)
) AS “total_size”
FROM
pg_class C
LEFT JOIN pg_namespace N ON (N.oid = C .relnamespace)
WHERE
nspname NOT IN (
‘pg_catalog’,
‘information_schema’
)
AND C .relkind <> ‘i’
AND nspname !~ ‘^pg_toast’
ORDER BY
pg_total_relation_size (C .oid) DESC
LIMIT 5;
relation | total_size
————+————
rental | ۲۳۵۲ kB
payment | ۱۸۱۶ kB
film | ۹۳۶ kB
film_actor | 488 kB
inventory | ۴۴۰ kB
(۵ rows)
برای بدست آوردن اندازه کل پایگاه داده، از تابع ()pg_database_size استفاده می کنید. به عنوان مثال، عبارت زیر اندازه پایگاه داده dvdrental را برمی گرداند:
SELECT pg_size_pretty (pg_database_size (‘dvdrental’)) size;
size
——-
۱۵ MB
(۱ row)
برای به دست آوردن اندازه هر پایگاه داده در سرور پایگاه داده فعلی، از عبارت زیر استفاده می کنید:
SELECT
pg_database.datname,
pg_size_pretty(pg_database_size(pg_database.datname)) AS size
FROM pg_database;
datname | size
———–+———
postgres | ۸۴۵۲ kB
template1 | 7892 kB
template0 | 7681 kB
dvdrental | 15 MB
(۴ rows)
دریافت اندازه index PostgreSQL
برای به دست آوردن اندازه کل همه index های پیوست شده به یک جدول، از تابع ()pg_indexes_size استفاده می کنید.
تابع pg_indexes_size() نام OID یا جدول را به عنوان آرگومان می پذیرد و کل فضای دیسک استفاده شده توسط همه شاخص های متصل به آن جدول را برمی گرداند.
به عنوان مثال، برای به دست آوردن اندازه کل همه شاخص های پیوست شده به جدول فیلم، از عبارت زیر استفاده می کنید:
SELECT pg_size_pretty (pg_indexes_size(‘actor’)) size;
size
——-
۳۲ kB
(۱ row)
برای بدست آوردن اندازه tablespace، از تابع ()pg_tablespace_size استفاده می کنید.
تابع pg_tablespace_size() نام tablespace را می پذیرد و اندازه را بر حسب byte برمی گرداند. برای مثال، عبارت زیر اندازه tablespace pg_default را برمیگرداند:
SELECT pg_size_pretty(pg_tablespace_size (‘pg_default’)) size;
size
——-
۴۸ MB
(۱ row)
برای پیدا کردن مقدار فضای مورد نیاز برای ذخیره یک مقدار خاص، از تابع ()pg_column_size استفاده می کنید، به عنوان مثال:
SELECT
pg_column_size(5 :: smallint) smallint_size,
pg_column_size(5 :: int) int_size,
pg_column_size(5 :: bigint) bigint_size;
smallint_size | int_size | bigint_size
—————+———-+————-
۲ | ۴ | ۸
(۱ row)
از تابع pg_size_pretty() برای فرمت اندازه استفاده کنید.
برای بدست آوردن اندازه جدول از تابع pg_relation_size() استفاده کنید.
از تابع pg_total_relation_size() برای بدست آوردن اندازه کل جدول استفاده کنید.
از تابع pg_database_size() برای بدست آوردن اندازه پایگاه داده استفاده کنید.
برای بدست آوردن اندازه یک شاخص از تابع pg_indexes_size() استفاده کنید.
از تابع pg_total_index_size() برای به دست آوردن اندازه همه شاخص های یک جدول استفاده کنید.
از تابع pg_tablespace_size() برای بدست آوردن اندازه جدول استفاده کنید.
از تابع pg_column_size() برای به دست آوردن اندازه یک ستون از یک نوع خاص استفاده کنید.