商品数を増やしたときのパフォーマンスをあげる・その2

以前、商品数を増やしたときのパフォーマンスを上げるという記事を書いたのですが、とても重要なことを見落としていました。それはPostgreSQLのバージョンです。今回のテーマはPostgreSQLのバージョンを上げるということなんですが、これでいろんな悩みは解消してしまいます。
イイワケをしますとCentOS5でデフォルトでインストールされるバージョンが8.1なのですね。そういうわけで、ホスティング環境やレンタルサーバ環境でも、疑うことなく8.1を使用されている方も多いのではないかと思います。8.3にバージョンアップすれば信じられないほど改善するかもしれませんのでお試しください。ちなみにPentiun DC 2.2GHz メモリ4G EC-CUBE2.4.0 で、4万件登録した全件のリストも、1万件の商品が入っているカテゴリのリストも、1秒台で帰ってきます。(8.1では3万件で7分とかでした。)
以下、CentOS5の64ビット版を想定した手順です。参考まで。




1.PostgreSQL ver.8.1.11のアンインストール
1.1.バックアップ
postgresユーザーに切り替え
 # su – postgres

DBのダンプを取得
 $ pg_dumpall > dumpfile

postgresユーザーからログアウト
 $ exit

PostgreSQLサービスを停止
 # service postgresql stop

ファイルのバックアップ
 # mv /var/lib/pgsql /var/lib/pgsql_back

1.2.アンインストール
Apache停止
 # service httpd stop

PostgreSQLをアンインストール
 # yum -y remove postgresql postgresql-server

postgresql-libsをアンインストール。依存関係でhttpdやphp等もアンインストールされる。
※レンタルサーバで用意されている管理ツール(Plesk等)がある場合、yumでpostgresql-libsをアンインストールすると、管理ツールも一緒に削除される事があります。
  削除されると困るパッケージがある場合、yumでアンインストールを行なうのではなく、「rpm -e –nodeps ~」で、依存関係を無視して、該当のパッケージのみを削除してください。
※32bit OSの場合、postgresql-libsをアンインストールする必要はありません。
  その場合、httpdやphpのアンインストールによって発生する作業は行う必要がありません。
 # yum remove postgresql-libs-8.1.11-1.el5_1.1

2.PostgreSQL ver.8.3.7のインストール
2.1.yumリポジトリの追加
リポジトリ追加用のrpmをダウンロード
 # cd /usr/src
 # wget http://yum.pgsqlrpms.org/reporpms/8.3/pgdg-centos-8.3-6.noarch.rpm

インストール
 # rpm -ivh pgdg-centos-8.3-6.noarch.rpm
 準備中…########################################### [100%]
 1:pgdg-centos########################################### [100%]

リポジトリ追加を確認
 # less /etc/yum.repos.d/pgdg-83-centos.repo

[pgdg83]
name=PostgreSQL 8.3 $releasever - $basearch
baseurl=http://yum.pgsqlrpms.org/8.3/redhat/rhel-$releasever-$basearch
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG
  :
  :

CentOSの[base]と[updates]からPostgreSQL関係のパッケージを除外するように設定  
 # vi /etc/yum.repos.d/CentOS-Base.repo

[base]
 :
 :
exclude=postgresql*

[updates]
 :
 :
exclude=postgresql*

2.2.PostgreSQL ver.8.3.7をインストール
yumでpostgresqlを検索
 # yum list postgresql postgresql-server
 Available Packages
 postgresql.x86_64 8.3.7-1PGDG.rhel5 pgdg83
 postgresql-server.x86_64 8.3.7-1PGDG.rhel5 pgdg83

インストール
 # yum -y install postgresql postgresql-server postgresql-libs

postgresql-libsをアンインストールした場合、依存関係でアンインストールされたパッケージを再インストール
 # yum -y install httpd php php-pgsql php-mbstring php-gd php-pgsql freetype \
 postgresql-python subversion webalizer apr-util-devel dovecot \
 httpd-devel httpd-manual mod_perl mod_python mod_ssl perl-DBD-Pg

3.Apache設定
Apacheを再インストールした場合、設定が初期化されるため、再度必要な設定変更を行う。

4.PostgreSQL設定
4.1.PostgreSQL起動
postgresユーザーに切り替え
 # su – postgres

データベースを初期化
 $ initdb -E UTF-8 –no-local

postgresユーザーからログアウト
 $ exit

サービスを起動
 # service postgresql start

サービスの自動起動設定
 # chkconfig –list postgresql
 postgresql 0:off 1:off 2:on 3:on 4:on 5:on 6:off

4.2.設定変更・チューニング
8.1.11でのPostgreSQLの変更を8.3のファイルにも適用  
pg_hba.conf や postgresql.confの設定も初期化されているため、EC-CUBE用に修正する。

チューニングのための設定ファイル編集(おまけ。ベストの設定値は研究してください)
 # vi /var/lib/pgsql/data/postgresql.conf

:
max_connections = 512                   # (change requires restart)
 :
shared_buffers = 1GB                    # min 128kB or max_connections*16kB
 :
work_mem = 2MB                          # min 64kB
 :
random_page_cost = 3.0                  # same scale as above
 :
effective_cache_size = 1GB

PostgreSQL再起動  
 # service postgresql restart

5.データリストア
dumpファイルをリストア
バックアップしたディレクトリ内のdumpファイルをver.8.3.7のディレクトリに移動  
 # mv /var/lib/pgsql_back/dumpfile /var/lib/pgsql/

postgresユーザーに切り替え  
 # su – postgres

リストア  
 $ psql < dumpfile postgresユーザーからログアウト    $ exit 6.不要なファイルの削除       PostgreSQL ver.8.1.11バックアップファイルの削除      # rm -rf /var/lib/pgsql_back   dumpファイルの削除      # rm /var/lib/pgsql/dumpfile   

以上です。

大量商品登録ツール

大量商品登録ツール