1

My MysQLデータベースには複数のMyISAMテーブルが含まれており、各テーブルには数百万の行が含まれています。データベースに大きな挿入負荷があるため、そのライブデータベースでSELECTを発行できません。代わりに、クエリ用のデータベースのレプリカを作成し、それについて分析を行います。

分析のために、複数の並列クエリを発行する必要があります。クエリは独立しています(つまり、クエリの結果は結合されません)が、ほとんどの場合、同じテーブルで動作します。私の知る限り、MyISAMテーブル全体がクエリごとにロックされているため、並列の独立したクエリは遅くなります。理想的には、「NOLOCKING」をサポートするエンジンがいいと思います。MySQLにはそのようなエンジンがないと想定しているので、InnoDBを使用する必要がありますか?私はここで多くのものを逃しているかもしれません。ここで正しい道を提案してください。

ありがとう

4

2 に答える 2

1

MyISAM読み取りロックには互換性があるため、SELECTクエリは相互にロックしません。

レプリカデータベースに対する分析クエリが書き込みではなく、読み取りのみである場合は、を使用しても問題ありませんMyISAM

于 2010-04-21T15:17:40.243 に答える
1

MyISAMに固執して使用することができますINSERT DELAYED

クライアントがINSERTDELAYEDを使用すると、サーバーからすぐにOKになり、テーブルが他のスレッドで使用されていないときに行が挿入されるようにキューに入れられます。

INSERT DELAYEDを使用するもう1つの主な利点は、多くのクライアントからの挿入が一緒にバンドルされ、1つのブロックに書き込まれることです。これは、多くの個別の挿入を実行するよりもはるかに高速です。

于 2010-04-21T15:18:58.073 に答える