1

考虑 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 可以用另一个名称替换该行吗?

4

1 回答 1

1

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

于 2014-03-18T03:22:36.623 回答