首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对于具有连续读取和写入的单个表,与Galera Active-Active相关的风险是什么?

对于具有连续读取和写入的单个表,与Galera Active-Active相关的风险是什么?
EN

Stack Overflow用户
提问于 2018-11-05 15:21:15
回答 1查看 36关注 0票数 1

我正在考虑使用具有五个MySQL节点的Galera Active-Active。节点位于负载均衡器之后,应用程序可以写入任何节点。

我的应用程序每秒大约读/写/更新同一个表1000次。写入通常是100k左右的数据。

典型的DB逻辑如下所示:

(1)执行select操作,查看数据库中是否存在数据

(2)如果不是,则插入数据

(3)更多处理

(4)更新部分数据

select (1)每天大约会发生7500万次。插入(2)和更新(4)每天大约有100万次。

答:我认为Galera将不断地锁定表,从而导致写入和更新速度变慢,这是正确的吗?

B.我认为节点之间的数据同步可能需要几秒钟或更长时间,因此存在select (1)报告数据尚未插入的风险,但实际上insert (2)已经完成,但只是还没有与所有节点同步?

EN

回答 1

Stack Overflow用户

发布于 2018-11-06 07:03:06

首先,要知道(1)只能是建议的。也就是说,(1)可能会说“数据不存在”,但随后(2)会发现数据在那里。或者直到COMMIT才会发现

请在您的列表中添加任何START TRANSACTIONCOMMIT。同时,我将假设所有4个步骤都在一个事务中,尽管我建议将(1)放在事务之外。

节点之间的距离(ping时间)有多远?如果它们位于同一建筑物中,则同步可能只需要几毫秒。(我之所以说“可能”,是因为每秒1000次操作可能会有一定的压力。)

我认为这可能是最好的:

代码语言:javascript
复制
(1) See if row exists -- 98% of the time, this will avoid doing the rest.
BEGIN;
(2), (3), (4);  -- check after each step; 1% of collisions will be caught here
COMMIT;  -- again check; still another 1% get caught here.

也就是说,放弃追求完美(一次测试就能达到100%)。取而代之的是,玩一个数字游戏,这样你通常会做最优的事情,但随后不会频繁地捕捉到奇怪的情况,从而不会明显影响性能。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53149916

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档