buffer poolの使用量抑制について

初めて投稿させていただきます。

・buffer poolを食いつぶさないように設定する方法を探しております。

現状の環境は下記となります。

アイテム数:約8万
1秒あたりの監視項目数:約1500

DB:MySQL5.6
ストレージエンジン:Innodb
割り当て物理メモリ:128GB
InnoDB_file_per_table=1
MySQL buffer pool size:93GB
InnoDB data size / buffer pool: 98.5G/93.0G

Zabbixのhistory_uint.ibdが100GBオーバーとなっており、
おそらくbuffer poolをhistory_uintにて食いつぶしているのだと思います。

ヒストリのDBサイズが非常に大きいですが、
ヒストリの保存期間を7日に設定してからはInnoDB data sizeの拡張も
緩やかになりましたが、buffer poolを無駄に消費していると思います。

history_uint.ibdが増えることはデータ蓄積上問題ないのですが
それらがbuffer poolを食いつぶさないように設定することは可能でしょうか。

どうか皆様のお知恵をお借り出来れば幸いです。

コメント表示オプション

お好みのコメント表示方法を選び「設定の保存」をクリックすると変更が反映されます。
ユーザー TNK の写真

テーブルが大きいからといって、テーブルのすべてをメモリに読み
込んで処理するわけではありません。

監視の各アイテムでデータを取得して保存するだけであれば、デー
タを保存したり変更したりするために必要なページのみにアクセス
するので、それよりも大きなメモリが確保されていれば、高速に処
理することができます。

buffer poolを多く消費する原因として考えられることとしては、
例えば、長期間のデータを参照するようなグラフの表示を多く行っ
たりしていませんか?
過去の大量なデータを頻繁にアクセスされているのであれば、それ
らのアクセスを効率化するため、buffer poolを多く利用するよう
になってしまうはずです。

MySQLで、

 show engine innodb status\G

を実行して「FILE I/O」や「BUFFER POOL AND MEMORY」あたりの値
もご確認ください。
アクセスが多くてディスクへのI/Oが間に合わず、読み書きのペン
ディングが発生してしまうような状態でないかもご確認ください。

あと、利用されているZabbixのバージョンが古かったりしませんか?
Zabbix 2.2では、発行するSQLを大幅に見直したり、DBへのアクセ
ス回数を削減したりすることで、DBに対する負荷を大幅に軽減する
ようになっているようです。
古いバージョンのZabbixを利用されている場合は、新しいバージョ
ンへの移行もご検討ください。

ご参考:
 14.2.12.4. SHOW ENGINE INNODB STATUS and the InnoDB Monitors
  http://dev.mysql.com/doc/refman/5.6/en/innodb-monitors.html
 MySQL 5.5 Guide to InnoDB Status
  http://www.slideshare.net/billkarwin/mysql-55-guide-to-innodb-status
 Zabbix Conference Japan 2013 (P.9 - Zabbix 2.0より2~5倍高速)
  http://www.zabbix.com/jp/img/zabconf2013/presentations/01-zabbix-sia.pdf

ユーザー Room の写真

TNK様

アドバイスありがとうございます。

小生はデータベースに詳しくないためこのような質問になってしまいました。
BufferPoolにすべてのデータを格納するわけではないということ認識しました。

調べてみると、至極当然の量のデータが、history_uint.ibdにたまっており
他のデータはまだまだ少量で、history_uintばかりがBufferPoolを
食いつぶしていると考えてしまいました。

あと利用しているZabbixのバージョンは、2.2.1を使用しており
このデータ量に対してのレスポンスには満足しておりますので
問題は発生していないと思います。

ご教授いただき、ありがとうございます。
今後ともよろしくお願い致します。