Mysqlのロックと自己増加プライマリ・キー

835 ワード

Mysqlの一般的なコマンド
//        

//            kill tread_id        
select * from information_schema.innodb_trx  \G
select * from information_schema.innodb_locks \G
select * from information_schema.innodb_lock_waits \G

Mysqlの自己増加プライマリ・キー
Mysqlでこの自増主キーを維持する値がメモリに格納されていることが重要です.つまり、電源が切れたり、機械が再起動したりすると、このメンテナンス自増主キーの値が消えてしまいます.このときMysqlはどのようにテーブルの自増主キーを維持しますか?答えはMysqlが新しいデータを挿入するとき、このプライマリ・キー列を巡って最大値を取り出し、挿入操作を追加します.この場合、実際には問題が発生します.まず、既存のデータベースAとBをシミュレートします.AライブラリはデータをBライブラリに移行する必要があります.現在、Aライブラリにはフィールドidとnameがあります.ここで、idは自己増加プライマリ・キーで、データ(1、「ll」)、(2、「yy」)、(3、「cc」)の3つのデータがあります.3つ目のデータをデータベースBに移行し、突然電源が切れ、マシンが再起動します.Bライブラリには(3,「cc」)データが存在するが,Aライブラリにおいて自己増加プライマリ・キーを維持しているのは電源が切れてメモリから消失しているため,再びデータを挿入する場合,プライマリ・キーはテーブル全体を遍歴して最大値を1つ加算する必要があり,新たに挿入したデータのプライマリ・キーが3となり,この新しいデータを再移行する際にプライマリ・キー競合が発生する.