mysql一主一从读写分离真的可以提高性能吗?
发布日期:2021-06-30 17:19:12 浏览次数:2 分类:技术文章

本文共 801 字,大约阅读时间需要 2 分钟。

由 原理可知,所谓主从复制,按惯用的基于语句复制模式,是从库将主库的日志里的各种SQL语句,在从库重新执行了一遍。

这就引出一个问题,主从复制、读写分离,真的可以提高性能吗?

如果一台机上的关系型数据库,既要写入数据,又要提供读取服务,那么在各种锁机制之下,可以想见,效率一定不高。现在读写分离,主机写,从机读,听上去真不错。——但是,仔细一想,就觉得不对。主机只有写入,并无读取,当然压力较小;但从机一方面供外部读取,一方面又要同步,同步机制仍然是执行SQL语句,这不是跟原来一样了吗?!

如果是一主多从,多台从机,可以利用负载均衡或路由算法,减轻压力,但如果是只有一台从机,那么从机的压力岂不是跟原来一样?

唯一得到的好处,是外部写入数据速度会快一些,因为外部只写入主库,没有读取。

不过,按照常理分析,主从复制、读写分离机制能够盛行,肯定是有比较明显的好处的,就算是一主一从,性能也一定不会像我想的那样没有提高。

其原因在于,系统提供的主从复制机制,和我们单纯通过SQL语句来更新还是差别很大的。一方面不需要做sql解析和复杂的写查询,另一方面,从机重放SQL的时候,只要回放到内存中就可以了,所以速度要快上许多。实际测试可以发现,实际上数据库至少一大半的cpu是消耗到sql解析处理的。SQL语句执行的性能取决于3部分:

1)解析SQL时间
2)执行SQL时间
3)执行结果获取时间


20210325

我忽然想到,数据库分为主从俩库,一种写,一种读,还有个好处就是可以加强优化和编程的针对性。比如说,用mysql,主库用innodb存储模式,从库是myisam,读起来会快些。编程方面,传说中有CQRS模式,命令查询职责分离,就是操作SQL的语句,不是CRUD了,而是分为命令和查询两大块,命令增删改,查询只负责查找,它们分开以后,就可以在代码方面加以针对性的优化。具体咋优化,没用过,不清楚。

转载地址:https://leftfist.blog.csdn.net/article/details/115018539 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:数字货币
下一篇:持续集成与DevOps

发表评论

最新留言

表示我来过!
[***.240.166.169]2024年04月20日 15时42分38秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章