面试笔记——MySQL(主从同步原理、分库分表)

主从同步原理

主从同步结构:主库负责写数据,从库负责读数据,如图——
在这里插入图片描述
MySQL主从复制的核心就是二进制日志(BINLOG),它记录了所有的 DDL(数据定义语言)语句和 DML(数据操纵语言)语句,但不包括数据查询(SELECT、SHOW)语句。
在这里插入图片描述
具体的同步流程为:当主库的数据发生变化,会把操作语句写入到binlog的文件中;从库的IOthread专门从主库的binlog中读取数据;读取完成之后,就会把数据写入到从库的中继日志Relay log中;再由从库的SQLthread线程读取Relay log,并执行里面的命令;执行完成之后,主库与从库的数据就会保持一致。

复制分成三步:

  1. Master 主库在事务提交时,会把数据变更记录在二进制日志文件 Binlog 中。
  2. 从库读取主库的二进制日志文件 Binlog ,写入到从库的中继日志 Relay Log 。
  3. slave重做中继日志中的事件,将改变反映它自己的数据。

分库分表

主从架构虽然可以让读写分开操作,解决了分担了数据库的访问压力,但是不能解决海量存储的问题。

分库分表的时机:

  1. 前提,项目业务数据逐渐增多,或业务发展比较迅速(在企业项目中,单表的数据量达1000W20G以后,就需要进行分库分表)
  2. 优化已解决不了性能问题(主从读写分离、查询索引…)
  3. IO瓶颈(磁盘IO、网络IO)、CPU瓶颈(聚合查询、连接数太多)

分库分表——解决海量存储问题
在这里插入图片描述

拆分策略

垂直拆分: 包括垂直分库和垂直分表;
水平拆分: 包括水平分库和水平分表;
在这里插入图片描述
垂直分库: 以表为依据,根据业务将不同表拆分到不同库中。
特点:

  • 按业务对数据分级管理、维护、监控、扩展
  • 在高并发下,提高磁盘IO和数据量连接数

垂直分库,如图所示:
在这里插入图片描述

垂直分表: 以字段为依据,根据字段属性将不同字段拆分到不同表中。
拆分规则:

  • 把不常用的字段单独放在一张表
  • 把text,blob等大字段拆分出来放在附表中

特点:

  • 冷热数据分离(经常被查询的数据称为热数据;相反,不常用的数据称为冷数据)
  • 减少IO过渡争抢,两表互不影响

垂直分表,如图所示(注意在实际应用中,拆表不一定要在不同的库中进行,拆分成两个表就行了):
在这里插入图片描述
水平分库: 将一个库的数据拆分到多个库中。
特点:

  • 解决了单库大数量,高并发的性能瓶颈问题
  • 提高了系统的稳定性和可用性

水平分库,如图所示:
在这里插入图片描述
路由规则:

  • 根据id节点取模
  • 按id也就是范围路由,节点1(1-100万 ),节点2(100万-200万)

水平分表: 将一个表的数据拆分到多个表中(可以在同一个库内)。
特点:

  • 优化单一表数据量过大而产生的性能问题;
  • 避免IO争抢并减少锁表的几率;

水平分表,如图所示:
在这里插入图片描述

新的问题和新的技术

分库之后的问题:

  • 分布式事务一致性问题
  • 跨节点关联查询
  • 跨节点分页、排序函数
  • 主键避重

分库分表中间件:

  • sharding-sphere
  • mycat

使用分库分表中间件可以降低开发的难度,解决分库分表之后可能会遇到的问题:
在这里插入图片描述

总结——具体拆分策略:

  1. 水平分库,将一个库的数据拆分到多个库中,解决海量数据存储和高并发的问题
  2. 水平分表,解决单表存储和性能的问题
  3. 垂直分库,根据业务进行拆分,高并发下提高磁盘IO和网络连接数
  4. 垂直分表,冷热数据分离,多表互不影响
  5. 注意:使用水平拆分策略时,需要使用中间件(sharding-sphere、mycat)来避免分库之后可能遇到的问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/479973.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Tkinter 一文读懂

Tkinter 简介 Tkinter(即 tk interface,简称“Tk”)本质上是对 Tcl/Tk 软件包的 Python 接口封装,它是 Python 官方推荐的 GUI 工具包,属于 Python 自带的标准库模块,当您安装好 Python 后,就可…

使用PDFBox调整PDF每页格式

目录 一、内容没有图片 二、内容有图片 maven依赖&#xff0c;这里使用的是pdfbox的2.0.30版本 <dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>2.0.30</version></dependency>…

从零开始学Spring Boot系列-集成Kafka

Kafka简介 Apache Kafka是一个开源的分布式流处理平台&#xff0c;由LinkedIn公司开发和维护&#xff0c;后来捐赠给了Apache软件基金会。Kafka主要用于构建实时数据管道和流应用。它类似于一个分布式、高吞吐量的发布-订阅消息系统&#xff0c;可以处理消费者网站的所有动作流…

【Linux】内核空间动态内存申请

&#x1f525;博客主页&#xff1a;PannLZ &#x1f618;欢迎关注&#xff1a;&#x1f44d;点赞&#x1f64c;收藏✍️留言 文章目录 内核空间动态内存申请1.kmalloc()2._ _get_free_pages()3.vmalloc() 内核空间动态内存申请 1.kmalloc() #include <linux/slab.h>vo…

Flask项目中使用蓝湖实现启动项配置——多个controller项

项目结构 # controller1-__init__.py from flask import Blueprintcont2_sale_blueprint Blueprint(cont2_sale_blueprint, __name__) cont2_user_blueprint Blueprint(cont2_user_blueprint, __name__) from . import user_controller from . import sale_controller# contr…

推荐一款很不错的vscode高亮插件

用过很多款高亮插件&#xff0c;总感觉大部分显示都很乱&#xff0c;但是其中有一款用起来很清晰明了&#xff0c;很喜欢&#xff01; 插件名字&#xff1a;select-highlight-cochineal-color 使用效果&#xff1a; 底色高亮让人感觉很清晰&#xff0c;一个好的高亮插件能让你…

VScode通过ssh连接github

通过ssh连接github 1.生成公钥和私钥2.设置config文件3.配置ssh免密登录4.远程仓库初始化 1.生成公钥和私钥 首先选择一个文件夹&#xff0c;右击 git bash here&#xff0c;在命令行输入命令&#xff0c;按下三次回车生成一个**.ssh文件夹**&#xff0c;一般在用户的user根目…

Django信号

一、介绍 Django有一个“信号调度器(signal dispatcher)”,当框架中的其他地方发生操作时,它可以通知一些解耦的应用程序 官网:信号 | Django 文档 | Django 1.1、内置的信号的使用 1.1.1、定义接收器函数 def my_callback(sender, **kwargs):print("Request finis…

【Linux】/proc文件系统

&#x1f525;博客主页&#xff1a;PannLZ &#x1f618;欢迎关注&#xff1a;&#x1f44d;点赞&#x1f64c;收藏✍️留言 文章目录 /proc文件系统1.获取与进程相关的信息:/proc/ID2./proc 目录下的系统信息3. 访问/proc 文件4.动态创建/proc文件系统4.1创建目录4.2创建proc…

【回溯专题part1】【蓝桥杯备考训练】:n-皇后问题、木棒、飞机降落【已更新完成】

目录 1、n-皇后问题&#xff08;回溯模板&#xff09; 2、木棒&#xff08;《算法竞赛进阶指南》、UVA307&#xff09; 3、飞机降落&#xff08;第十四届蓝桥杯省赛C B组&#xff09; 1、n-皇后问题&#xff08;回溯模板&#xff09; n皇后问题是指将 n 个皇后放在 nn 的国…

通过Anaconda安装Python会得到的重要文件夹

E:\Anaconda\路径下 Scripts 文件夹&#xff1a;该文件夹包含了可执行的Python脚本文件&#xff0c;例如pip和conda等命令行工具。【pip3.exe和django-admin.exe等】Lib 文件夹&#xff1a;该文件夹包含了Python的标准库和其他第三方库的源代码文件。【Lib下面的site-packages…

农业四情监测系统的工作原理

农业四情监测系统的工作原理【TH-Q1】农业四情监测系统是一种应用现代科技手段&#xff0c;以实现对农田环境信息的实时监测和数据采集的系统。这一系统通过对农田的土壤、气象、病虫害以及作物生长状况等四个方面的实时监测&#xff0c;帮助农民和农业管理者更好地了解和掌握农…

力扣● 503.下一个更大元素II ● 42. 接雨水

503.下一个更大元素II 与496.下一个更大元素 I的不同是要循环地搜索元素的下一个更大的数。那么主要是对于遍历结束后&#xff0c;单调栈里面剩下的那些元素。 如果直接把两个数组拼接在一起&#xff0c;然后使用单调栈求下一个最大值就可以。 代码实现的话&#xff0c;不用直…

电脑笔记软件与桌面备忘录的高效设置指南

在数字化生活的大潮中&#xff0c;电脑笔记软件和桌面备忘录已成为我们日常信息管理与时间规划的重要载体。它们犹如你的私人智囊团&#xff0c;随时随地帮你记录灵感、整理思路、规划任务。本文将深度解析电脑笔记软件的多元功能&#xff0c;并手把手教你如何设置实用的电脑桌…

Kotlin函数进阶玩法

公众号「稀有猿诉」 原文链接 More about Kotlin Functions Kotlin中的函数是一级对象&#xff0c;除了常规的函数式编程以外&#xff0c;还支持一些非常灵活的特殊用法&#xff0c;可以大大增强代码的可读性和简洁性&#xff0c;让代码更加的优雅&#xff0c;在业界顶级…

第6讲-MIPS处理器(3)MIPS单周期处理器设计

三. MIPS单周期处理器设计 1.单周期数据通路设计 2.单周期控制器设计 3.单周期性能分析

阿里云服务器ECS经济型e实例2核2G优惠价格99元一年性能测试

阿里云服务器99元一年配置为云服务器ECS经济型e实例&#xff0c;2核2G配置、3M固定带宽和40G ESSD Entry系统盘&#xff0c;新用户和老用户均可买&#xff0c;续费不涨价依旧是99元一年&#xff0c;阿里云服务器网aliyunfuwuqi.com来详细说下阿里云99元服务器性能测评&#xff…

碳素光线疗法——动,植物 光育实验

碳素光线疗法——动&#xff0c;植物 光育实验 碳素光线疗法&#xff1a; 中西医、民间疗法融为一体&#xff0c;提高机体自身治愈力&#xff0c;免疫力&#xff0c;改善体质和保持健康&#xff0c;有助于疾病的预防和治疗的疗法。不吃药、不打针、不手术也能得健康&#xff0c…

HCIP的学习(3)

网络类型及数据链路层协议 网络类型分类 P2P网络----点到点网络类型MA网络-----多点接入网络 BMA----广播型多点接入网络NBMA—非广播型多点接入网络&#xff08;快淘汰了&#xff09; 数据链路层协议 MA网络 以太网协议 特点&#xff1a;需要使用MAC地址对设备进行区分…

经济事件对我们投资没影响吗?昂首资本的这两个实例说明白再说

各位投资者现在还不明白经济事件对我们投资的影响吗&#xff1f;下面昂首资本就通过两个实例&#xff0c;各位投资者能否明白经济事件对我们投资的影响。 2015年6月4日&#xff0c;澳大利亚零售量新闻发布。分析师预计销量增幅高达0.4%&#xff0c;但是结果却大吃一惊&#xf…