当前位置:网站首页>毕业季--数据库常见面试题
毕业季--数据库常见面试题
2022-07-16 19:47:00 【编程千纸鹤】
mysql的常见数据引擎(存储引擎)和区别
mysql中数据引擎有很多,我们常见的是myisam和innodb。要注意存储引擎和存储过程的区别。
- myisam是早期mysql默认的存储引擎。他会把表分成myd,myi,frm文件。而innodb是mysql5.5后默认的存储引擎,他把表里面的数据文件和索引文件进行了合并,存储到了聚簇索引里面。
- myisam不支持外键,表里面不能创建外键,innodb可以创建外键。
- myisam不支持事务,innodb支持事务。
- myisam只能支持表锁,innodb支持的锁比较多,行锁,间隙锁,表锁
- myisam应用在对速度和性能要求高的场景下面,不支持并发操作,innodb更注重于数据的完整性。
mysql的索引,聚集索引,回表,覆盖索引,索引下推,索引重排,最左匹配
mysql的数据存储在磁盘上面,为了便于数据的检索,mysql提供了一种快速查找数据的结构来方便我们查找数据。这个数据结构是以树状存储的。这个树状的存储结构即是索引。mysql的索引采用的是b+树。最好能说出b+树和平衡二叉查找树的区别,以及和b树的区别。
聚集索引:一个表里面只能有一个聚集索引。在聚集索引的叶子节点上要存储具体的行数据信息。一般情况下,mysql会为这个主键创建聚集索引。
非聚集索引:一个表里面可以有多个非聚集索引,针对一般字段创建的索引就是非聚集索引,非聚集索引树上存储了索引信息,然后在叶子节点上存储了该索引对应的id信息。
回表:当我们查询mysql表中的数据时,我们通过非聚集索引查到了该数据对应的id值后,又关联到聚集索引上去根据id查询改行数据,这个过程就是回表。
覆盖索引:当我们写的sql语句查询的字段刚好是索引的字段以及主键,那么我们就可以避免回表查,这个操作就叫覆盖索引。
最左匹配:当我们针对两列创建了一个组合索引,那么我们必须在查询的时候使用组合索引中最左边的列作为查询条件,该组合索引才能生效。否则这个组合索引是无效的。
索引下推:当我们根据两个以上的条件进行sql查询的时候,mysql会先根据一个条件进行查询,然后找到所有满足第一个条件的id值然后再回表查,查出数据后,在进行第二个条件的判断。这种没有使用到索引下推,他的问题是回表的次数可能很多。索引下推后,流程是,先根据非聚集索引查询满足两个条件的数据的id值,然后再根据id到聚集索引里面查询数据。这样回表的次数就会减少。
索引重排:由于改变了数据,导致索引树发生了重大的调整,从而影响到了修改的速度,这个就是索引重排,我们应该尽量的避免索引重排。我们使用mysql时应该尽量的使用自增主键,这样可以尽量的减少索引重排的几率,如果使用uuid这样的数据作为主键,就会导致索引重排的几率加大。
什么是数据库的事务,什么是脏读,不可重复读,幻读。

事务有四个特性:1.原子性,2.隔离性,3.一致性,4.持久性。原子性指的就是事务里面执行的增删改操作是一个原子操作,要么全部成功,要么全部失败。隔离性指的是两个事务之间同时操作数据库的时候有相应的隔离级别,可以限制事务与事务之间数据的影响。一致性指的是事务操作前和事务操作后数据必须是正确的。持久性指的是事务做完操作之后,数据就别永久保存了,不会因为一些原因导致数据丢失。事务的这些特性会保证我们项目中数据的安全,不会因为一些异常导致数据出问题。
事务的隔离级别有四个:1.未提交读,2.已提交读,3.可重复读,4.序列化。未提交读会引起脏读问题。脏读就是指一个事务插入数据后,还没有提交事务的情况下,其他的事务就可以读到该数据,这就是脏读问题。已提交读解决了脏读的问题,但是没有解决不可重复读的问题。不可重复读指的是一个事务读两次相同的数据,发现两次读到的数据是不一致的。因为中间有其他的事务修改这个数据。为了避免不可重复读的问题,我们可以把事务的隔离级别提高到可重复读的级别。可重复读解决了不可重复读的问题,但是有幻读的问题,幻读是指一个事务读到数据库里面没有一条数据,在他插入该数据的时候突然发现数据库里面已经有这个数据了。数据库提供了序列化读的隔离级别,可以解决幻读问题。隔离级别越高,那么数据库的性能就会越低。
如何提高mysql的sql执行效率
解决这个问题需要下面三个步骤:
找到执行效率低的sql语句。有两个手段,第一是通过慢查询日志。我们在mysql打开慢查询日志,这样执行慢的sql语句就会被记录到我们的日志文件中。第二是通过show processlist来实时观察mysql正在运行的sql语句。
分析sql语句运行效率低的原因.
mysql中提供了执行计划命令可以帮助我们观察一个sql语句执行时候经历了什么样的操作。比如用没有索引,回表了没有,索引下推了没有,我们都可以通过这个执行计划观察到。查看执行计划的命令是explain sql命令就可以了。通过explain的查询结果我们可以分析该sql语句是否使用到了索引,是否使用索引下推这些功能,然后针对性的进行性能的优化。
优化sql。最左匹配原则,避免使用like,like有可能会导致索引失效。避免使用or。尽量使用覆盖索引。 模型数空运最快,模糊查询,查询类型不匹配,字段上的函数运算,查询is null或者is not null,在字段上面做运算,都要尽量避免。
边栏推荐
- 机器学习实战运用:速刷牛客5道机器学习题目
- Downlink power distribution technology of synaesthesia integrated system
- Linux solves the problem of oracle:ora-12537: tns:connection closed
- Inventory of major RPA products at home and abroad
- What are the main RPA manufacturers in the current mainstream
- Move blog to CSDN
- 关于uni-cli项目管理uniapp编译包版本工具的使用总结
- Neutral energy optimization of transport layer triple handshake
- Network basic VLAN configuration (ENSP, Cisco)
- Cmu15445 (fall 2019) project 4 - logging & Recovery details
猜你喜欢

栓Q了,大厂被强制毕业,空窗一个月死背八股文,还好拿到了Offer

数字员工未来可期?盘点RPA在八大行业领域的应用案例

ES6 - map (), filter (), reduce (), foreach (), the most commonly used array methods,

Istio灰度发布:部署Bookinfo微服务项目

Application of Apache E8 industrial computer minipicecan card in Construction Robot

信息系统项目管理师必背核心考点(四十四)规划风险应对

Flutter is stuck in running gradle task 'assemblydebug' Solution of

Istio gray Publishing: deploy bookinfo microservice project

网络基础VlAN配置 Trunk技术(eNSP、Cisco)

RPA生态系统大揭秘,支撑RPA企业数十亿估值的生命本源
随机推荐
CONDA installation requirements Txt specified dependent package
985学生:为什么现在学校还在教C语言?| 文末送书
通信感知一体化关键技术与挑战
A risk assessment method of physical information leakage in classified places
MySQL 5.7.37数据库下载安装教程(Windows无需安装版)
容器内部查看服务状态报错:Failed to get D-Bus connection: Operation not permitted
今天去 OPPO 面试,被问麻了
Case analysis of building digital CRM in medical enterprises with low code
高性价比模型 TSM,用 2D 的成本达到 3D 的效果
ThoughtWorks现代企业架构框架白皮书 笔记
Flutter 卡在 Running Gradle task ‘assembleDebug‘... 的解决方法
蓝牙耳机哪个品牌降噪好?2022降噪耳机排行榜
Publication en niveaux de gris istio: déploiement du projet de microservice bookinfo
Today, I went to oppo for an interview and was asked numbly
Network infrastructure VLAN configuration trunk Technology (ENSP, Cisco)
Visual Studio 生产环境配置方案:SlowCheetah
PyQt5-文件对话框(QFileDialog)
ICCV 2021 的最佳论文模型 Swin Transformer 终于对视频下手了!
Application of Apache abox-700 industrial computer minipicecan card in electric power inspection robot
剑指offer 44【数字序列中的某一位】【100%,100%】