SE/システムエンジニアのIT系就職/転職/派遣サイト システムエンジニアになるためのJava Linux資格の講座(スクール)IT Boost
ITエンジニアとして 働く 知る 学ぶ 買う 群れる
ゲストさん こんにちは
Java
.NET
PHP
プログラミング一般
DataBase
システム/サーバ構築
システム/サーバ運用
技術系一般知識
 
 
IT技術情報 >データベース >PostgreSQLパフォーマンスチューニング第1回:設定編
データベース(DataBase) 〜スキルアップ 技術情報〜
【連載 】PostgreSQLパフォーマンスチューニング

第1回:設定編

 

【 ページ 】 | 1 | 2 | 3 | 4 | 5 | 6 |

<<前のページへ



会員登録のメリット! ▼Java や Linux を体系的に学びましょう!▼
Stack*のアイティーブーストが、
新学習方式のカリキュラムを開発しました!
14700円から(*1)、Java や Linux を体系的に学べます!!
(*1 テキスト代のみの税込料金です)



4.postgresql.conf(2)


●共有バッファ(shared_buffers)

共有バッファは、テーブルのデータをキャッシュするために使用されます。キャッシュは、複数のバックエンドプロセスの間で共有する必要があるため、共有メモリ(shared memory)という、特別なメモリ領域に保持されます。設定shared_buffersでは、この共有メモリのサイズを設定することができます。

共有バッファ上にテーブルのデータがキャッシュされると、次回同じデータを必要とする参照系クエリが発行された場合に、ディスクからデータを読むのではなく、共有メモリ上のデータを参照するようになります。共有メモリからのデータ読み出し速度はディスクと比較して非常に高速です。つまり、より高速に処理を完了させることができるのです。

共有バッファのサイズを大きくしておくと、必要なデータが共有バッファ上に存在する確率が高くなります。つまり、システム全体として、速度改善の可能性が向上することになります。

共有バッファのサイズは可能な限り大きくとるべきです。しかし、物理メモリの量は無限ではありません。そこで、どの程度の領域を実際に確保するかを検討することになります。「他のソフトウェアのメモリ使用に影響を及ぼさない最大値」というのが理想的なサイズです。つまり、スワップが発生しない状態を維持できる最大サイズです。このサイズがどの程度かはケースバイケースですが、空きメモリのサイズを一定期間監視すれば、どの程度のメモリの割り当てが可能か推測することができます。

逆のアプローチとして、最適なパフォーマンスを得るための必要最小限のメモリ量から割り当てるメモリの量を考えるという方法もあります。最適なパフォーマンスを得るためには、「必要なテーブルが全て収まるサイズ」のメモリ量が必要です。前項「活動状況の監視(stats_*)」を行うことによって、現状の設定で足りているかどうかを知ることができます。

なお、設定値に 8192 Byte を掛けた数が確保されるメモリ量の概算になります(実際にはもう少し多くなります)。また、max_connectionsの値を2倍した値以上の数値を設定しなければなりません。
OSの設定として、OS全体で確保できる共有メモリサイズには上限があります。共有メモリはPostgreSQL以外のソフトウェアも使用するので、システム全体の共有メモリ使用量が上限を超えないようにしなければなりません。現在の共有メモリ使用状況を確認するためには、次のコマンドを実行します。

ipcs -m



共有メモリの上限を変更することもできますが、OS毎に設定方法は異なります。例えばLinuxでは、/proc/sys/kernel/shmmax というファイルで最大サイズを管理しています。このファイルの内容を次のようにして書き換えれば、共有メモリ最大サイズを133554432バイトに変更できます。

echo 133554432 > /proc/sys/kernel/shmmax

 

●ソートメモリ(sort_mem)

ソートを行うための作業領域のサイズを設定します。単位は KByte です。ソート作業で必要な領域がここでの設定値を超えると、一時ファイルへの書き出しが行われ、パフォーマンスに悪影響を及ぼします。
ソートメモリは下記の処理中に使用されます。

  • ORDER BY
  • Merge Join
  • CREATE INDEX

ソートメモリは、共有メモリではなく、通常のメモリ領域に確保されます。また、各 postgres プロセス毎に保持され、一つのソートに対して一つの領域が割り当てられます。従って、ここでの設定値の数倍のメモリが使われることになりますので、大きすぎる値を設定することはスワップの発生を誘発し、パフォーマンスの低下を引き起こします。

>>次のページへ

【 目次 】
1.はじめに
2.基本的な考え方
3.postgresql.conf(1) -- 活動状況の監視(stats_*), 収集情報の取り出し --
4.postgresql.conf(2) -- 共有バッファ, ソートメモリ --
5.検証例(1)
6.まとめ・参考リンク

【 関連記事 】
PostgreSQLパフォーマンスチューニング
第1回:設定編
第2回:SQL編
第3回:テーブル設計編

ID(メールアドレス)
パスワード

次回以降自動ログインする
新規ユーザ登録
パスワード再発行
サイト内全文検索
スタックアスタリスクのサイトを検索します。検索には、Googleを利用しています。そのため、最新の情報で検索されない可能性があります。

簡単レンタルメールフォーム
300メガ1000円〜 XBitのレンタルサーバー
500メガ1995円〜 電話サポート/PostgreSQL/専用SSLなどにも対応!お客様のニーズを網羅したレンタルサーバ
ホームページ制作のアシストウェブ
STACK* 執筆の講師陣から習得する!! ITエンジニアスクール アイティブースト
統合メールサポートシステム 〜MailDealer(メールディーラー)〜
システム開発,IT教育 〜株式会社アイティーブースト(ITBoost)〜
  利用規約 お問い合わせ・ご意見 スタックアスタリスクについて 運営会社について 求人掲載お問合せ 
  レンタルサーバー ホスティング 専用サーバー 専用ホスティング メールフォーム ショッピングカート メール共有 ITエンジニア派遣 Linux講座 Java講座 メール配信 レンタルサーバー
メール管理・共有 顧客管理(CRM)もできるメール対応サポートシステムJAVA LINUX CISCO 技術者派遣 育成事業 システムエンジニアになるためのJava Linux資格の講座(スクール)