Heim  >  Fragen und Antworten  >  Hauptteil

MySQL Deadlock ersetzen

Hallo zusammen, ich habe ein Problem und möchte euch um Hilfe bitten.
Ich habe jetzt eine Geschäftstabelle mit der folgenden Struktur
CREATE TABLE rms_pickup_step_agg (rms_pickup_step_agg (
htl_cd varchar(20) DEFAULT NULL COMMENT '酒店编号',
para_typ int(11) DEFAULT NULL COMMENT '汇总类型',
para_cd varchar(100) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL COMMENT '汇总代码',
sub_typ int(11) DEFAULT NULL COMMENT '子类型',
sub_cd varchar(100) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL COMMENT '子类型代码',
pickup_day int(11) DEFAULT NULL COMMENT 'Pickup day',
live_dt varchar(30) DEFAULT NULL,
occ float DEFAULT NULL COMMENT '出租房数',
rev float DEFAULT NULL COMMENT '房费收入',
update_dt datetime DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
UNIQUE KEY idx01_rms_pickup_step_agg (htl_cd,para_typ,para_cd,sub_typ,sub_cd,pickup_day,live_dthtl_cd varchar(20) DEFAULT NULL COMMENT 'hotel number',
para_typ< /code code> int(11) DEFAULT NULL COMMENT 'summary type',

para_cd varchar(100) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL COMMENT 'summary code',

sub_typ int (11) DEFAULT NULL COMMENT 'subtype',
sub_cd varchar(100) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL COMMENT 'subtype code',
pickup_day int(11 ) ) DEFAULT NULL COMMENT 'Abholtag',

live_dt varchar(30) DEFAULT NULL,

occ float DEFAULT NULL COMMENT 'Anzahl der Mieträume',

rev< /code> float DEFAULT NULL COMMENT „Zimmergebühreneinnahmen“,

update_dt datetime DEFAULT CURRENT_TIMESTAMP COMMENT „Update time“,

UNIQUE KEY idx01_rms_pickup_step_agg (htl_cd< /code >,para_typ,para_cd,sub_typ,sub_cd,pickup_day,< code> live_dt) USING BTREE

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Pickup Pace Table';

🎜Jetzt gibt es zwei Threads, die gleichzeitig Anweisungen ausführen. 🎜Thread 1 führt replace INTO rms_pickup_step_agg (htl_cd,para_typ,para_cd,sub_typ,sub_cd,pickup_day,live_dt,occ,rev,update_dt) VALUES ('101336', '0') aus. , '0', '3', 'NC', '14', '2017', '7.0', '3160.40', '2017-05-29 07:31:27');🎜Nicht einreichen🎜 🎜Thread 2 führt replace INTO rms_pickup_step_agg (htl_cd,para_typ,para_cd,sub_typ,sub_cd,pickup_day,live_dt,occ,rev,update_dt) VALUES ('101336', '0', '0', '3', 'NC', '14', '2016', '7.0', '3160.40', '2017-05-29 07:31:27');🎜 🎜Es wurde festgestellt, dass Thread 2 auf die Sperre wartete. 🎜 🎜Warum gibt es eine Sperre? Danke! 🎜
習慣沉默習慣沉默2691 Tage vor662

Antworte allen(2)Ich werde antworten

  • 天蓬老师

    天蓬老师2017-06-06 09:54:12

    你确定是出现死锁了吗,按道理说不会的吧,这个唯一索引不冲突。这个表没有主键,你加一个主键吧。

    Antwort
    0
  • 为情所困

    为情所困2017-06-06 09:54:12

    innodb默认隔离级别下,唯一索引,你又是replace,理论上只是行锁不应该出现阻塞的,确定你的操作只有这些吗? 5.7也没看到有这种事务锁的更新哪

    Antwort
    0
  • StornierenAntwort