PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Rozmiar tablicy partycji w PostgreSQL 9.0

W PostgreSQL każda tabela jest obiektem, użycie pg_relation_size(‘nazwa_obiektu’) da rozmiar obiektu. Jeśli wyślesz tabelę partycji w miejsce „nazwa_obiektu”, daje to tylko ten rozmiar obiektu, ale nie rozmiary tabel podrzędnych.

Sprawdź przykład podany poniżej.

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() w tabeli nadrzędnej nie poda dokładnego rozmiaru.

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

Aby osiągnąć rozmiar tabeli partycji, najpierw poznaj odpowiednie tabele podrzędne i ich rozmiary. Użycie tabeli katalogu pg_inherits pomoże w uzyskaniu informacji o tabelach podrzędnych z rozmiarami, a następnie zsumowaniu ich dla dokładnego rozmiaru. Próbowałem napisać małą funkcję za pomocą pg_inherits, aby to zrobić.

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;

Teraz wyślij tabelę partycji do funkcji.

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

Czy to nie jest przydatne. Opublikuj swoje komentarze, będą one bardzo mile widziane.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak cbrt() działa w PostgreSQL

  2. Wyłącz ostrzeżenie w sqlalchemy

  3. Zdobądź drzewo rodziców + dzieci z pg-obietnicą

  4. Dlaczego nie mogę używać aliasów kolumn w następnym wyrażeniu SELECT?

  5. Pierwsze kroki z replikacją strumieniową PostgreSQL