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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
表示我来过!
[***.240.166.169]2024年04月20日 15时42分38秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
docker安装oracle(win10)
2019-04-30
Cloudera Quickstart & HUE
2019-04-30
CDH
2019-04-30
行为树 BT
2019-04-30
Cassandra & CQL
2019-04-30
Oracle数据库
2019-04-30
Oracle数据库命令
2019-04-30
有限状态机FSM
2019-04-30
Win10 Docker
2019-04-30
Python绘制动画并保存为gif/mp4 (matplotlib)
2019-04-30
PRM概率路线图
2019-04-30
ROS(六)——订阅者Subscriber的编程实现(C++ & Python)
2019-04-30
ROS(七)——话题消息的定义与使用
2019-04-30
yolov3入门实战
2019-04-30
B树 & B+树
2019-04-30
Node-Red(一)——简介与安装
2019-04-30
representation learning 表示学习/表征学习
2019-04-30
Haar特征
2019-04-30
Python 之 histogram直方图
2019-04-30