2014-03-06 58 views
1

考虑在MariaDB的加莱拉集群如下表结构MariaDB的加莱拉集群:如果这几个节点的集群上运行我能相信唯一的密钥

CREATE TABLE test (
    `name` varchar(100) NOT NULL, 
    `master` tinyint(1) DEFAULT NULL, 
    PRIMARY KEY (`name`), 
    UNIQUE KEY `master` (`master`) 
) ENGINE=InnoDB; 

,而我则在parallell做:

INSERT INTO test (name, master) VALUES('node1', 1); 

与另一个节点

INSERT INTO test (name, master) VALUES('node2', 1); 

我可以相信,一个查询不会取代其他的?

如果两个查询完全同时运行,它们中的一个仍会返回错误?

如果查询不返回错误,我可以不信任其他INSERT可以用另一个名称替换该行吗?

回答

1

将执行唯一约束。 Galera使用乐观锁定,我不确定查询是否返回到群集第二个将返回正常重复条目错误或有关事务冲突的其他错误,但只会插入一个。

+0

谢谢! “乐观锁定”是我调查此问题所需的关键,并找到有关此问题的良好资源。 – Lilleman