WindowsがMySQLデータベースをキャッシュしないのはなぜですか?[閉まっている]


1

私は少し作業して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)を読み取ります。


これがどんな情報を追加するのかわかりませんが、大丈夫です。MySQLはオン、200 MBのテーブルファイルを読み取る前:prntscr.com/ekj75d、後:prntscr.com/ekj7k7 MySQLはオフ、前:prntscr.com/ekj807、後:prntscr.com/ekj84s キャッシュがMySQLの起動直後にドロップしないでください。対応するテーブルにアクセスした後、たとえばSQL-Frontで選択してドロップします。1つのテーブルにアクセス-200 MBマイナス、別のテーブル-マイナス150 MB(両方が以前にキャッシュされた場合)
ミハイルM

SELECT @@INNODB_BUFFER_POOL_SIZE;これはキャッシングに最適な場所であり、OSではなく、常にカスタマイズする必要がある数少ない調整可能なパラメーターの1つです。あなたの設定は?
マイケル-sqlbot

@ Michael-sqlbot、134 217728。最近増加しました。MySQLを「オンザフライで設定」することを望みます-したがって、Windowsがいくつかのハードリクエストを実行し、SQLを使用しない場合、MySQLサービスは多くのメモリを占有しません
Mikhail M

回答:


0

私は非常に良い解決策を見つけました:最新のMySQL 5.7にアップグレードし、プールサイズをその場で変更します:

set global innodb_buffer_pool_size = 512 * 1024 * 1024;

プールサイズが十分に大きい場合、例えば大量挿入の場合、パフォーマンスの改善は非常に大きくなります。

アップグレード中に多くの問題が発生しました(MySQL 5.7は5.5のデータベースを受け入れませんでした。mysql_upgradeは起動せず、MySQL Frontがクラッシュします)。ただし、場合によっては5.7のパフォーマンスも向上するようです(プールサイズが同じ場合)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.