首页 > 数据库 >面试数据库八股文十问十答第九期

面试数据库八股文十问十答第九期

时间:2024-05-29 09:00:30浏览次数:13  
标签:同步 数据库 第九期 十问 十答 MySQL 分表 数据 分片

面试数据库八股文十问十答第九期

作者:程序员小白条个人博客

相信看了本文后,对你的面试是有一定帮助的!关注专栏后就能收到持续更新!

⭐点赞⭐收藏⭐不迷路!⭐

1)MySQL 读写分离

MySQL 读写分离是指将读操作和写操作分别分配到不同的数据库实例上,以提高数据库的读取性能和可用性。一般的做法是:

  • 配置主从复制:将主数据库(用于写操作)与多个从数据库(用于读操作)进行配置。
  • 读写分离代理:在应用程序和数据库之间部署读写分离代理,如 MySQL Proxy、ProxySQL 等,用于拦截数据库请求并将读操作转发到从数据库,写操作转发到主数据库。
  • 负载均衡:使用负载均衡器来分发读操作请求到不同的从数据库,以平衡数据库负载。
  • 监控和管理:实时监控数据库实例的健康状态,确保主从同步正常,及时处理异常情况。

2)MySQL 主从同步机制

MySQL 主从同步是指将主数据库的数据变更同步到从数据库,以保持数据一致性。主从同步机制包括以下步骤:

  • binlog 日志:主数据库记录所有的数据变更操作到二进制日志(binlog)中。
  • relay log 日志:从数据库通过主数据库的 binlog 日志进行数据同步,将数据变更操作记录到自己的中继日志(relay log)中。
  • IO 线程:从数据库的 IO 线程从主数据库读取 binlog 日志,并将数据写入自己的 relay log 日志中。
  • SQL 线程:从数据库的 SQL 线程从 relay log 日志中读取数据变更操作,并在本地执行,保持数据的一致性。

3)主从同步延迟处理

主从同步可能会出现延迟,主要原因包括网络延迟、从数据库负载过高等。处理主从同步延迟可以采取以下方法:

  • 监控延迟:实时监控主从同步延迟,及时发现延迟情况。
  • 优化网络:优化网络连接,减少网络延迟,可以考虑使用专线或者增加带宽。
  • 调整参数:调整 MySQL 参数,如增大 binlog 大小、调整复制线程参数等,以提高同步效率。
  • 增加从库:增加从数据库实例,将读操作分散到多个从数据库上,减少单个从数据库的负载压力。
  • 重放 binlog:如果从库同步延迟严重,可以考虑暂停从库的同步,重新生成主库上的 binlog,并在从库上重放 binlog,以快速恢复数据一致性。

这些方法可以帮助处理主从同步延迟问题,确保数据库的数据一致性和可用性。

4)分库分表的理解

  • 分库:将一个数据库中的数据按照一定规则划分到多个数据库中,每个数据库负责存储一部分数据。
  • 分表:将一个表中的数据按照一定规则划分到多个物理表中,每个物理表负责存储一部分数据。

分库分表的主要目的是提高数据库的性能和扩展性,通过水平拆分数据,减少单个数据库或表的负载,提高系统的并发处理能力和可用性。

5)分库分表的实施方式

分库分表的实施方式可以根据具体业务需求和数据特点来确定,一般包括以下几个步骤:

  • 数据分片规则设计:根据业务需求设计合适的数据分片规则,如按照用户 ID、地理位置、时间等进行分片。
  • 分库策略:根据分片规则将数据分散到多个数据库中,一般采用水平分库的方式。
  • 分表策略:根据分片规则将数据分散到多个物理表中,一般采用水平分表或者垂直分表的方式。
  • 数据迁移和同步:将现有数据按照分片规则进行迁移,确保数据分布到各个库表中,并设置数据同步机制,保持数据的一致性。

6)分表带来的问题

尽管分表可以提高数据库的性能和扩展性,但也会带来一些问题,包括但不限于:

  • 查询复杂性增加:分表后,对跨表查询和聚合查询的支持会变得更加复杂,需要设计合适的查询方式来处理分布在不同表中的数据。
  • 事务管理困难:跨表事务管理会变得更加复杂,需要设计合适的事务管理策略来保证事务的一致性。
  • 数据迁移和维护成本增加:分表后,数据迁移和维护的成本会增加,需要设计合适的数据迁移和维护策略来保证系统的稳定性和可用性。
  • 分片平衡:分表后,可能会出现分片不均衡的情况,需要设计合适的分片策略来保证各个分片的负载均衡。

解决这些问题需要综合考虑业务需求和数据库特点,设计合适的分库分表方案,并配合合适的技术方案来实施和管理。

7)从 MySQL 获取数据,是从硬盘读取的吗?

MySQL 在获取数据时,其读取数据的来源取决于数据是否在内存中的缓存(例如缓存池)。一般情况下,数据首次读取会来自硬盘。一旦被访问,数据将被加载到内存中的缓存区,如 InnoDB 的缓冲池。之后的访问可能直接从内存中读取,大大加快了数据访问速度。但如果内存中没有找到所需数据,MySQL 将从硬盘中读取。

8)MySQL change buffer

MySQL 的 change buffer 是 InnoDB 存储引擎的一个特性,用于优化非唯一索引下的数据插入、删除和修改操作。当对一个非唯一索引的表执行写操作时,如果相关的数据页不在缓冲池中,InnoDB 会使用 change buffer 来记录这些更改,而不是立即从硬盘读取数据页进行更新。这减少了磁盘 I/O 的需求,并提高了性能。在后续的数据页被加载到缓冲池时,这些更改会被合并(merge)到数据页中。

9)MySQL Doublewrite Buffer

MySQL 的 Doublewrite Buffer 是 InnoDB 存储引擎用来防止部分写损坏(partial page writes)的一种机制。在将数据页写入磁盘之前,InnoDB 首先将它们写入到一个称为 doublewrite buffer 的特殊区域。这个缓冲区位于共享表空间内,InnoDB 会将每个数据页写两次(一次到 doublewrite buffer,一次到最终位置)。如果在写入过程中发生崩溃,InnoDB 可以从 doublewrite buffer 恢复完整的数据页,确保数据的一致性和完整性。

10)MySQL Log Buffer

MySQL 的 Log Buffer 是 InnoDB 存储引擎用于缓存即将写入 redo log 的数据修改信息的内存区域。当事务提交时,事务中的修改首先记录在 Log Buffer 中。这些日志信息随后异步写入到磁盘上的 redo log 文件中。Log Buffer 的使用减少了磁盘 I/O,因为它允许系统合并多个事务日志的写入操作。如果数据库突然崩溃,redo log 保证了事务的持久性,可以在重启后使用 redo log 来重放这些修改,恢复到崩溃前的状态。

这些内部机制共同提高了 MySQL 的性能,同时确保了数据的完整性和持久性。

开源项目地址:https://gitee.com/falle22222n-leaves/vue_-book-manage-system

前后端总计已经 1300+ Star,2W+ 访问!

⭐点赞⭐收藏⭐不迷路!⭐

标签:同步,数据库,第九期,十问,十答,MySQL,分表,数据,分片
From: https://blog.csdn.net/qq_67358181/article/details/139283169

相关文章

  • 软考中级(网络工程师考核要点)第一章 计算机网络系统(信道特性应用)第九期(海明码和CRC
    第八期的题目分析:1.分析:D。光纤通信的使用是波分复用,T1/E1是同步时分复用,因为它们使用固定的时钟来确定数据的传输速率。同时,T1/E1也支持异步传输,但通常以同步方式使用。WIFI是异步时分复用,因为它使用无线信号传输数据,没有严格的时钟同步要求。WIFI的数据传输速率可以根据......
  • 用友全球司库十问(完结篇)|如何构建司库信创体系化能力?
    用友BIP全球司库十问系列,以聚焦企业金融资源运作,深度剖析企业价值创造,通过详解全球司库管理体系建设过程,向您献上精彩分呈的最佳实践与精进不休的理论总结。它涵盖账户管理、资金预算、资金结算、票据管理、资金流动性分析、资金流动调配、融资管理、资金计划、银企直联、资金管理......
  • 用友全球司库十问(九)|企业为什么需要银企直联?
    用友BIP全球司库十问系列,以聚焦企业金融资源运作,深度剖析企业价值创造,通过详解全球司库管理体系建设过程,向您献上精彩分呈的最佳实践与精进不休的理论总结。它涵盖账户管理、资金预算、资金结算、票据管理、资金流动性分析、资金流动调配、融资管理、资金计划、银企直联、资金管理......
  • 用友全球司库十问(八)|集团企业如何做好资金集中化管理?
    用友BIP全球司库十问系列,以聚焦企业金融资源运作,深度剖析企业价值创造,通过详解全球司库管理体系建设过程,向您献上精彩分呈的最佳实践与精进不休的理论总结。它涵盖账户管理、资金预算、资金结算、票据管理、资金流动性分析、资金流动调配、融资管理、资金计划、银企直联、资金管理......
  • 人工智能十问
    1)人工智能会取代甚至消灭人类吗?2)人工智能会造成大量失业吗?3)人工智能让公平社会严重失衡吗?4)50年内人工智能会发展到什么程度?5)人工智能对国际竞争有哪些深远影响?6)人工智能正在颠覆哪些行业?7)当前人工智能应用最好的场景?8)人工智能的底层核心支撑有哪些?9)人工智能会如何改变人类社会?10)普......
  • 十问Huawei Cloud Toolkit:开发插件如何提升云上开发效能
    本文分享自华为云社区《【云享问答】第2期十问HuaweiCloudToolkit:开发插件如何提升云上开发效能》,作者:华为云社区精选。众所周知,桌面集成开发环境(IDE)已经融入到开发的各个环节,对开发者的重要性和广泛度是不言而喻的,而开发插件更是建立在IDE基础上的功能Buff。HuaweiCloudTo......
  • SQLServer DBA 六十问
    1. char、varchar、nvarchar之间的区别(包括用途和空间占用);xml类型查找某个节点的数据有哪些方法,哪个效率高;使用存储过程和使用T-SQL查询数据有啥不一样;①char、varchar、nvarchar之间的区别用途区别:CHAR适合存储定长数据,存储及查询效率更高。字符长度不足的自动用空格填充,所以在......
  • 用友BIP全球司库十问之资金结算如何统一管理?
    资金结算管理平台是什么?资金结算主要指企业日常的收付款及相关票据管理,结算的效率和准确性会影响企业的现金流使用效益,进而影响企业的经营。在国资委1号文件中要求中央企业加强资金结算规范管理,依托财务公司、资金中心等建立集团电子结算平台,统一对外接口,实现全流程线上审批和电子......
  • 如何让数据安全管理工作化繁为简?uDSP 十问十答
    数据安全管理工作与国家数据安全、企业资产保护以及个人信息保护工作息息相关。复杂、多元、流通的数据也给数据安全带来了更多的威胁和挑战,如数据资产管理、分类分级问题,数据安全集中管控问题,数据共享与流通问题等。原点安全一体化数据安全平台uDSP致力于帮助企业将繁琐、繁重的......
  • 成长计划知识赋能 | 第九期:渐进式深入理解OpenHarmony系统
     成长计划知识赋能直播第九期如约而至,面向OpenHarmony初中级开发者,解析OpenHarmony系统架构和驱动框架,助力开发者快速上手OpenHarmony系统开发。详情见海报内容,资深......