当前位置: 首页 > news >正文

数据库优化

一、主从读写分离
主库:主要负责数据的写入。
从库:主要负责数据的查询。

引出问题:

  1. 可能会存在主从延迟,导致主从一致性问题。
  2. 查询主库的量级需要控制。
  3. 数据量庞大,索引也占据存储空间,磁盘空间不足,当主库宕机后会影响所有模块的写入,需要进行数据分片,因此引出分库分表的解决策略。

解决方法:

  1. 主从复制
  • binlog:MySQL的主从复制是依赖于binlog的,也就是记录MySQL上的所有变化并以二进制形式保存在磁盘上二进制日志文件。主从复制就是将binlog中的数据从主库传输到从库上,一般这个过程是异步的,即主库上的操作不会等待binlog同步的完成。

  • 主从复制原理:首先从库在连接到主节点时会创建一个IO线程,用以请求主库更新的binlog,并且把接收到的binlog信息写入一个叫做relay log的日志文件中,而主库也会创建一个log dump线程来发送binlog给从库;同时,从库还会创建一个SQL线程读取relay log中的内容,并且在从库中做回放,最终实现主从的一致性。这是一种比较常见的主从复制方式。注意:使用独立的log dump线程是一种异步的方式,可以避免对主库的主体更新流程产生影响,而从库在接收到信息后并不是写入从库的存储中,是写入一个relay log,是避免写入从库实际存储会比较耗时,最终造成从库和主库延迟变长。
    基于主从复制,可以在写入时只写主库,读数据时只读从库,在写请求锁表或锁记录时不会影响到读请求的执行。一主多从的设计可以将读流量分担到多个从库中,能够承担更高的并发读流量。

  1. 主从复制如何访问数据库?
    我们已经使用主从复制的技术将数据复制到了多个节点,也实现了数据库读写的分离,这时,对于数据库的使用方式发生了变化。以前只需要使用一个数据库地址就好了,现在需要使用一个主库地址和多个从库地址,并且需要区分写入操作和查询操作,如果结合“分库分表”,复杂度会提升更多。为了降低实现的复杂度,业界涌现了很多数据库中间件来解决数据库的访问问题,这些中间件可以分为两类。
  • 第一类以淘宝的TDDL( Taobao Distributed Data
    Layer)
http://www.lryc.cn/news/341847.html

相关文章:

  • 专业渗透测试 Phpsploit-Framework(PSF)框架软件小白入门教程(一)
  • Web安全研究(七)
  • 矩池云jupyter运行opengait代码 未完成版
  • 油烟净化器买家必看!商用油烟净化器功效及使用方法盘点
  • gitee关联picgo设置自己的typora_图床
  • 深入理解网络原理1
  • 为什么感觉没有效果
  • C++中的指针详解
  • 视频改字祝福 豪车装X系统源码uniapp前端小程序源码
  • google chromeDriver 地址
  • 分布式与一致性协议之Raft算法(一)
  • 从自定义一个作用域开始来了解SpringBean的作用域
  • Android 编译文件简述(Android.mk)
  • [React] 手动实现CountTo 数字滚动效果
  • 9.Admin后台系统
  • redis之集群
  • #9松桑前端后花园周刊-React19beta、TS5.5beta、Node22.1.0、const滥用、jsDelivr、douyin-vue
  • STM32中UART通信的完整C语言代码范例
  • 【ITK统计】第一期 分类器
  • 51单片机两个中断及中断嵌套
  • VUE 监视数据原理
  • Thinkphp使用dd()函数
  • Git使用指北
  • STM32G030F6P6TR 芯片TSSOP20 MCU单片机微控制器芯片
  • 零基础入门学习Python第二阶01生成式(推导式),数据结构
  • Java面试题:多线程3
  • 【QEMU系统分析之实例篇(十八)】
  • pyside6的调色板QPalette的简单应用
  • 苍穹外卖项目
  • error: Execution was interrupted, reason: signal SIGABRT