FUJITSU Enterprise Postgresでは、カラム型のインデックスとデータのメモリレジデント機能によるインメモリ機能を提供しています。これにより、ディスクI/Oを削減して、集計処理を高速化することができます。
注意
本機能は、Advanced Editionのみで使用できます。
集計処理においては特定の列中の大部分のデータを必要とする処理が多くあります。しかし、従来の行型のデータ構造では不要な列も読み出してしまうため、メモリやCPUキャッシュの利用効率が悪く、十分な速度が出ません。そこで、FUJITSU Enterprise Postgresはカラム型のインデックスであるVCI(Vertical Clustered Index)を提供します。これにより上記の問題を解決し、集計処理を高速化できます。
VCIは以下のような特徴を持ちます。
既存業務への影響を抑えつつ、業務データをリアルタイムに利用した集計処理を行えます
インデックスとして提供するため、アプリの改修は必要ありません
ディスク上にもデータを持つため、障害発生時(インスタンス再起動時)に速やかにVCIを利用した集計業務を再開できます
VCIの使用メモリ量が設定値を超えた場合でも、ディスク上のデータを使って動作するため、VCIを利用した参照を継続できます
また、下記のように圧縮機能と並列機能も備えています。
圧縮機能
ディスク上のVCIデータを圧縮することで、ディスク容量の増加を抑えます。また、仮にディスクアクセスが必要になった場合でも、少ないオーバーヘッドで読み出すことができます。
並列機能
複数のCPUコアに分散させて並列に処理することで、集計処理を高速化します。
以下の機能により、VCIのデータをメモリに常駐させ、集計処理のたびに発生するディスクI/Oを抑止します。
事前ロード機能
インスタンス再起動後など、アプリケーションが検索する前にVCIのデータをメモリにロードすることで、安定したレスポンスを保証します。
stable buffer機能
他の業務データによるVCIデータのメモリ追い出しを防ぐことで、ディスクI/O回数を削減します。
本機能の狙い
本機能は新たに追加したリソースを効率よく活用できるデータ構造をとり、通常業務における既存の集計処理を並列検索以上に高速化することが狙いです。別途提供している並列検索機能も集計処理の高速化を目的としていますが、空きリソースを活用して夜間バッチを高速化することが狙いである点が異なります。
VCIのアーキテクチャ
パラメータ設定等に必要となる基本的な用語の説明のため、VCIのアーキテクチャについて簡単に解説します。
業務データのリアルタイムな利用を実現するための、更新と集計それぞれについての動作を述べます。
VCIはカラム型のデータ構造であるROS(Read Optimized Store)に加えて、書き込みバッファである行型のWOS(Write Optimized Store)を持ちます。更新ごとにカラム型へ変換すると、更新処理のレスポンスに大きな影響があるためです。このため、更新時には行型のWOSへ同期的にデータを反映します。WOSに一定以上のデータが溜まったときに、ROS制御デーモンが更新とは非同期にROSへ変換します。以上のように、VCI全体でテーブルの対象列との同期を実現しながら、更新のオーバーヘッドを抑えます。
検索時にはWOSとROSを合わせて利用することで、VCIを利用しない場合と同じ検索結果を得られます。具体的には、集計処理ごとにWOSをローカルなメモリ上のLocal ROSに変換し、ROSと合わせて集計します。
参照
VCIの導入と運用についての詳細は、“運用ガイド”の“インメモリ機能の導入と運用”を参照してください。
VCIを利用した検索についての詳細は、“アプリケーション開発ガイド”の“Vertical Clustered Index(VCI)を利用した検索”を参照してください。