07/07/23 に Kentarow Kobayashi さんは書きました:
小林健太郎です。
[...]
(2)が、おかしいなら、外部結合して正常に動かす為の前提条件に問題が あるはずです。 #RedHat ES3やCentOS4.4、Mac OS Xなどは、それらの前提条件が #うまくいっているから動くのではないでしょうか。
正直なところは、この前提条件がPostgreSQLではなくSUSE Linuxとして 何かあるのではと思ったしだいです。問題のSQLを実行すると、 CPUが100%にずっといったまま作業をして返ってくるという挙動をするので、 PostgreSQLのデーモンを動かしているpostgresユーザに、何か十分な メモリ割り当て等をしなければいけないのではと考えました。 RedHat ES3やCentOS4.4、Mac OS Xなどで動作確認を することは無駄ではないと思いますが、それで動いたから、 SLES SP1 でもすぐに動く(動かないといけない)というふうに 考えるのは良くないと思います。
データベースが正しく動いていることを簡単な(テスト)テーブルなどで 1つづつ確認しながら、切り分けていくことが必要だと思います。 ・6,500件のメインテーブルと同じようなテストテーブル(1件分の大きさ)に対してクエリーだす。 ・4,000件のテーブルと同じようなテストテーブル(1件分の大きさ)に対してクエリーだす。 ・上記ようなテーブルで、内部結合するようなクエリー(1件)だす。 ・上記ようなテーブルで、外部結合するようなクエリー(1件)だす。 #ここまでだと、メモリ割り当てが問題にならないと思います。(まずは、1件分のクエリーで。) #Defaultの設定なりで動くのでは? ・ ・ ・ 一般論として、DBを動かすには、以下のような項目があると思います。 ・データベースのインストール(セットアップ) ・OSなどチューニング(共有メモリなど) ・DB自体の設計(テーブルのデザイン) ・DBのミドルウェアーの設定など ・ネットワークの設定(SQLサーバ、SQLクライアントのネットワーク設定) #SLES SP1の(default)設定なりに、問題が無いかというとそうでもないかも #しれません。 ただし、そこらあたりの切り分けがご自身できないなら #SLES SP1 --- ノベルなりとサポート契約 #PostgreSQL --- SRAなりとサポート契約(多分やっていると思いますけど...) #というのが良いと思います。 ネットワーク越し(localhostであっても)に、外部のテーブルと外部結合 するなら、ネットワーク(OS)の設定の影響を受けると思います。 #私の場合、Webアプリ(CMS)なんかで、バックエンドにMysql なんかがあるときは、 #手動でクエリーだして、Mysqlの動作確認するなどしながらCMSの動作確認を #進めていきます。(最初から、DBの配置をどうしょうかなども考えます。大体localhostですけど)
あと、このケースだと、何がしかのログ(syslogなり、PostgreSQLのログ) なりが出ているはずで... まずは、ログを見てみるのが問題解決の近道かと思います。 #どこまで、正しく動作して、どこから正しく動作していないかを #切り分けていくこと大切だと思います。
切り分けについては、おっしゃられている通りだと思います。 標準の状態では、ログとして何も出ていなかったので、もう少し詳しく 出るようにしてみます。 くりかえすようですが、データベースがどのよう動いているかを 検証するために、標準の状態ではログがなにも出ないなら 出すようにして調べる。 #基本的な問題解決へのアプローチが大切なのではないでしょうか。
--- takezou061228 --------------------------------------------------------------------- To unsubscribe, e-mail: opensuse-ja+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-ja+help@opensuse.org