sql >> データベース >  >> RDS >> Mysql

mysqlは最初のクエリで遅く、次に関連するクエリで速くなります

    innodbデータファイルのページは、innodbバッファープールにキャッシュされます。これはあなたが期待することです。優れたハードドライブでも、ファイルの読み取りは遅くなります。特に、データベースが主に認識するランダム読み取りは遅くなります。

    最初のクエリが、大量のページをバッファプールにプルするある種のテーブルスキャンを実行している可能性があります。その後、それらへのアクセスは高速です。または同様のもの。

    これは私が期待することです。

    理想的には、すべてのテーブルに同じエンジンを使用します(例外:システムテーブル、一時テーブル(おそらく)、および非常に小さいテーブルまたは短命のテーブル)。これを行わない場合、彼らはラムのために戦わなければなりません。

    すべてのテーブルがinnodbであると仮定して、バッファープールがサーバーの物理RAMの最大75%を使用するようにします(マシン上で他のタスクをあまり実行しないと仮定します)。

    そうすれば、データベースの約12GをRAMに収めることができるので、「ウォームアップ」されると、データベースの「最も使用されている」12GがRAMになり、アクセスが高速になります。

    mysqlの一部のユーザーは、再起動後に、別のマシンからコピーされたクエリをしばらくの間(これらはレプリケーションスレーブになります)、本番プールに追加するまで送信することにより、本番サーバーを「ウォームアップ」する傾向があります。これにより、キャッシュがコールドのときに見られる極端な速度低下を回避できます。たとえば、Youtubeはこれを行います(または少なくとも以前はGoogleが購入し、現在はGoogle-fuを使用している可能性があります)



    1. SELECT句とWHERE句でのストアド関数呼び出しの最適化

    2. Mysqlselectdistinct

    3. MariaDBで時間、分、秒を時間値から分離する4つの方法

    4. Scope_Identity()、Identity()、@@ Identity、およびIdent_Current()の違いは何ですか?