Java----MySQL常见面试题(五)

目录

1.事务底层原理?

2.什么是MVCC?

 3.主从复制的概念和原理?

 4.数据库的分库分表?

5.主从复制之后的读写分离如何实现? 


1.事务底层原理?

  1. 简单地说,就是利用两份日志文件redo log(重做日志)和undo log(回滚日志)来确保事务的持久性和原子性以及一致性。利用数据库提供的锁机制和MVCC机制(主要是MVCC机制)来确保事务的隔离性。
  2. 重做日志,记录的是事务提交时数据页的物理修改,是用来实现事务的持久性。该日志文件由两部分组成:重做日志缓冲(redo log buffer)以及重做日志文件(redo log file),前者是在内存中,后者在磁盘中。当事务 提交之后会把所有修改信息都存到该日志文件中,用于在刷新脏页到磁盘发生错误时,进行数据恢复使用。
  3. 回滚日志,用于记录数据被修改前的信息,作用包含两个:提供回滚和 MVCC(多版本并发控制)。undo log和redo log不一样,它是逻辑日志。可以认为当delete一条记录时,undo log中会记录一条对应的insert记录,反之亦然,当update一条记录时,它记录一条对应相反的update记录。当执行rollback时,就可以从undo log中的逻辑记录中读取到相应的内容并进行回滚。

2.什么是MVCC?

概念:

 3.主从复制的概念和原理?

概述:主从复制是指将主数据库的DDL和DML操作通过二进制日志传到从库服务器中,然后在从库上对这些日志重新执行(也叫重做),从而使得从库和主库的数据保持同步。MySQL支持一台主库同时向多台从库进行复制,从库同时也可以作为其它从服务器的主库,实现链状复制。

原理:

 4.数据库的分库分表?

背景:随着互联网及移动互联网的发展,应用系统的数据量也是成指数式增长,若采用单数据库进行数据存储,存在以下性能瓶颈:

  1. IO瓶颈:热点数据太多,数据库缓存不足,产生大量磁盘IO,效率较低。 请求数据太多,带宽不够,网络IO瓶颈。
  2. CPU瓶颈:排序、分组、连接查询、聚合统计等SQL会耗费大量的CPU资源,请求数太多,CPU出现瓶颈。

所以,分库分表的中心思想都是将数据分散存储,使得单一数据库/表的数据量变小来缓解单一数据库的性能问题,从而达到提升数据库性能的目的。

常见的拆分策略有:水平分表,垂直分表,水平分库,垂直分库等等。

 实现的技术:

5.主从复制之后的读写分离如何实现? 

总结:我们可以在主从复制的基础上,利用MyCat这样的一个中间件可以很方便的实现读写分离。为此我们可以搭建一主一从读写分离的这样一个环境。但是由于在一主一从读写分离的环境中,一旦master服务器宕机或者发生故障后,我们的业务系统就只能依靠slave服务器来进行查询操作,而写操作就不能进行了。所以我们可以搭建双主双从读写分离的环境,这样就有了master1和master2两个服务器,它们两个互相复制,互为备机。使用MyCat的操作有配置逻辑库,配置逻辑表,选择分片规则,设置分片节点,同时还有配置好负载均衡策略以及失败自动切换策略。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值