私は少し作業してMySQLを実験していますが、データベースのサイズは数GBです。そして、興味深いことがわかりました。MySQLが動作するとき、Windowsは.ibdファイルデータベースをキャッシュしません。たとえば、クエリを実行し、Windowsがドライブからアクティブに読み取る方法を確認します。FAR Managerの対応するファイルをnulに同時に数回コピーし、ドライブから読み取るたびにコピーします。
Windows 7のリソースモニターで、ファイルの読み取り中にキャッシュメモリがどのように増加し、処理が完了するとすぐに元に戻っていることがわかります。時々、あるFARでのコピーの一時停止が他のFARの読み取りにどのように役立つかを見ました:)しかし、これは必須ではありません。MySQLサービスがオフになっている場合、キャッシュは正常に機能します。たとえば、テーブルの.ibdファイルが200 MBで1 GBの空きRAMまたは少なくともキャッシュRAMがある場合、1回または2回の読み取り後にキャッシュされます。
なぜこれが起こり、これを修正することは可能ですか?
これはすべてと開発のための私のノートブックであるため、MySQLに多くのメモリを割り当てたくありません(おそらく200 MBは大丈夫ですが、500は多すぎます)。Windows 7 x64、Core i5、8 GB RAM、ハイブリッドSSHD(1 TB HDD + 8 GBフラッシュ)、約8 GB ReadyBoostキャッシュ、InnoDBテーブル(デフォルト、私はMySQLの専門家ではありません)。ReadyBoostは大いに役立つと思います。システムはReadyBoost.sfcacheファイルに大量(たとえば500 KB / s)を書き込み、大量(1-5 MB / s)を読み取ります。
SELECT @@INNODB_BUFFER_POOL_SIZE;
。 これはキャッシングに最適な場所であり、OSではなく、常にカスタマイズする必要がある数少ない調整可能なパラメーターの1つです。あなたの設定は?