{ Key:
tablePrefix{tableID}_indexPrefixSep{indexID}_
indexedColumnsValue, Value: rowID }
o
o
{ Key:
tablePrefix{tableID}_indexPrefixSep{indexID}_
indexedColumnsValue_rowID, Value: null }
o
理解了上面,其实分布式事务就是对这些 KEY 进行加锁: 一个是对
主键
进行加
锁,一个是对
唯一索引
进行加锁。
对于普通的索引来说:
(
tablePrefix{tableID}_indexPrefixSep{indexID}_indexedColumnsValue_row
ID
)
由于分布式事务会对 rowID 主键进行加锁,因此普通索引的 KEY 实际上受到了
rowID
这个主键上面锁的保护,不需要加锁。
测试过程中,建表语句如下:
CREATE TABLE `MANAGERS_UNIQUE` (
`MANAGER_ID` int(11) NOT NULL,
`FIRST_NAME` varchar(45) NOT NULL,
`LAST_NAME` varchar(45) NOT NULL,
`LEVER` int(11) DEFAULT NULL,
PRIMARY KEY (`MANAGER_ID`)
UNIQUE KEY `FIRST` (`FIRST_NAME`),
KEY `LEVEL` (`LEVEL`)
)
插入数据:
mysql> INSERT INTO MANAGERS_UNIQUE(MANAGER_ID,FIRST_NAME, LAST_NAME)
VALUES (14273,'Brad7','Craven7',7);
评论