百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

mysql Redo Log,Undo log和binlog日志相关面试题

nanshan 2024-11-27 18:15 20 浏览 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, 执行计划,是否有排序,是否可以使用覆盖索引解决排序,不要将自增主键给外部

    欢迎搜索关注本人与朋友共同开发的微信面经小程序【大厂面试助手】和公众号【微瞰技术】

相关推荐

今晚拿下PHP反序列化的一系列操作

引言在CTF中反序列化类型的题目还是比较常见的,之前有学习过简单的反序列化,以及简单pop链的构造。这次学习内容为php内置的原生类的反序列化以及一点进阶知识。在题目给的的代码中找不到可利用的类时,这...

Win10安装Apache和PHP(apache安装php模块)

说明:虽然PHPStudy之类的软件给我们提供了方便的集成环境,但是其使用的是非线程安全的PHP版本(NotThreadSafe,NTS),某些功能不可以使用。所以,我们还需要自己再安装一个Apa...

腾讯云云函数部署laravel项目(腾讯云函数 selenium)

1、购买函数套餐包在Serverless控制台,选择函数套餐包进行购买2、新建函数服务2.1、模板创建选择函数URL:新建函数URL,启用公网访问:2.1.1、postman访问首页2.1.2、pos...

站长教你搭建属于自己的网站(站长教你搭建属于自己的网站是什么)

每个人都希望可以有自己的网站,因为那样高端大气上档次,低调奢华有内涵,尤其是公司用户,一般会有自己的网站。而个人呢,也可以搭建自己的网站博客,论坛等,但是一般个人都是搭建博客的。好了,那么下面站长教你...

微信公众号开发出现 cURL error 60: SSL certificate problem ssl证书

在phpstudy的环境下如果出现这样的报错cURLerror60:SSLcertificateproblem:unabletogetlocalissuercertificat...

【网络安全】关于PHP Study nginx解析高危漏洞的预警通报

网络安全近日,山石网科安全研究院监测发现PHPStudyWindows最新版本存在nginx解析漏洞,可以造成任意代码执行。一、漏洞情况phpStudy是一个PHP调试环境的程序集成包,该程序包集成...

PHP 环境 搭建教程(php环境搭建教程linux)

PHP是一种编程语言,很多网站都用PHP语言编写,我们有时候需要测试一个网站,就需要PHP环境才能运行,又要安装Apache、又要安装MySQL……真的非常麻烦。其实我们可以使用PHP集成...

黑客搭建钓鱼平台,手把手教你如何钓鱼?

跨站脚本攻击XSS:通过HTML注入篡改了网页,插入了恶意的脚本,从而用户浏览网页时,控制用户浏览器的一种攻击那么,我们搭建一个XSS钓鱼平台吧,注意:这个平台仅用于学习和测试,小伙伴们不要动有坏心思...

php源码网站搭建方法和过程(php网站源码完整)

web网站是我们上网的窗口,而网站是如何搭建的呢?今天我们来做一个介绍,以php代码为例来进行介绍(后续会介绍一下java代码搭建,如果想要我这里涉及的工具或源码请私信我)。1、首先你需要去网上下载你...

使用VS Code调试PhpStudy环境里的代码

最近几个月把所有项目都迁过来VSCode了(除了因为Unity调试问题反而用回了VisualStudio),PHP也就抛弃了最强的PhpStorm。这段时间抽空在帮朋友处理PHP项目,然...

phpstudy搭建PHP+Mysql服务(用phpstudy搭建服务器)

PHP是一种创建动态交互性站点的强有力的服务器端脚本语言。PHP是免费的,并且使用非常广泛。同时,对于像微软ASP这样的竞争者来说,PHP无疑是另一种高效率的选项。(1)PHP环境搭建使用V...

Windows安装phpstudy(Windows安装mysql)

说明:phpstudy是一个PHP+MySQL+Apache的集成环境,可以减少单独部署各个所需软件的麻烦,以及更加方便地切换版本。phpenv、wamp等软件的作用一样。由于环境的不同,安装过程中可...

phpstudy安装及简单使用教程(phpstudy安装教程详解)

phpstudy前不久爆出有后门,我的看法是,去看下是哪个版本有后门,为啥会有后门,怎么解决掉这个后门,而不是听到后门就弃用了。毕竟phpstudy绿色安装,配置简单,多版本融合,真香。前言:关于开发...

如何对dedeCMS的开源程序进行二次开发

二次开发,简单的说就是在现有的软件上进行定制修改,功能的扩展,然后达到自己想要的功能和效果,一般来说都不会改变原有系统的内核。为了让更多人了解二次开发,并更方便的了解DedeCMS的二次开发,下面将会...

mysql基础问题三问(底层逻辑;正在执行;日志观察)

背景:经常面试会遇到且实际工作中也会应用到的三个场景:目录:一.mysql查询时的底层原理是什么?二.如何查看正在执行的mysql语句?三.如何观察mysql运行过程中的日志信息?-----...

取消回复欢迎 发表评论: