اوراکل؛پستگرس – نمایش حجم جداول و دیتابیس بصورت Human-Readable

در سیستم عامل لینوکس به همراه دستوراتی که فضای مصرفی فایلها، دایرکتوریها و پارتیشنها را نمایش می دهند (نظیر 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)

ارتباط با نویسنده مطلب:vahidusefzadeh@ کانال تخصصی اوراکل و لینوکس: OracleDB@

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.