データベースサーバーのPIDであるproc/<pid>/io
SQLクエリのIOアクティビティを測定するために読みました。<pid>
各クエリの前後の値を読み取って差を計算し、リクエストによって読み取りおよび/または書き込みが発生したバイト数を取得します。
私が知る限り、フィールドREAD_BYTES
は実際のディスク IO をカウントしRCHAR
ますが、Linux ページ キャッシュによって満たされる可能性のある読み取りなど、さらに多くのものが含まれます (明確にするために、/proc/[pid]/io のカウンターの理解を参照してください )。RCHAR
これは、以上の値になるはずの仮定につながりますREAD_BYTES
が、私の結果はこの仮定と矛盾しています。
Infobright ICE で取得した結果のマイナー ブロックまたはページ オーバーヘッドを想像できます (値は MB です)。
Query RCHAR READ_BYTES
tpch_q01.sql| 34.44180| 34.89453|
tpch_q02.sql| 2.89191| 3.64453|
tpch_q03.sql| 32.58994| 33.19531|
tpch_q04.sql| 17.78325| 18.27344|
しかし、MonetDB の IO カウンターを完全に理解できません (値は MB です)。
Query RCHAR READ_BYTES
tpch_q01.sql| 0.07501| 220.58203|
tpch_q02.sql| 1.37840| 18.16016|
tpch_q03.sql| 0.08272| 162.38281|
tpch_q04.sql| 0.06604| 83.25391|
RCHAR
を含むという仮定は間違っていますREAD_BYTES
か? MonetDB が使用できるカーネル カウンターをだます方法はありますか? ここで何が起こっているのですか?
各クエリの前に、ページ キャッシュをクリアし、データベース サーバーを再起動することを追加する場合があります。私は Ubuntu 11.10 を使用しており、カーネル 3.0.0-15-generic を実行しています。