1

1 日あたり約 2,000 万のエントリが挿入されている (制約のないブラインド挿入) テーブルがあります。2 つの外部キーがあり、そのうちの 1 つは、約 1,000 万のエントリを持つテーブルへの参照 ID です。

このデータはもう必要ないので、このテーブルの 1 か月以上前のデータをすべて削除する予定です。しかし、問題は、膨大な数の挿入が発生しているため、削除を開始すると、テーブルがロックされ、挿入がブロックされることです。

月に基づいてテーブルでパーティショニングを使用できるかどうかを知りたかったのです。このようにして、2か月以上前のすべてのデータを削除しようとすると、このデータは別のパーティションにあり、挿入は別のパーティションで行われ、削除ロックが読み取りロックをブロックしないことを望んでいました.

これが可能かどうか教えてください。私はDBの使用にかなり慣れていないので、私の考えに問題がある場合はお知らせください。

4

2 に答える 2

1

MySQLドキュメントから

InnoDBおよびBDBテーブルの場合、MySQLは、LOCKTABLESを使用してテーブルを明示的にロックする場合にのみテーブルロックを使用します。これらのストレージエンジンの場合、InnoDBは自動行レベルのロックを使用し、BDBはページレベルのロックを使用してトランザクションを確実に分離するため、LOCKTABLESの使用は一切避けてください。

問題があるかどうかはわかりません。これをテストしてロックの問題を確認しましたか、それとも今すぐ理論化していますか?

于 2012-06-13T18:07:31.243 に答える
0

MySQL には、バージョン 5.1 の時点でパーティショニングがあります。

このクエリを実行して、MySQL のバージョンがパーティショニングをサポートしているかどうかを確認できます。

SHOW VARIABLES LIKE 'have_partitioning';

次に、マニュアルを読んで使用方法を学ぶことができます。

http://dev.mysql.com/doc/refman/5.5/en/partitioning.html

于 2012-06-13T18:16:46.387 に答える