データベースにlargeish(InnoDB)テーブルがあります。明らかに、ユーザーはJOINを使用してSELECTを作成することができ、その結果、一時的な大きな(したがってディスク上の)表が作成されます。時には、それらは非常に大きく、ディスクスペースを使い果たし、あらゆる種類の奇妙な問題につながります。一時テーブルのサイズを制限するにはどうすればよいですか?
ディスク上のテーブルのテンポラリテーブルの最大サイズをに制限する方法はありますか?テーブルがディスクを過度に増殖させないようにするには、を使用します。 tmp_table_sizeは、名前にもかかわらず、メモリー内の表にのみ適用されます。 documentationに関連するものは見つかりませんでした。
はい、*私はストレージが安いことを認識しており、最適な解決策は「クエリを防止する」ことです。しかし、それらは私が現在持っているオプションにはありません。 – Piskvor
いくつかの "巨大な"クエリは、大きなtmpテーブルを避けるために再定式化できます。クエリを変更できますか?もしそうなら、関連テーブルごとに 'SELECT ...'、 'EXPLAIN SELECT ...'と 'SHOW CREATE TABLE'を指定してください。 tmpテーブルを縮小すると_probably_スピードアップします。 –
クエリを最適化するためのガイドライン(https://dev.mysql.com/doc/refman/5.7/en/internal-temporary-tables.html)を以下に示します。 –