[pgsql-jp: 33491] Re: select文でセグメンテーション違反

Hitoshi Taniguchi taniguchi @ chihaya-t3.co.jp
2004年 7月 4日 (日) 19:33:35 JST


谷口@質問者です。

> > パラメータを論理的に調整してみる事からはじめませんか?
> 一つずつ挑戦してみます。
色々と試してたところ、処理速度に変化は見られるものの
----------------------------------------------------------
SELECT * FROM table_name ORDER BY key1,key2,key3,key4;
server sent data ("D" message) without prior row description ("T" message)
server sent data ("D" message) without prior row description ("T" message)
・・・延々と続きます
セグメンテーション違反です

     以上の様にして終了します。SELECTの実行から約30分後です。
----------------------------------------------------------
の状況は、変化がありませんでした。
カーネルとPostgreSQLの両方の設定を全て初期状態に
戻してみましたが結果は同じでした。

===============================
<再度整理してみました>
大規模データ(100-200GB程度)のデータ分析に以下のサーバを
スタンドアロンで使用するという単純な使用方法です。
CPU: Xeon MP * 2CPU
メモリ: 8GB
OS: Red Hat Enterprise Linux ES Version 3
PostgreSQL:Version 7.3.6
ディスク:ext3(但し、raid5)で、700GB程度のユーザエリアで処理

===============================
問題を簡単にする為に以下のテストを行いました。
DROP TABLE test1m;
CREATE TABLE test1m(
    key1    char(5),
    key2    char(5),
    key3    char(5),
    key4    char(5),
    pad     char(80)
);
ランダムな数字を作成して、test1mに百万件登録し、
同様にテーブル名をtest50mにして5千万件登録しました。
実際のテーブルサイズは別とすると、
test1mには、約100MByteのデータ容量になり
test50mには、約5GByteのデータ容量になります。

psqlにより、以下の実験をしました。
<test1mに対して>
1)SELECT * FROM test1m ORDER BY key1;
2)SELECT * FROM test1m ORDER BY key1 LIMIT 5;
3)SELECT * FROM test1m ORDER BY key1 OFFSET 999995;
4)SELECT * FROM test1m;
5)SELECT * FROM test1m LIMIT 5;
6)SELECT * FROM test1m OFFSET 999995;
<test50mに対して>
7)SELECT * FROM test50m ORDER BY key1; <= ERROR *****
8)SELECT * FROM test50m ORDER BY key1 LIMIT 5;
9)SELECT * FROM test50m ORDER BY key1 OFFSET 999995;
10)SELECT * FROM test50m; <= ERROR *****
11)SELECT * FROM test50m LIMIT 5;
12)SELECT * FROM test50m OFFSET 49999995;
前述のエラーが出たのは、7)と10)でした。

10)の場合は、swapが発生しない場合でもエラーが出ました。
12)の場合は、ソートが完了しており、表示された結果も
元のランダムな数字をソートした結果の最後の5件と同じであり、
正常終了していますが、単純なSELECTだけの10)でエラーが発生します。

テーブルに4GBの制限があるのかとも思いましたが無いようです。
全く理由が分かりません。
もし、お分かりの方がいらっしゃいましたらお教え頂けますと幸いです。
よろしくお願い致します。





pgsql-jp メーリングリストの案内