私は2つのプロセスで使用されるテーブルを持っています。最適なテーブルデザインプリミティブキーとvarchar値を持つmysql
の表は、次のようになります。
valueID (INT PRIMARY AUTO INCREMENT)
value (VARCHAR 100 UNIQUE)
プロセス1クエリの
SELECT valueID FROM table WHERE value = '$val'
などは二プロセス2あたり> 250の割合で行い、反対します:>の割合で
SELECT value FROM table WHERE valueID = '$valid'
を400秒/秒
この表は大きくヒットし、かなり大きい> 50,000万行以上の高速で成長しています。 現在、テーブルのサイズが大きくなっているため、パフォーマンスが低下しています。私はそれを最適化したい。パーティショニングを考えると、他のパーティショニングはパフォーマンスにマイナスの影響を与えます。 現在、MyISAMでもInnoDBでも可能です。
この表の最適な設定は何ですか?
のような範囲の速度をdevideことは、次のマルチコラムカバーするインデックスを持っています:、( 'valueIDを'(値、valueIDを) 'と値) '? –
設定パラメータで何かしたことはありますか?すべての構成が等しく作成されるわけではありません。 –
プライマリインデックスとユニークインデックスを使用します。結合されたインデックスを使ったテストではすべての処理が遅くなりました(両方のインデックスが存在していても、組み合わせではなくプライマリが使用されます) – Martin