sql >> データベース >  >> RDS >> Mysql

MySQL:DELETEがINSERTよりもCPUを集中的に使用するのはなぜですか?

    少なくともInnoDBを使用すれば(そして、彼らがこれを理解してくれることを願っています)、外部キーがなくてもより多くの操作が可能になります。 。挿入物はおおよそこれです:

    1. 行を挿入
    2. バイナリログバッファにマークを付ける
    3. コミットをマーク

    削除は次のことを行います:

    1. 削除された行をマークします(挿入と同じヒットを取得します-ページが書き換えられます)
    2. バイナリログバッファにマークを付ける
    3. コミット済みのマーク
    4. 実際には行を削除します(挿入と同じヒットを取得します-ページが書き換えられます)
    5. パージスレッドは、バイナリログバッファ内の削除も追跡します。

    そのためには、挿入ではなく削除する作業が2倍になります。削除は、今後すべてのバージョンで削除済みとしてマークする必要があるため、これら2つの書き込みが必要ですが、削除できるのは、それを参照するトランザクションが残っていない場合のみです。 InnoDBは完全なブロックのみをディスクに書き込むため、ブロックの変更ペナルティは一定です。



    1. PostgreSQLで短い日の名前を取得する

    2. 別の列から計算された列?

    3. 非同期スレーブからMySQLGaleraクラスターを回復する方法

    4. 挿入または更新と同じテーブルから選択します