안녕하세요 여러분, 문제가 있어 도움을 요청하고 싶습니다.
이제 다음 구조의 비즈니스 테이블이 생겼습니다
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_dt
htl_cd
varchar(20) DEFAULT NULL COMMENT 'hotel number',para_typ< /code code> 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 '픽업일',
live_dt
varchar(30) DEFAULT NULL,occ
float DEFAULT NULL COMMENT '대여 객실 수',
rev < /code> 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_dt
) BTREE 사용) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='픽업 속도표';
🎜이제 동시에 명령문을 실행하는 두 개의 스레드가 있습니다. 🎜스레드 1은 대체 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', '2017', '7.0', '3160.40', '2017-05-29 07:31:27');🎜제출하지 마세요🎜
🎜스레드 2는 대체 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');🎜
🎜스레드 2가 잠금을 기다리고 있는 것으로 나타났습니다. 🎜
🎜자물쇠는 왜 있는 걸까요? 감사해요! 🎜
교착 상태가 발생한 것이 확실합니까? 충돌이 없는 것은 당연합니다. 이 고유 인덱스는 충돌하지 않습니다. 이 테이블에는 기본 키가 없습니다. 기본 키를 추가하세요.
innodb의 기본 격리 수준에서는 고유 인덱스를 대체합니다. 이론적으로 행 잠금은 이러한 작업만 수행하면 안 됩니다. 5.7에서도 이런 종류의 거래 잠금에 대한 업데이트를 본 적이 없습니다