mysql Redo Log,Undo log和binlog日志相关面试题
nanshan 2024-11-27 18:15 24 浏览 0 评论
Undo Log,Redo Log和Binlog
- MySQL隔离级别,一致性视图,undo log,redo log和binglog MySQL索引结构,回表,最左前缀原则
- Mysql相关 1、innoDB跟myisam的区别; 2、InnoDB的索引实现,唯一索引、覆盖索引、前缀索引、联合索引、最左匹配原则; 3、什么时候需要索引,以及如何选择索引; 4、MVCC的原理、redo、undo、回滚段; 5、自增锁、共享锁、排他锁、意向锁、插入意向锁、记录锁、间隙锁是什么;
- 说一下undolog, redolog 9、MySQL如何保证redo log和binlog的数据是一致的,如果一个sql执行很慢,你能分析一下原因吗? 10、为什么数据库会选错了索引
- 5、MVCC,binlog,redolog,undolog都是什么,起什么作用? (1)undolog 也就是我们常说的回滚日志文件 主要用于事务中执行失败,进行回滚,以及MVCC中对于数据历史版本的查看。由引擎层的InnoDB引擎实现,是逻辑日志,记录数据修改被修改前的值,比如"把id='B' 修改为id = 'B2' ,那么undo日志就会用来存放id ='B'的记录”。当一条数据需要更新前,会先把修改前的记录存储在undolog中,如果这个修改出现异常,则会使用undo日志来实现回滚操作,保证事务的一致性。当事务提交之后,undo log并不能立马被删除,而是会被放到待清理链表中,待判断没有事物用到该版本的信息时才可以清理相应undolog。它保存了事务发生之前的数据的一个版本,用于回滚,同时可以提供多版本并发控制下的读(MVCC),也即非锁定读。 (2)redoLog 是重做日志文件是记录数据修改之后的值,用于持久化到磁盘中。redo log包括两部分:一是内存中的日志缓冲(redo log buffer),该部分日志是易失性的;二是磁盘上的重做日志文件(redo log file),该部分日志是持久的。由引擎层的InnoDB引擎实现,是物理日志,记录的是物理数据页修改的信息,比如“某个数据页上内容发生了哪些改动”。当一条数据需要更新时,InnoDB会先将数据更新,然后记录redoLog 在内存中,然后找个时间将redoLog的操作执行到磁盘上的文件上。不管是否提交成功我都记录,你要是回滚了,那我连回滚的修改也记录。它确保了事务的持久性。 (3)MVCC多版本并发控制是MySQL中基于乐观锁理论实现隔离级别的方式,用于读已提交和可重复读取隔离级别的实现。在MySQL中,会在表中每一条数据后面添加两个字段:最近修改该行数据的事务ID,指向该行(undolog表中)回滚段的指针。Read View判断行的可见性,创建一个新事务时,copy一份当前系统中的活跃事务列表。意思是,当前不应该被本事务看到的其他事务id列表。 (4)binlog由Mysql的Server层实现,是逻辑日志,记录的是sql语句的原始逻辑,比如"把id='B' 修改为id = ‘B2’。binlog会写入指定大小的物理文件中,是追加写入的,当前文件写满则会创建新的文件写入。 产生:事务提交的时候,一次性将事务中的sql语句,按照一定的格式记录到binlog中。用于复制和恢复在主从复制中,从库利用主库上的binlog进行重播(执行日志中记录的修改逻辑),实现主从同步。业务数据不一致或者错了,用binlog恢复。
- 8.mysql的索引结构和优点 9.覆盖索引,事务acid如何实现(mvcc),如何回滚(根据undolog) 10.什么是回表(讲覆盖索引的时候提到不用回表)
- binlog 日志和 redolog 日志清楚吗? 说了两个日志的作用以及两阶段提交 mysql 有那些存储引擎,有哪些区别 mysql 索引在什么情况下会失效 mysql 主从同步怎么搞的?分哪几个过程?如果有一台新机器要加到从机里,怎么个过程。 乐观锁与悲观锁的区别? binlog 日志是 master 推的还是 salve 来拉的?
- 4、Spring的@Transactional如何实现的? (1)配置文件开启注解驱动,在相关的类和方法上通过注解@Transactional标识。 (2)spring 在启动的时候会去解析生成相关的bean,这时候会查看拥有相关注解的类和方法,并且为这些类和方法生成代理,并根据@Transaction的相关参数进行相关配置注入,这样就在代理中为我们把相关的事务处理掉了(开启正常提交事务,异常回滚事务)。 (3)真正的数据库层的事务提交和回滚是通过binlog或者redo log实现的
- 隔离级别 慢查询如何定位?如何优化?遇见过什么样的case,怎么解决的? 项目用到了分库分表,分库一定会提升性能呢?分库分表的设计? 分布式事务出现过不一致吗?为什么?怎么解决?有什么方法避免?怎么监控?监控到怎么处理?什么时候需要人工接入?mysql innodb下,能不能不设置主键?主键可以为空吗?可以允许几个?主键跟非主键的区别?索引存储形式? 联合索引失效问题?索引失效问题? mysql索引,覆盖索引?回表?B+树叶子节点存储什么?为什么不用AVL树? 数据库锁,乐观,悲观,record lock?next-key lock? mysql mvcc 双写机制?binlog跟redo log先后顺序?一个写不成功怎么处理?当前读和快照读?事务隔离级别?线上sql优化经验? 分布式事务?用过哪些方式?还知道哪些方式?怎么实现?有没有想过自己实现?避免哪些坑? 跨库聚合怎么实现?分页?第几页?下一页? 分库分表 聚合查询 limit怎么实现 top的实现 不停机扩容?分表避免冷热?不停机扩库?不停机扩表?跨库事务? 分库分表为什么这么设计?数据增长怎么做?怎么扩容?数据不均匀怎么办?冷热数据怎么分离?聚合怎么做?跨库聚合怎么做,查询怎么做?跨库分页怎么做? mysql 线上的组群模式?一主多从?为什么这样?强一致性如何保证?为了解决读写分离吗?是为了一主多备吗?主库crash掉怎么办?从库呢? 分布式事务怎么做?什么原理?怎么实现的?出现过事务不一致性吗?为什么?怎么解决的? 访问请求暴增怎么做?怎么缓解压力?
- MySQL做过哪些优化?覆盖索引?limit两个参数区别?MySQL分页优化的其他方法 SQL调优你会怎么做?索引的数据结构?MYSQL的事务有哪些?比较常用的是哪些? 关键SQL优化怎么优化的?为什么性能不好?主键必须有吗? MySQL有哪几种索引?聚簇索引和辅助索引的区别?索引数据结构?为什么用B+树? MVCC?版本号怎么变化的?更新的数据的时候怎么确定版本的?幻读怎么解决的? 一个SQL怎么走的索引?MYSQL会怎么选的?MySQL哪些不正规的写法无法命中索引? MySQL有哪几种日志?redo log主要有什么用?提交之后100%落盘吗?为什么MySQL要写到redo log buff内存?
- mysql 自动提交事物:autocommit=20,binlog记录 5、mysql几种锁,区别? 3种,行(单行),表(单表),页(一组数据)。 6、100万页数据,分页查询:从100万跳转到100万01页最快,还是直接输入100万最快,为什么? 7、如何使用避免最小粒度的行锁:参数?
- 5、订阅分库分表的 Binlog 怎么订阅? 6、分库分表的数据源中假如存在主键冲突要怎么解决? 7、怎么保证下游对 Binlog 的消费顺序?
- 1、MySQL中常用存储引擎有哪些?它们相互之间有什么区别? 2、MySQL 索引在什么情况下会失效? (1)当使用like关键字时,如果查询条件以%开头,索引无效;当like前缀没有%,后缀有%时,索引依然有效。 (2)当使用or关键字时,or语句前后没有同时使用索引或当or关键字左右查询字段只有一个是索引,该索引失效,只有当or左右查询字段均为索引时,才会生效。 (3)使用组合索引时,如果查询条件不包括该组合索引全部字段或查询条件不是该组合索引左边第一个字段时,索引失效。 (4)数据类型出现隐式转化。如某个索引字段的数据类型为varchar,查询内容为123,如不加引号的话可能会自动转换为int型,使索引无效,产生全表扫描。 (5)在索引字段上使用not及运算符 (6)对索引字段进行计算操作、字段上使用函数,索引失效。 3、innodb 与myisam 的区别? 4、MySQL 的索引模型; 5、MySQL 主从同步怎么搞的?分哪几个过程?如果有一台新机器要加到从机里,怎么个过程。 6、乐观锁与悲观锁的区别? 7、binlog 日志是 master 推的还是 salve 来拉的?
- 数据库,MVCC的实现讲一下?多版本体现在哪里实现上是怎样的?B+树索引有了解吗?怎么解决不可重复读的问题? MySQL 的主从同步机制?幻读是什么? 使用 MySQL 的心得?加 limit, 执行计划,是否有排序,是否可以使用覆盖索引解决排序,不要将自增主键给外部
欢迎搜索关注本人与朋友共同开发的微信面经小程序【大厂面试助手】和公众号【微瞰技术】
相关推荐
- 0722-6.2.0-如何在RedHat7.2使用rpm安装CDH(无CM)
-
文档编写目的在前面的文档中,介绍了在有CM和无CM两种情况下使用rpm方式安装CDH5.10.0,本文档将介绍如何在无CM的情况下使用rpm方式安装CDH6.2.0,与之前安装C5进行对比。环境介绍:...
- ARM64 平台基于 openEuler + iSula 环境部署 Kubernetes
-
为什么要在arm64平台上部署Kubernetes,而且还是鲲鹏920的架构。说来话长。。。此处省略5000字。介绍下系统信息;o架构:鲲鹏920(Kunpeng920)oOS:ope...
- 生产环境starrocks 3.1存算一体集群部署
-
集群规划FE:节点主要负责元数据管理、客户端连接管理、查询计划和查询调度。>3节点。BE:节点负责数据存储和SQL执行。>3节点。CN:无存储功能能的BE。环境准备CPU检查JDK...
- 在CentOS上添加swap虚拟内存并设置优先级
-
现如今很多云服务器都会自己配置好虚拟内存,当然也有很多没有配置虚拟内存的,虚拟内存可以让我们的低配服务器使用更多的内存,可以减少很多硬件成本,比如我们运行很多服务的时候,内存常常会满,当配置了虚拟内存...
- 国产深度(deepin)操作系统优化指南
-
1.升级内核随着deepin版本的更新,会自动升级系统内核,但是我们依旧可以通过命令行手动升级内核,以获取更好的性能和更多的硬件支持。具体操作:-添加PPAs使用以下命令添加PPAs:```...
- postgresql-15.4 多节点主从(读写分离)
-
1、下载软件[root@TX-CN-PostgreSQL01-252software]#wgethttps://ftp.postgresql.org/pub/source/v15.4/postg...
- Docker 容器 Java 服务内存与 GC 优化实施方案
-
一、设置Docker容器内存限制(生产环境建议)1.查看宿主机可用内存bashfree-h#示例输出(假设宿主机剩余16GB可用内存)#Mem:64G...
- 虚拟内存设置、解决linux内存不够问题
-
虚拟内存设置(解决linux内存不够情况)背景介绍 Memory指机器物理内存,读写速度低于CPU一个量级,但是高于磁盘不止一个量级。所以,程序和数据如果在内存的话,会有非常快的读写速度。但是,内存...
- Elasticsearch性能调优(5):服务器配置选择
-
在选择elasticsearch服务器时,要尽可能地选择与当前业务量相匹配的服务器。如果服务器配置太低,则意味着需要更多的节点来满足需求,一个集群的节点太多时会增加集群管理的成本。如果服务器配置太高,...
- Es如何落地
-
一、配置准备节点类型CPU内存硬盘网络机器数操作系统data节点16C64G2000G本地SSD所有es同一可用区3(ecs)Centos7master节点2C8G200G云SSD所有es同一可用区...
- 针对Linux内存管理知识学习总结
-
现在的服务器大部分都是运行在Linux上面的,所以,作为一个程序员有必要简单地了解一下系统是如何运行的。对于内存部分需要知道:地址映射内存管理的方式缺页异常先来看一些基本的知识,在进程看来,内存分为内...
- MySQL进阶之性能优化
-
概述MySQL的性能优化,包括了服务器硬件优化、操作系统的优化、MySQL数据库配置优化、数据库表设计的优化、SQL语句优化等5个方面的优化。在进行优化之前,需要先掌握性能分析的思路和方法,找出问题,...
- Linux Cgroups(Control Groups)原理
-
LinuxCgroups(ControlGroups)是内核提供的资源分配、限制和监控机制,通过层级化进程分组实现资源的精细化控制。以下从核心原理、操作示例和版本演进三方面详细分析:一、核心原理与...
- linux 常用性能优化参数及理解
-
1.优化内核相关参数配置文件/etc/sysctl.conf配置方法直接将参数添加进文件每条一行.sysctl-a可以查看默认配置sysctl-p执行并检测是否有错误例如设置错了参数:[roo...
- 如何在 Linux 中使用 Sysctl 命令?
-
sysctl是一个用于配置和查询Linux内核参数的命令行工具。它通过与/proc/sys虚拟文件系统交互,允许用户在运行时动态修改内核参数。这些参数控制着系统的各种行为,包括网络设置、文件...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- linux 查询端口号 (58)
- docker映射容器目录到宿主机 (66)
- 杀端口 (60)
- yum更换阿里源 (62)
- internet explorer 增强的安全配置已启用 (65)
- linux自动挂载 (56)
- 禁用selinux (55)
- sysv-rc-conf (69)
- ubuntu防火墙状态查看 (64)
- windows server 2022激活密钥 (56)
- 无法与服务器建立安全连接是什么意思 (74)
- 443/80端口被占用怎么解决 (56)
- ping无法访问目标主机怎么解决 (58)
- fdatasync (59)
- 405 not allowed (56)
- 免备案虚拟主机zxhost (55)
- linux根据pid查看进程 (60)
- dhcp工具 (62)
- mysql 1045 (57)
- 宝塔远程工具 (56)
- ssh服务器拒绝了密码 请再试一次 (56)
- ubuntu卸载docker (56)
- linux查看nginx状态 (63)
- tomcat 乱码 (76)
- 2008r2激活序列号 (65)