考虑MariaDB Galera集群中的以下表结构:
CREATE TABLE test (
`name` varchar(100) NOT NULL,
`master` tinyint(1) DEFAULT NULL,
PRIMARY KEY (`name`),
UNIQUE KEY `master` (`master`)
) ENGINE=InnoDB;
如果这是在具有多个节点的群集上运行,那么我在并行执行:
INSERT INTO test (name, master) VALUES('node1', 1);
并在另一个节点上
INSERT INTO test (name, master) VALUES('node2', 1);
我可以相信一个查询不能替换另一个吗?
如果两个查询完全同时运行,其中一个查询是否仍会返回错误?
如果查询没有返回错误,我可以相信没有其他INSERT可以用其他名称替换该行吗?
答案 0 :(得分:1)
将强制执行唯一约束。 Galera使用乐观锁定,我不确定第二个到达集群的查询是返回正常的重复条目错误还是关于事务冲突的不同错误,但只会插入一个。