我们已经准备好了,你呢?

2024我们与您携手共赢,为您的企业形象保驾护航!

该层依次执行SQL的步骤为:

索引相关 3、MySQL为什么使用索引?

根本原因

扩张

4、索引的三种常见底层数据结构及其优缺点

三种常见的索引底层数据结构:哈希表、有序数组和搜索树。

5. 常见的索引类型有哪些以及它们如何工作?

根据叶子节点的内容,索引类型分为主键索引和非主键索引。

6、与B树索引的实现方式有什么不同? 7、为什么要设计B+树索引?

两个考虑因素:

为什么选择B+树:

8. 什么是覆盖指数和指数下推?

覆盖指数:

索引下推:

9. 哪些操作会导致索引失败? 10.与字符串加索引日志相关 11.什么是MySQL?

- 另一方面,假设某个业务的更新模式是写入后立即进行查询,那么即使满足条件,也会先记录更新,但因为会立即访问数据页,所以合并进程将立即被触发。这样,随机访问IO的数量并不会减少,反而会增加维护成本。

12、MySQL如何确定一行的扫描次数? 13. MySQL重做日志有什么区别?

MySQL 精选 60 道面试题(含答案)

14. 为什么需要重做日志? 15、为什么redo log具有crash-safe能力并且不可替代?

第一点:redo log可以保证能够判断哪些数据已经被flush,哪些数据还没有被flush

第二点:如果重做日志写入失败,则说明操作失败,事务无法提交。

16.当数据库崩溃时,如何恢复未刷新到内存的数据?

根据redo log和redo log的两阶段提交,未持久化数据分为几种情况:

17、重做日志如何写?

重做日志由两部分组成,即内存中的日志缓冲区(重做日志)和磁盘上的日志文件(重做日志文件)。

MySQL每次执行DML语句时,都会先将记录写入重做日志(用户空间),然后保存到内核空间的缓冲区OS-中。在稍后的某个时间点,它会一次性将多个操作记录写入重做日志文件。 (刷盘)。这种先写日志再写到磁盘的技术就是WAL。

MySQL 精选 60 道面试题(含答案)

可以发现写入重做日志文件的重做日志是由OS传输的。其实可以传递参数

配置时,参数值含义如下:

18、redo log的执行过程是怎样的?

我们看一下Redo log的执行过程。假设执行的SQL如下:

T 设置 a =1,其中 id =666

MySQL 精选 60 道面试题(含答案)

MySQL客户端向MySQL层发送请求语句T set a =1 where id =666。

MySQL层收到SQL请求后,对其进行分析、优化、执行等处理工作,并将生成的SQL执行计划发送给存储引擎层执行。

存储引擎层将a修改为1的操作记录到内存中。

记录到内存后,重做日志记录会被修改,会增加一行记录,其内容是需要在哪个数据页上进行哪些修改。

此后,事务状态设置为 ,表示事务已准备好提交。

MySQL层处理完事务后,会将事务的状态设置为,即提交事务。

重做日志收到事务提交请求后,会将刚刚写入内存的操作记录写入磁盘,从而完成整个日志记录过程。

19、什么是概念,起什么作用?能保证万无一失吗? 20. 什么是两阶段提交?

MySQL将重做日志的写入分为两步:和,中间穿插写入。这就是“两阶段提交”。

MySQL 精选 60 道面试题(含答案)

两阶段提交是为了保持两个状态逻辑上一致。用于在主机出现故障时恢复未更新的物理数据,并用于备份操作。两者本身是两个独立的实体。如果它们想要保持一致,就必须使用分布式事务解决方案进行处理。

为什么需要两阶段提交?

恢复数据时,如果状态为 ,则表示恢复成功,可以直接恢复数据;如果是,则需要查询对应的事务是否成功,并决定是否回滚或执行。

21. MySQL如何知道它已经完成?

一笔交易有完整的格式:

22.什么是WAL技术,它有什么优点?

WAL,中文全称是Write-Ahead,它的要点是日志先写入内存,再写入磁盘。 MySQL执行更新操作后,会在实际将数据写入磁盘之前记录日志。

优点是不需要每次操作都实时将数据写入磁盘。即使崩溃后,也可以通过重做日志进行恢复,因此可以快速响应SQL语句。

23.日志的三种格式

日志有三种格式

格式

每一条修改数据的SQL都会被记录在

行格式

不记录SQL语句上下文相关信息,只保存修改了哪条记录。

混合格式

其实就是和Row的结合。一般语句修改以某种格式保存。例如,如果某些函数无法完成主从复制操作,则以行格式保存。 MySQL会根据每条具体执行的SQL语句来区分记录的日志格式。

24.重做日志格式

MySQL 精选 60 道面试题(含答案)

重做日志(在内存中)由四个首尾相连的文件组成,它们是:、、、。

25. 一条可以执行得很快的SQL语句实际上执行得比预期慢得多。原因是什么?怎么解决呢?

原因:从大到小可以分为四种情况。

解决:

26. 数据页结构

一个数据页大致分为七个部分

数据相关

27、MySQL如何保证数据不丢失? 28. 如果不小心删除了数据怎么办?

DBA的核心工作是保证数据的完整性。必须首先采取预防措施。预防措施大概是通过以下几点:

29. drop和30. MySQL中有两个kill命令

杀不掉的原因

31.如何理解MySQL的读发送功能? 32、为什么MySQL的大表查询不会爆内存? 33. MySQL临时表的用法和特点 34. MySQL存储引擎简介(,,) 35. 我们已经同意了,那么还需要使用引擎吗? 36、如果数据库误操作,如何进行数据恢复?

如果数据库在某个时刻发生误操作,可以找到距离误操作最近的时间节点的bin log,重播到临时数据库中,然后选择误删除的数据节点恢复到在线数据库中。

主从备份相关 37、MySQL如何保证主从同步?

主从关系的建立:

MySQL主备切换流程:

一个事务的完整同步过程:

38. 什么是主备时延?

主备库执行同一个事务时存在时间差。主要原因有:

39、为什么会有多线程复制策略? 40、MySQL的并行策略有哪些? 41、MySQL的一主一从和一主多从有什么区别?

一主一从双M架构下,主从切换只需将客户端流量切换到备库即可;主从架构中,主备切换除了需要将客户端流量切换到备库之外,还需要将客户端流量切换到备库。需要将从库连接到新的主库上。

42、主数据库出现问题如何解决? 43、MySQL读写分离涉及到读过期问题的几种解决方案? 44、MySQL的并发连接和并发查询有什么区别?

性能相关

45、短时间内提高MySQL性能的方法 46、为什么MySQL的自增主键ID不连续? 47、为什么要用自增ID作为主键? 48.如何最快地复制表? 49. Grant 和flush 语句 50. 我应该使用分区表吗? 51.Join用法 52.MySQL有哪些自增ID?分别是什么场景? 53. MySQL内部Xid是如何生成的?

MySQL内部维护一个全局变量。每次执行一条语句(包括语句)时,都会给它赋值,然后这个变量加1。如果当前语句是该事务执行的第一条语句,MySQL也会同时将该值赋给该事务的Xid。

它是一个纯内存变量,重启后会被清除。所以你知道在同一个数据库实例中,不同事务的Xid可能是相同的。不过MySQL重启后会重新生成一个新文件,这就保证了同一个文件中Xid必须是唯一的。

锁相关 54.我们来谈谈MySQL的锁。 55. 什么是幻读?

同一个事务中,同一个范围的数据被查询了两次,第二次看到了第一次没有查询到的数据。

幻读发生的场景:

幻读引起的问题:

解决:

其他为什么系列

56、MySQL为什么会发抖? 57、为什么删除表后表文件大小仍保持不变? 58. Count(*)实现及各种计数的比较 59. 排序的内部原理 60. 如何高效使用MySQL显式随机消息

mysql> 从 t 计数(*)到@C;设置@Y1 = 地板(@C * rand());设置@Y2 = 地板(@C * rand());设置@Y3 = 地板(@C * rand());设置@Y3 = 地板(@C * rand()) ());Ymax = max(Y1,Y2,Y3)Ymin = min(Y1,Y2,Y3) t 限制 Ymin 的 id,(Ymax - Ymin)

二维码
扫一扫在手机端查看

本文链接:https://by928.com/7517.html     转载请注明出处和本文链接!请遵守 《网站协议》
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。

项目经理在线

我们已经准备好了,你呢?

2020我们与您携手共赢,为您的企业形象保驾护航!

在线客服
联系方式

热线电话

13761152229

上班时间

周一到周五

公司电话

二维码
微信
线