面试-mysql常见问题

news/2025/2/21 15:55:25/

1.mysql的MVCC机制是什么?

MVCC 就是多版本并发版本控制器,是Mysql 解决读写冲突的解决方案。通过往表上增加两到三个隐藏字段,undo日志及ReadView 实现。
我们可以通过两种组合解决并发冲突
MVCC+ 悲观锁方式:MVCC解决读写冲突,悲观锁解决写写冲突
MVCC+乐观锁方式:MVCC解决读写冲突,乐观锁解决写写冲突

原理:

三个隐藏字段:
(DB_TRX_ID) 记录这条记录最后一次修改的事务ID
(DB_ROLL_PTR)回滚指针,指向这条记录的上一个版本
(DB_ROW_ID)自增主键,如果没有设置主键,就会产生这个字段作为隐藏主键

undo 日志分为两种:

insert undo log:插入日志
update undo log:修改日志

read view 读视图

事务在进行快照读的时候产生的读视图,在事务执行快照读的时候,会生成数据库当前的一个快照,并为这个事务分配一个ID,ID是自增的,最新的事务ID 一定是最大的。readview 读视图上记录了事务列表中
最小的事务ID,
下一个要分配的新事务ID,
当前活跃的事务ID列表(活跃事务就是操作了还没提交的事务)。

当并发产生读写时,判断下读视图上最小的事务ID是否小于表记录上的事务ID(DB_TRX_ID),如果是小于的,说明这个事务是在修改之后产生的,那么这条记录就可以被这个读视图查询到,如果不小于,就要判断这个表上的事务ID(DB_TRX_ID) 是否大于等于下一个要分配的最新事务ID,如果大于了这个新事务的ID,那么说明这个数据是不可见的,否则就判断表上记录的事务ID(DB_TRX_ID) 是否存在在活跃事务ID列表中,存在说明事务还没提交,这个数据不可被读取,不存在,说明事务已经提交,可以被读取。

当前表中记录的这行数据是不可被读取的时候,就会通过这个表的回滚指针去undo日志中找到这个记录的上一个版本放在read view 中给用户读取。

2.事务隔离级别有哪些?

  • 未提交读;
  • 提交读;
  • 重复读;
  • 串行化

3. 数据库的三大范式是什么?

  • 第一范式:字段具有原子性,不可再分(每一个列只有一个值)
  • 第二范式:行数据的唯一性,也就是主键(每一行都能区分)
  • 第三范式:要求表不包含其他表的非主键信息(每一个表都不冗余多余字段)

4.索引有哪些种类

  • 普通索引:针对数据库表建的索引
  • 唯一索引:与普通索引类似,但是必须是全表唯一,可以为空
  • 主键索引:创建主键是同时创建,全表唯一,不可为空
  • 组合索引:将表中多个字段联合在一起作为一个组合索引

5.你一般都怎么优化查询

  • select 查询时只查询需要用的字段
  • 多表查询时,避免复杂的关联查询,通过单表查询再in 另外的表
  • 为查询条件增加索引,索引也不是随便加,需要找到辨识度高的使用频次高的字段加上索引,如手机号,订单号等。
  • select 查询条件优先查询索引,减少like 等让索引失效的操作。
  • 排序优化,如果能通过有序索引进行排序是最好的,如果不能,mysql 提供了存储引擎可以再内存中进行排序:
    1.取出满足条件的需要用于排序的字段及行指针,在内存中排序好后,根据指针信息取得客户端其他字段的数据,返回给客户端(内存占用小,耗时长)
    2.一次性取出满足条件的数据,将这些数全部放到内存中,将需要排序的字段进行排序,最后将排序号的结果返回给客户端(内存占用大,耗时短)

http://www.ppmy.cn/news/266049.html

相关文章

由世纪互联运营的Microsoft Teams携创新功能正式发布,助力合作伙伴生态共赢

2023年4月18日,北京——由世纪互联运营的Microsoft Teams推出一系列创新功能,围绕企业数字核心能力,赋能数字化协作空间、智能化协作体验、整合生产力工具和工作流、安全合规、构建团队文化等五大落地场景,这将进一步帮助中国市场…

JavaSE_day49-50(XML,DTD约束,schema约束,解析XML,DOM实现解析XML文件)

注意&#xff1a;学习下面内容需要参考那个文档w3cschool&#xff08;学习Java资源&#xff09;&#xff0c;Gitee上传&#xff01; 1 Xml格式&#xff1a; <?xml version"1.0" encoding"UTF-8"?><!-- 这是注释--><Students><stude…

原材料涨价引发全LED显示屏全产业链价格上浮!

2020年尾&#xff0c;比寒冬更早到来的是一场酝酿已久的全产业链涨价风波。近来&#xff0c;相信众多迈普光彩LED显示屏人被朋友圈的涨价通知刷屏过&#xff0c;从PCB板材、灯珠、驱动IC&#xff0c;甚至胶水等LED显示屏基础原材料都陷入涨价潮…… 事实上&#xff0c;以PCB板…

LED灯珠的封装形式

LED灯珠的封装形式 成兴光根据不同的应用场合、不同的外形尺寸、散热方案和发光效果。将LED封装形式分为&#xff1a;引脚式、功率型封装、贴片式&#xff08;SMD&#xff09;、板上芯片直装式&#xff08;COB&#xff09;、Chip-LED、UVC金属、陶瓷封装等七个段落讲述。 &…

成兴光 | LED灯珠的封装形式

​成兴光根据不同的应用场合、不同的外形尺寸、散热方案和发光效果。将LED封装形式分为&#xff1a;引脚式、功率型封装、贴片式&#xff08;SMD&#xff09;、板上芯片直装式&#xff08;COB&#xff09;、Chip-LED、UVC金属、陶瓷封装等七个段落讲述。 &#xff08;1&#xf…

LED

一.启动文件&#xff1a; .text .global _start _start: ldr r0, 0x53000000 WATCHDOG寄存器地址 mov r1, #0x0 str r1, [r0] 写入0&#xff0c;禁止WATCHDOG&#xff0c;否则CPU会不…

点亮 LED

目录 知识要点 课程内容 基础学习 LED 灯基本知识 程序学习 cubeMX 中配置 GPIO 基本操作 HAL_GPIO_WritePin 函数讲解 程序流程 效果展示 进阶学习 三极管的通断特性 LED 的下拉电阻 硬件原理图上的限流电阻 课程总结 知识要点 LED 灯基本知识了解三极管的通断特…

全球与中国高亮度LED灯市场现状及未来发展趋势

2021年全球高亮度LED灯市场销售额达到了172.5亿美元&#xff0c;预计2028年将达到228亿美元&#xff0c;年复合增长率&#xff08;CAGR&#xff09;为4.0%&#xff08;2022-2028&#xff09;。地区层面来看&#xff0c;中国市场在过去几年变化较快&#xff0c;2021年市场规模为…