GreatSQL社区

搜索

[已解决] GreatSQL回放性能提升

759 6 2023-10-18 10:11
在“GreatSQL 社区月报 | 2022.12”(https://my.oschina.net/GreatSQL/blog/5948913)中,对于GreatSQL有如下描述:


尝试把 MySQL handle_slave_sql 单线程改造成 stage 架构,使回放能力得到了大幅提升

针对上述描述,有如下问题:

1. MySQL handle_slave_sql 函数在MySQL最新版本中已支持多线程。通过设置系统变量replica_parallel_workers(默认值为4)可以使replica SQL thread从自身fork出replica_parallel_workers个子线程作为worker。问题是:“MySQL handle_slave_sql 单线程”是否是行文错误?
2. 关于“stage 架构”描述不清。也许这里的“stage 架构”是指“staged event-driven architecture (SEDA)”?或者其他?问题是:什么是stage架构?以及GreatSQL是如何将 handle_slave_sql 改造成 stage架构的?
3. 如果“stage 架构”是指“staged event-driven architecture (SEDA)”,那么为何要使用SEDA而不使用其他更先进的技术?Cassandra在此issue(https://issues.apache.org/jira/browse/CASSANDRA-10989)中讨论了从SEDA迁移到thread per core architecture (TPC) 的原因。问题是:为何要使用SEDA而不使用其他更先进的技术?

谢谢。
全部回复(6)
yejr 2023-10-18 10:27:05
转自研发同学: handle_slave_sql还是单线程,瓶颈在于 handle_slave_sql里面的操作,具体执行回放工作的是handle_slave_worker。至于采用staged架构,是根据微软论文来做的。
jzyhywxz 2023-10-18 11:14:18
本帖最后由 jzyhywxz 于 2023-10-18 11:29 编辑
yejr 发表于 2023-10-18 10:27
转自研发同学: handle_slave_sql还是单线程,瓶颈在于 handle_slave_sql里面的操作,具体执行回放工作的是 ...

感谢!具体是哪篇微软论文可以发下title或链接吗?
wangbin579 2023-10-18 18:33:58
jzyhywxz 发表于 2023-10-18 11:14
感谢!具体是哪篇微软论文可以发下title或链接吗?

里面的很多思路来自于Closing the Parallelism Gap in Database Replication。
不过目前开源版本还没有合并进来。
wangbin579 2023-10-18 18:35:28
本质上handle slave sql只有单个线程在工作,是回放的主要瓶颈,里面的解析部分工作量巨大,一个线程是远远不够的
jzyhywxz 2023-10-19 10:19:33
wangbin579 发表于 2023-10-18 18:33
里面的很多思路来自于Closing the Parallelism Gap in Database Replication。
不过目前开源版本还没有合 ...

非常感谢!我来拜读一下~
jzyhywxz 2023-10-19 10:23:08
wangbin579 发表于 2023-10-18 18:35
本质上handle slave sql只有单个线程在工作,是回放的主要瓶颈,里面的解析部分工作量巨大,一个线程是远远 ...

非常感谢!我看了下MySQL官方的WorkLog,里面有些对slave coordinator性能瓶颈的描述,包括若当前没有空闲的slave worker则slave coordinator等待,等等。具体有哪些瓶颈最好能总结出来列个表,这样可以逐个对照着讨论。
jzyhywxz

1

主题

0

博客

7

贡献

新手上路

Rank: 1

积分
11

合作电话:010-64087828

社区邮箱:greatsql@greatdb.com

社区公众号
社区小助手
QQ群
GMT+8, 2024-11-23 20:49 , Processed in 0.024825 second(s), 24 queries , Redis On.
快速回复 返回顶部 返回列表