در سیستم عامل لینوکس به همراه دستوراتی که فضای مصرفی فایلها، دایرکتوریها و پارتیشنها را نمایش می دهند (نظیر df و du) می توان از سوییچ h برای نمایش خواناتر خروجی استفاده کرد که کلمه h مخفف عبارت Human-Readable می باشد.
مثال:
[oracle@host ~]$ df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda3 543928992 169894132 346381740 33% /
tmpfs 178257920 351512 177906408 1% /dev/shm
/dev/sda1 499656 144960 318000 32% /boot
[oracle@host ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 519G 163G 331G 33% /
tmpfs 170G 344M 170G 1% /dev/shm
/dev/sda1 488M 142M 311M 32% /boot
در محیط دیتابیس هم توابعی وجود دارند که بتوان از طریق آنها حجم مصرفی segmentها و دیتابیس را به صورت خوانا نمایش داد.
برای مثال در دیتابیس اوراکل، برای نمایش حجم segmentها به صورت Human-Readable می توان از بسته dbms_xplan استفاده کرد.
البته می دانیم که کاربرد عمده این package به نمایش execution plan دستورات برمی گردد اما این پکیج در کنار نمایش execution plan، توابع دیگری نظیر format_size، format_number و format_time_s هم دارد که می توان از انها برای نمایش خواناتر خروجی استفاده کرد.
برای مثال، دستور زیر با کمک تابع format_size، حجم segmentهای موجود در دیتابیس را بصورت خوانا نمایش خواهد داد:
select owner,segment_name,dbms_xplan.format_size(bytes) TBL_SIZE from dba_segments order by bytes desc;
همچنین با کمک دستور زیر، می توان حجم کلی دیتابیس را بصورت خوانا مشاهده کرد:
select dbms_xplan.format_size(sum(bytes)) as Oracle_DB_Size from dba_data_files;
4471G
در دیتابیس پستگرس، نمایش حجم کلی دیتابیسها، با استفاده از تابع pg_database_size قابل انجام است. برای مثال با دستور زیر می توان حجم دیتابیسی با نام postgres را بر اساس بایت مشاهده کرد:
postgres=# select pg_database_size(‘postgres’);
pg_database_size
——————
5580020871
(1 row)
برای نمایش این فضا بصورت Human-Readable می توان از تابع دیگری با نام pg_size_pretty کمک گرفت:
postgres=# select pg_size_pretty( pg_database_size(‘postgres’) );
pg_size_pretty
—————-
5322 MB
(1 row)
همچنین در محیط پستگرس برای نمایش حجم جداول، می توان از pg_relation_size استفاده کرد:
postgres=# select pg_relation_size(‘MYTBL’);
pg_relation_size
——————
2263605248
(1 row)
postgres=# select pg_size_pretty(pg_relation_size(‘MYTBL’));
pg_size_pretty
—————-
2159 MB
(1 row)
پ.ن 1: برای مشاهده سایز یک جدول به همراه سایز segmentهای وابسته به آن نظیر ایندکسها، می توان از تابع pg_total_relation_size استفاده کرد:
postgres=# select pg_size_pretty(pg_total_relation_size(‘MYTBL’));
pg_size_pretty
—————-
2964 MB
(1 row)
پ.ن 2: برای مشاهده پنج جدول حجیم موجود در دیتابیس، می توان از پرس و جوی زیر بهره گرفت:
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
———-+————
mytbl | 2964 MB
mytbl2 | 753 MB
mytbl5 | 24 kB
(3 rows)