Bonjour à tous, j'ai un problème et je souhaite vous demander de l'aide.
J'ai maintenant une table d'affaires avec la structure suivante
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) COMMENTAIRE NULL PAR DÉFAUT 'type de résumé',
para_cd
varchar(100) CHARACTER SET utf8 COLLATE utf8_bin COMMENTAIRE NULL PAR DÉFAUT 'code résumé',sub_typ
int (11) COMMENTAIRE NULL PAR DÉFAUT 'sous-type',sub_cd
varchar(100) CHARACTER SET utf8 COLLATE utf8_bin COMMENTAIRE NULL PAR DÉFAUT 'code de sous-type',pickup_day
int(11 ) ) COMMENTAIRE NULL PAR DÉFAUT 'Jour de ramassage',
live_dt
varchar(30) NULL PAR DÉFAUT,occ
float COMMENTAIRE NULL PAR DÉFAUT 'Nombre de chambres à louer',
rev< /code> float COMMENTAIRE NULL PAR DÉFAUT 'Revenus des frais de chambre',update_dt
datetime COMMENTAIRE PAR DÉFAUT CURRENT_TIMESTAMP 'Heure de mise à jour',
CLÉ UNIQUE 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='Tableau des rythmes de ramassage';
🎜Maintenant, deux threads exécutent des instructions en même temps, 🎜Le thread 1 exécute le remplacement 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');🎜Ne pas soumettre🎜
🎜Thread 2 exécute le remplacement INTO rms_pickup_step_agg (htl_cd,para_typ,para_cd,sub_typ,sub_cd,pickup_day,live_dt,occ,rev,update_dt) VALEURS ('101336', '0', '0', '3', 'NC', '14', '2016', '7.0', '3160.40', '2017-05-29 07:31:27');🎜
🎜Il a été constaté que le fil 2 attendait le verrou. 🎜
🎜Pourquoi y a-t-il un verrou ? Merci! 🎜
Êtes-vous sûr qu'il y a une impasse ? Il va de soi qu'il n'y a pas de conflit. Cet index unique n'est pas en conflit. Cette table n'a pas de clé primaire. Veuillez ajouter une clé primaire.
Sous le niveau d'isolement par défaut d'innodb, vous remplacez un index unique. En théorie, les verrous de ligne ne devraient pas bloquer. Êtes-vous sûr de n'avoir que ces opérations ? Je n’ai pas non plus vu de mises à jour de ce type de verrouillage de transaction dans la version 5.7