PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Размер на таблицата на дяловете в PostgreSQL 9.0

В PostgreSQL всяка таблица е обект, като използването на pg_relation_size(‘object_name’) ще даде размера на обекта. Ако изпратите таблицата на дяловете на мястото на ‘object_name’, тя дава само този размер на обекта, но не и размерите на дъщерните таблици.

Вижте примера, даден по-долу.

postgres=# dt+
List of relations
Schema | Name | Type | Owner | Size | Description
--------+---------------+-------+----------+------------+-------------
public | child1 | table | postgres | 8192 bytes |
public | child2 | table | postgres | 8192 bytes |
public | parent | table | postgres | 0 bytes |
(3 rows)

pg_relation_size() на родителската таблица няма да даде точния размер.

postgres=# select pg_size_pretty(pg_relation_size('parent'));
pg_size_pretty
----------------
0 bytes
(1 row)

За да постигнете размер на таблицата за дялове, първо познайте съответните дъщерни таблици и нейните размери. Използването на каталожна таблица pg_inherits ще ви помогне да получите информация за дъщерните таблици с размери и по-късно да ги сумирате за точен размер. Опитах се да напиша малка функция, използвайки pg_inherits, за да го направя.

CREATE OR REPLACE FUNCTION pg_partition_table_size(text) returns numeric as
$$
select sum(to_number(pg_size_pretty(pg_relation_size(inhrelid::regclass)),'999999999')) from pg_inherits where inhparent=$1::regclass;
$$ language sql;

Сега изпратете таблицата на дяловете на функцията.

postgres=# select pg_partition_table_size('parent');
pg_partition_table_size
-------------------------
16384
(1 row)

Не е ли полезно. Публикувайте вашите коментари, те ще бъдат високо оценени.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да свържете две таблици в поле за външен ключ, използвайки django ORM?

  2. Как мога да реша проблема с удостоверяването на Postgresql SCRAM?

  3. cursor.execute(INSERT INTO im_entry.test (+entrym+) СТОЙНОСТИ ('+p+');)

  4. объркване на postgresql порт 5433 или 5432?

  5. Размер на таблицата на дяловете в PostgreSQL 9.0