持续更新 2021大厂技术面100道MySQL经典面试题分享( 二 )


53. 组合索引是什么?为什么需要注意组合索引中的顺序?
组合索引,用户可以在多个列上建立索引,这种索引叫做组合索引 。因为引擎中的索引策略的最左原则,所以需要注意组合索引中的顺序 。
54. 什么是数据库事务?
数据库事务(简称:事务),是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位 。
55. 隔离级别与锁的关系
回答这个问题,可以先阐述四种隔离级别,再阐述它们的实现原理 。隔离级别就是依赖锁和MVCC实现的 。
56. 按照锁的粒度分,数据库锁有哪些呢?锁机制与锁算法
57. 从锁的类别角度讲,MySQL都有哪些锁呢?
从锁的类别上来讲,有共享锁和排他锁 。
58. MySQL中引擎的行锁是怎么实现的?
基于索引来完成行锁的 。
select * from t where id = 666 for update;
for可以根据条件来完成行锁锁定,并且 id 是有索引键的列,如果 id 不是索引键那么将实行表锁 。
59. 什么是死锁?怎么解决?
死锁是指两个或多个事务在同一资源上相互占用,并请求锁定对方的资源,从而导致恶性循环的现象 。看图形象一点,如下:
死锁有四个必要条件:互斥条件,请求和保持条件,环路等待条件,不剥夺条件 。解决死锁思路,一般就是切断环路,尽量避免并发形成环路 。
60. 为什么要使用视图?什么是视图?
为什么要使用视图?
为了提高复杂SQL语句的复用性和表操作的安全性,MySQL数据库管理系统提供了视图特性 。
什么是视图?
【持续更新2021大厂技术面100道MySQL经典面试题分享】视图是一个虚拟的表,是一个表中的数据经过某种筛选后的显示方式,视图由一个预定义的查询语句组成 。
61. 视图有哪些特点?哪些使用场景?
视图特点:
视图用途: 简化sql查询,提高开发效率,兼容老的表结构 。
视图的常见使用场景:
62. 视图的优点,缺点,讲一下?63. count(1)、count(*) 与 count(列名) 的区别?64. 什么是游标?
游标提供了一种对从表中检索出的数据进行操作的灵活手段,就本质而言,游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制 。
65. 什么是存储过程?有哪些优缺点?
存储过程,就是一些编译好了的SQL语句,这些SQL语句代码像一个方法一样实现一些功能(对单表或多表的增删改查),然后给这些代码块取一个名字,在用到这个功能的时候调用即可 。
优点:
缺点:
66. 什么是触发器?触发器的使用场景有哪些?
触发器,指一段代码,当触发某个事件时,自动执行这些代码 。
使用场景:
67. MySQL中都有哪些触发器?
MySQL 数据库中有六种触发器:
68. 超键、候选键、主键、外键分别是什么?69. SQL 约束有哪几种呢?70. 谈谈六种关联查询,使用场景 。71. (50)中50的涵义
字段最多存放 50 个字符 如 (50) 和 (200) 存储 “jay” 字符串所占空间是一样的,后者在排序时会消耗更多内存
72. mysql中int(20)和char(20)以及(20)的区别73. drop、与的区别
74. UNION与UNION ALL的区别?75. SQL的生命周期?76. 一条Sql的执行顺序?
77. 列值为NULL时,查询是否会用到索引?
列值为NULL也是可以走索引的 计划对列进行索引,应尽量避免把它设置为可空,因为这会让 MySQL 难以优化引用了可空列的查询,同时增加了引擎的复杂度
78. 关心过业务系统里面的sql耗时吗?统计过慢查询吗?对慢查询都怎么优化过?79. 主键使用自增ID还是UUID,为什么?