1

現在、選択クエリで一時テーブルを使用して実行を高速化しています。クエリを実行するたびに作成されます。

私の現在の状況では、テーブルは 1 日に 1 回だけ新しいデータで更新されるので、MySQL のステートメントを使用する代わりに、永続的なテーブルを作成することを考えてCREATE TEMPORARY TABLEました。 1日後に再現。そして、メイン テーブルの更新が完了した直後に、一時データでいっぱいにすることができます。

それとも、InnoDB's data buffer一時テーブル自体のデータをキャッシュするほどスマートになるでしょうか?

または、一時テーブルをキャッシュする別の方法はありますか?

サーバーの負荷を軽減するために、AJAX を使用してロードされたデータと共に適切なキャッシュ ヘッダーも送信しています。AJAX クエリは、mysql に送信される読み取り要求の約 70% を占めています。

私が考えているのは、ディスクスペースの単なる無駄であり、テーブルはこのように使用されることを意図したものではありませんか、それとも私の状況にとって本当に素晴らしいアイデアですか?

4

2 に答える 2

2

私は最近、CREATE TEMPORARY TABLE が継続的な再利用のためにかなりのコストがかかるという同様の問題に遭遇しました。Barranka が説明している解決策も使用しました (一度作成し、終了時または再利用する前に切り捨てます)。

パフォーマンスをさらに向上させるために、RAM ディスク (ramfs) 上に作成された InnoDB テーブルを使用しました。これにより、ほとんどの IO コストで InnoDB ストレージ エンジンのすべての利点が得られます。これは、Oracle のサポートによると、レガシー アプリケーションでのみ使用可能であり、しばらくの間改善または拡張されていない MEMORY ストレージ エンジンを使用するよりも優れたソリューションです。

于 2014-03-30T23:42:10.730 に答える