2

場合によっては、日付による MySQL パーティショニングを使用してデータを保存し、X 日間の情報を保持し、毎日、自動プロセスが先にパーティションを作成し、古いパーティションを削除します (ここではアーカイブが行われていないことに注意してください。削除するだけです)。また、アクセスをさらに最適化するために、データは何らかのハッシュによって 40 のパーティションにサブパーティション化されます。

毎日の「alter table drop partition」クエリが実行されると、DB のパフォーマンスが著しく低下し、この DB でリレーしているアプリケーションの接続が切断されたり、1 秒あたりのリクエスト数が減少したりします。

InnoDB を使用してこの特定のアプリ用に MySQL 5.5.17 を実行しており、ドロップされるこれらの各パーティションには数百万のレコード (おそらく 1,000 万を超える) があります。パーティションあたりのサイズは平均 4.5GB です。

パーティションのドロップ時にそのボックスで集中的な IO が発生していないので、それとは関係がないとしか思えません。ただし、CPU 負荷の平均は、通常の 0.5 からその時間帯に約 8 ~ 10 に上昇します。これは数分間続きます。

パーティションの削除は、簡単な論理的な削除ではないでしょうか? 何か間違ったことをしている可能性はありますか、それとも何らかの形で微調整できるのでしょうか、それともこれは予想されることですか.

乾杯

4

1 に答える 1

0

これは古い質問だと思いますが、答えがないので、試してみます。

ファイルシステムが ext3 の場合、ファイルの削除には時間がかかることがあります。XFS と ext4 ははるかに高速になります。

MySQL の観点から物事を高速化するためにできるトリックは、パーティションのファイルへのハード リンク (シンボリック リンクではない) を作成することです。DROP PARTITION は、ファイルの参照カウントを単純にデクリメントします。これはほぼ瞬時です。ファイルへのリンクを削除できます。これにはまだ時間がかかりますが、MySQL には表示されません。

于 2012-11-20T01:43:04.477 に答える