GCP SQL Postgres 11: скачок объема памяти из-за индексов - PullRequest
1 голос
/ 31 марта 2020

У нас есть облачная sql postgres установка с 16vcpu. Неожиданно происходит увеличение размера хранилища, связанного с индексами. Размер таблицы составляет 20 ГБ, и 4 индекса в ней потребляют 70 ГБ + согласно статистике pgadmin. Таблица имеет массовое удаление и вставку операций в транзакциях.

Есть ли какие-либо специальные флаги, которые необходимо добавить?

PS: я слышал о настройках хранения WAL, но не уверен, окажет ли это какое-либо влияние, и я не могу на самом деле s sh на машина как это GCP SQL.

[обновление 1]: После удаления таблицы / индексов воссоздано:

Таблица T1 Статистика:

Sequential scans    911504
Sequential tuples read  7338381399896
Index scans 173853066
Index tuples fetched    98226419759
Tuples inserted 109307632
Tuples updated  804
Tuples deleted  100410620
Tuples HOT updated  0
Live tuples 8797115
Dead tuples 24503371
Heap blocks read    1829681
Heap blocks hit 287184313804
Index blocks read   11094719
Index blocks hit    4239641531
Toast blocks read   0
Toast blocks hit    0
Toast index blocks read 0
Toast index blocks hit  0
Last vacuum 
Last autovacuum 2020-03-31 18:48:45.626151+00
Last analyze    2020-03-31 14:17:20.834182+00
Last autoanalyze    2020-03-31 18:48:53.828135+00
Vacuum counter  0
Autovacuum counter  24
Analyze counter 3
Autoanalyze counter 53
Table size  5726 MB
Toast table size    8192
Indexes size    21 GB

T1 pg_stat_user_indexes

indexrelname    idx_scan    idx_tup_read    idx_tup_fetch   Size    
index1          0           0                0              4608 kB
index2          21          103,913,145      0              3417 MB
index3          2,786       1,110,430        135,322        4007 MB
index4          949,981     1,284,602        794,130        4020 MB
index5          7,549,112   1,043,077,414    1,043,060,187  1860 MB
index6          165,334,371 13,962,773,344   12,209,134,553 1692 MB

Структура таблицы - (всего 14 столбцов)

Col1    character varying   
Col2    character varying   
Col3    character varying   
Col4    character varying   
Col5    character varying   
Col6    character varying   
Col7    character varying   
Col8    timestamp without time zone 
Col9    timestamp without time zone 

Определение индекса - index1 и index4 являются уникальными индексами

index1  Col1    Col2    Col3    Col4    Col5    Col6    Col7    Col8    Col9
where Col8 is null 
index2  Col5    Col6                    
index3  Col1    Col2    Col3    Col5    Col6        
index4  Col1    Col2    Col3    Col4    Col5    Col6    Col7    Col8    Col9
where Col8 is not null
index5  Col4    Col5                    
index6  Col1    Col2    Col3    Col4    Col5

Одна странная вещь, которую я заметил при извлечении статистики - это pg_stat_user_indexes с двумя дополнительными индексами 7 и 8, которые не отображаются под schemaname-> tablename> indexes

...