Почему размер индекса отличается в одном столбце - PullRequest
0 голосов
/ 06 июня 2018

Мы по ошибке создали два одинаковых индекса в одном и том же столбце, но когда мы проверили, что размер индексов два разных, то позже один индекс упал.

Хотите проверить, почему размер отображается по-разному.

Пример:

create index index1 on table1 using btree(column1);
create index index2 on table1 using btree(column1);

pega=> select pg_size_pretty(pg_table_size('index1')); 
pg_size_pretty 
---------------- 
100 MB 
(1 row) 

 select pg_size_pretty(pg_table_size('index2')); 
pg_size_pretty 
---------------- 
70 MB 
(1 row)  

Не могли бы вы мне помочь в этом.

1 Ответ

0 голосов
/ 06 июня 2018

Это произойдет после создания первого индекса, если какие-либо операции DML, выполненные с этой таблицей, будут занимать мертвые кортежи, а размер будет увеличен, теперь, если вы создадите тот же индекс для этого размера столбца, он будет отличаться от первого индекса.

После выполнения полного вакуума размеры равны.

примеры:

mydb=# select pg_size_pretty(pg_table_size('idx1'));
 pg_size_pretty 
----------------
 6600 kB
(1 row)

mydb=# select pg_size_pretty(pg_table_size('idx2'));
 pg_size_pretty 
----------------
 2208 kB
(1 row)


mydb=# vacuum full temp1;
VACUUM
mydb=# select pg_size_pretty(pg_table_size('idx1'));
 pg_size_pretty 
----------------
 2208 kB
(1 row)

mydb=# select pg_size_pretty(pg_table_size('idx2'));
 pg_size_pretty 
----------------
 2208 kB
(1 row)
...