MySQL DB全体がメモリにロードされていることを確認するにはどうすればよいですか?
質問
mysqlサーバーを実行しています。私はそれがもっと速くなると聞いたので、どういうわけかDB全体がRAMにロードされることを確認したいと思います。
これは本当ですか?そしてどのようにそれを証明するのですか?
解決
InnoDBを使用している場合は、innodb_buffer_pool_sizeを少なくともデータとインデックスと同じ大きさに設定できます。その後、データにアクセスすると、メモリにキャッシュされ、それ以降のすべてのアクセスはメモリ経由で行われます。
データを事前にキャッシュしたい場合は、いくつかの一般的なクエリ、または全テーブル/インデックススキャンを実行して、すべてのデータをメモリに強制的に読み込むことができます。
mysqldにはinit-fileオプションがあり、起動時にサーバーにいくつかのコマンドを自動的に実行させることができます。ここには、実行する事前キャッシュクエリを含めることができます。
メモリを使い果たしたくないので、innodb_buffer_pool_sizeの設定が大きすぎることに注意してください。
他のヒント
まあ、1つのオプションはramdriveを使用することです。それは永続的ではありません。
http://www.linuxforums .org / forum / misc / 670-how-create-ram-drive-linux.html
(完全を期すために)を使用できますテーブルエンジンとしてのHEAP 。ただし、サーバーを再起動すると、HEAPテーブルに入れたデータはすべて失われることに注意してください。
RAM内のテーブルは非常に高速です。
既存のテーブルを変更するには、ストレージエンジンを変更します。ただし、サーバーの再起動後にデータを使用する場合は、バックアップを作成してください。
ALTER TABLE test ENGINE = MEMORY;
MEMORYテーブルにはBLOB列またはTEXT列を含めることはできず、データとインデックスのサイズは使用可能なメモリに制限されることに注意してください。