web-dev-qa-db-ja.com

MyISAMテーブルとInnoDBテーブルの結合パフォーマンス

MysqlサーバーでいくつかのテーブルをMyISAMからInnoDBに変換することを考えています。これらのテーブルには多くの書き込み要求が来るので、テーブルは確かに変更の恩恵を受けますが、同時にかなり多くの読み取り要求もあります。

ただし、多くの場合、ほとんど書き込みがないテーブルと結合されます。 MyISAMテーブルとInnoDBテーブルを結合するときにパフォーマンスが低下しますか、それともすべてが正常に機能する必要がありますか?

2番目の質問:夜間のバックアップ中に、アーカイブの目的でInnoDBテーブルからMyISAMテーブルにデータをコピーしています。これらのバックアップでは、多くの書き込み要求が発生しますが、これらのアーカイブテーブルからの読み取りはほとんどありません。これらのテーブルもInnoDBを使用することでメリットがありますか、それともスペースとRAMの無駄ですか?

2
j0nes

テーブルをMyISAMからInnoDBに変換すると、同時書き込みとアトミックロックに非常に役立ちます。

InnoDBテーブルとMyISAMテーブルの組み合わせは、それらの結合が完全なMyISAMテーブルをロックしようとしない限り(ほとんどありません)、結合のパフォーマンスに影響を与えることはありません。EXPLAINを実行すると、常にクエリの診断に役立ちます。

2番目の質問については、これらはバックアップテーブルであり、ほとんど使用されていないため、MyISAMであることを利用して、可能な限り書き込みパフォーマンスを向上させます。

これらのパラメーターを覚えておいてくださいInnoDB:同時書き込み、きめ細かいロックは素晴らしいが、シリアル書き込みはあまり得意ではなく、より多くのメモリを使用しますMyISAM:非常に軽く、シリアル書き込みは素晴らしい、そうではありません同時書き込みが得意で、メモリフットプリントが小さい

5
lynxman