面试连环炮系列(二十八):数据库读写分离的目的是什么?「终于解决」

面试连环炮系列(二十八):数据库读写分离的目的是什么?「终于解决」数据库读写分离的目的是什么;读写分离会带来什么问题?如何解决;MySQL主从复制的原理清楚吗;读写分离具体怎么实施呢

面试连环炮系列(二十八):数据库读写分离的目的是什么?

1. 数据库读写分离的目的是什么?

通常业务系统是读多写少,读写分离是将对数据库的读写操作分散到不同的节点上,能够小幅提升写性能,大幅提升读性能。通常采用数据库一主多从的方式,主库可以读写,从库只读。

2. 读写分离会带来什么问题?如何解决?

主库和从库的数据存在延迟。比如写完主库之后,主库的数据同步到从库是需要时间的,这个时间差就导致了主库和从库的数据不一致性问题。解决办法是在不能忍受延迟的场景强制读主库。

3. MySQL主从复制的原理清楚吗?

  • 主库将数据库中数据的变化写入到 binlog
    从库连接主库。
  • 从库会创建一个I/O线程向主库请求更新的 binlog。
  • 主库会创建一个 binlog dump 线程来发送 binlog ,从库中的 I/O 线程负责接收。
  • 从库的 I/O 线程将接收的 binlog 写入到 relay log 中。
  • 从库的 SQL 线程读取 relay log 同步数据本地(也就是再执行一遍 SQL )。

4. 读写分离具体怎么实施呢?

常用组件有下面2个:

  • Sharding-JDBC:定位为轻量级Java框架,在Java的JDBC层提供的额外服务。它使用客户端直连数据库,以jar包形式提供服务,无需额外部署和依赖,可理解为增强版的JDBC驱动,完全兼容JDBC和各种ORM框架。
  • MyCat:实现了MySQL协议的服务器,前端用户可以把它看作是一个数据库代理,用MySQL客户端工具和命令行访问,而其后端可以用MySQL原生协议与多个MySQL服务器通信,也可以用JDBC协议与大多数主流数据库服务器通信,其核心功能是分库分表,配合数据库的主从模式还可实现读写分离。

参考(摘抄的文字版权属于原作者):

https://javaguide.cn/high-performance/read-and-write-separation-and-library-subtable.html
https://time.geekbang.org/column/article/77636
https://zhuanlan.zhihu.com/p/66245006
https://www.codingbrick.com/archives/546.html

原文地址:https://www.cnblogs.com/xiaoyangjia/archive/2022/03/29/16070541.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/5407.html

(0)
上一篇 2023-05-10
下一篇 2023-05-10

相关推荐

  • centOS7安装mysql8.0完美教程!!只要按照步骤,无脑操作,一次成功! – 技匠[通俗易懂]

    centOS7安装mysql8.0完美教程!!只要按照步骤,无脑操作,一次成功! – 技匠[通俗易懂]查看防火墙systemctl status firewalld重启防火墙systemctl start firewalld 1、mysql 首先关闭防火墙 systemctl stop fi

    2022-12-17
    148
  • Python中break的用法及实例

    Python中break的用法及实例在Python中,break是一个关键词,通常用在循环语句和switch语句中。简单来说,break语句可以提前终止循环语句的执行。它的作用是跳出当前循环,继续执行后面的代码。

    2024-02-09
    94
  • 使用plot函数进行数据可视化

    使用plot函数进行数据可视化在数据分析和数据建模中,数据的可视化是非常重要的环节,它能帮助我们更好地理解数据、找出数据的特点和规律、进行更准确的数据分析和决策。python中的matplotlib包中的plot函数是一个非常强大的数据可视化工具,它能够帮助我们进行各种各样的数据可视化操作,如散点图、折线图、柱状图、箱线图等等。

    2024-06-05
    57
  • 使用Python命令行解决问题

    使用Python命令行解决问题Python是一种高级编程语言,可用于多种用途,包括Web开发、数据科学、人工智能等。Python在解决各种问题时都能发挥巨大的作用,这也是它成为了越来越多开发者的首选语言之一。不仅如此,Python还可以通过命令行轻松处理和解决各种问题。在这篇文章中,我们将介绍在Python中使用命令行解决问题的方法。

    2024-01-01
    113
  • 5天,2W+字整理数据库实操指令,附练习题,再说数据库学不明白[亲测有效]

    5天,2W+字整理数据库实操指令,附练习题,再说数据库学不明白[亲测有效]朋友工作的原因,端午节也没闲着,陪这个祸害整理了一下数据库的sql指令,并且整理配套的习题进行练习使用,我正好也没啥事,疫情的原因啥也干不了,就陪他整理一波,顺便薅一波羊毛,嘿嘿嘿 不过,因为真的是…

    2023-03-16
    139
  • 使用Python和MongoDB创建数据库表

    使用Python和MongoDB创建数据库表MongoDB是当前最受欢迎的NoSQL数据库之一。Python是一种功能强大的编程语言,因其易学易用而受到广泛欢迎。在本文中,我们将讨论如何使用Python和MongoDB创建数据库表。

    2024-08-19
    27
  • Python修改全局变量实现标题

    Python修改全局变量实现标题为了使网页更美观和易于阅读,网页设计的风格越来越趋向于简洁和直接。其中,在网页的标签中使用标题标签是很重要的。但是,如果有很多标题需要处理时,手动添加标题标签就会非常繁琐。因此,使用Python程序自动生成标题标签是一种高效的方法。

    2024-09-20
    16
  • 学会用Python ECharts制作精美图表

    学会用Python ECharts制作精美图表在这个数据爆炸的时代,如何更好地展现数据是每个数据分析人员、数据工程师都需要掌握的技能。而ECharts是一款非常优秀的可视化工具,它不仅能够帮助人们更好地展示数据,还拥有强大的交互能力。本文将以Python为例,讲解如何使用ECharts制作精美的图表。

    2024-05-26
    71

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注