0

列が TEXT 型のテーブルが多数あります。一部のテーブルは大きく、サービスは高負荷です。InnoDB のすべてのテーブル。

TEXT タイプのフィールドがある場合、SQL クエリが tmp テーブルを作成すると、MyISAM タイプのディスク上にテーブルが作成されます。ディスク I/O 操作を回避するために、MySQL 一時ディレクトリ (tmpdir) がメモリ (tmpfs) にマウントされます。

1) MyISAM tmpfs とメモリのどちらが高速ですか? 大きな違いはありますか?

2) MyISAM が一時テーブルに使用されている場合、MyISAM テーブルにのみ必要なバッファを構成する必要がありますか? read_buffer_size read_rnd_buffer_size? これらの MyISAM 構成は、パフォーマンスにまったく影響を与えますか? (Myisam_sort_buffe_size, key_buffer_size)

TEXT を VARCHAR に変更したい。

4

1 に答える 1

0

一般的に、あなたが提起した問題はすべて無視するのが最善です。

  • に列がSELECT 含まれる場合、MEMORY ではなく MyISAM を使用する必要があります。つまり、 、、または「大きな」列に触れなければ、 MyISAM を使用する必要はほとんどありませんTEXTTEXTBLOBVAR*
  • クエリを見てみましょう。たぶん、tmp テーブルを避けることができます!
  • MyISAM tmp テーブルは、さまざまなキャッシングの問題に基づいて、実用的であればほとんど (完全に?) RAM に残ります。
  • tmp テーブルの場合、MEMORY はほとんどの場合 MyISAM より高速です。
  • RAM ディスクを使用していて、tmp テーブルが大きすぎると、クエリがクラッシュします。
  • RAM ディスクを使用すると、他のもの (特に InnoDB の buffer_pool) から RAM を盗むことになり、他のすべてが遅くなります!
  • TEXT から VARCHAR への変更は、255 以上が必要な場合は機能しません (または 512 ですか?正確なカットオフはわかりません)。
  • あなたが言及した設定は、このユースケースには関係ありません。
于 2016-10-07T18:27:02.120 に答える