[pgsql-jp: 41556] Re: REINDEXの処理時間
MauMau
maumau307 @ gmail.com
2014年 1月 25日 (土) 07:51:40 JST
MauMauといいます。
REINDEXは主に次のようなことをします。
1.テーブルのファイルをすべて読み、(ガベージでない)有効なレコードを一時作業域に書き出す。
2.一時作業域のレコードを、インデックスのキー順にソートする。
3.新しいインデックス用ファイルに、一時作業域のレコードを書き出す。
そのため、実行時間はレコード数だけに比例するのではないと思います。
たとえば、100万件のレコードが入っていたテーブルがあるとします。
DELETEですべてのレコードを消すと、SELECT COUNT(*)で得られる有効レコード数は0です。
しかし、100万件のガベージは残っています。
それでも、REINDEXは100万件のガベージを読みます。
また、ソートの時間がレコード件数に比例しないかもしれません。
以上です。
----- Original Message -----
From: <masaosa9592 @ zenrin.co.jp>
To: <pgsql-jp @ ml.postgresql.jp>
Sent: Friday, January 24, 2014 1:22 PM
Subject: [pgsql-jp: 41553] REINDEXの処理時間
佐野と申します。
REINDEXの処理時間について質問があります。
レコード数増加とREINDEX処理時間の関係が
比例関係にありませんが、PostgreSQLのメカニズム上
そういう傾向にあるものでしょうか?
また、処理時間の増加はデータ容量ではなく
レコード数にともなって増加すると考えていますが
認識はあっていますでしょうか
レコード数:5億6千万レコード
データ容量:180G
処理時間:5時間55分
↓
レコード数:6億5千万レコード
データ容量:200G
処理時間:8時間45分
以上、よろしくお願い致します。
pgsql-jp メーリングリストの案内