はじめに
Vertica環境のキャッシュをクリアする方法をご紹介します。
一般的に、クエリ実行時に発生するディスクI/Oによるボトルネックを緩和するためにキャッシュの存在は重宝します。
しかし、パフォーマンステストやベンチマークなどを行う場合には、より精度の高い計測値を得るためにキャッシュの存在が邪魔になる事があります。
このようなケースで使える「キャッシュをクリアする方法」をご紹介します。
Vertica環境のキャッシュをクリアする方法
Vertica環境に存在するキャッシュは大きく分けて以下の2つに分類できます。
1. Verticaの内部的なキャッシュファイル
2. ファイルシステム上のキャッシュ
それぞれのキャッシュをクリアする方法を記載します。
1. Verticaの内部的なキャッシュファイルをクリア
以下のコマンドをデータベースユーザのスーパーユーザで実行します。
(デフォルトはdbadminユーザです)
dbadmin=> SELECT CLEAR_CACHES();
CLEAR_CACHES
--------------
Cleared
(1 row)2. ファイルシステム上のキャッシュをクリア
これはLinux OS上のファイルシステムのキャッシュです。
以下のコマンドをOSのrootユーザで実行します。
ファイルシステムのメモリバッファをディスクと同期させます。
# syncページキャッシュをクリアする場合
# echo 1 > /proc/sys/vm/drop_cachesディレクトリエントリ(dentry)とinodeをクリアする場合
# echo 2 > /proc/sys/vm/drop_caches ページキャッシュ、ディレクトリエントリ(dentry)とinodeをクリアする場合
# echo 3 > /proc/sys/vm/drop_caches検証バージョンについて
この記事の内容はVertica 9.1で確認しています。