MySQL面试常见题目(四)

原文地址:MySQL面试常见题目(四)

1、MySQL有哪几种锁?

按锁粒度划分:

  1. 表锁:开销小,加锁快,锁定力度大,锁冲突概率高,并发度最低,不出现死锁。

  2. 行锁:开销大,加锁慢,会出现死锁,发生锁冲突概率低,并发程度高。

  3. 页锁:加锁速度和锁定粒度介于表锁和行锁,会出现死锁,并发程度一般。

2、hash索引和B+树的区别?

  1. B+树可进行范围查询,hash索引不能。

  2. B+树支持联合索引的最左原则,hash索引不支持。

  3. B+树支持order by排序,hash索引不支持。

  4. hash索引在等值查询上的效率比B+树高。

  5. B+树使用like模糊查询时,like后面(如%开头)可起到优化作用,hash索引不支持模糊查询。

3、MySQL的内连接、左连接、右连接的区别?

  1. innor join 在两张表进行连接查询时,只保留两张表中完全匹配的结果集。

  2. left join 在两张表进行连接查询时,即使右表无匹配项,也会返回左表全部行。

  3. right join 在两张表进行连接查询时,即使左表无匹配项,也会返回右表全部行。

4、MySQL有关权限的表?

  1. user权限表:记录允许连接到服务器的用户账号信息,里面的权限是全局级的。

  2. db权限表:记录各个账号在各个数据库上的操作权限。

  3. table_priv权限表:记录数据表级别的操作权限。

  4. columns_priv权限表:记录数据列级别的操作权限。

  5. host权限表:配合db权限表对给定主机上的数据库级别的操作权限做更细致的控制,host权限表不受grant和revoke语句的影响。

5、InnoDB四大特性?

  1. 插入缓冲(insert buffer)。

  2. 二次写(double write)。

  3. 自适应哈希索引(ahi)。

  4. 预读(read ahead)。

6、MySQL的binlog有几种录入方式?区别在哪里?

  1. statement,每一条会修改数据的SQL都会记录在binlog中,不需要记录每一行数据的变化,减少binlog日志量,节约IO,提高性能,由于SQL的执行是有上下文的,因此在保存SQL的时候需保存相关信息,同时还有一些使用函数之类的语句是无法被记录和复刻的。

  2. row,不记录SQL上下文信息,仅保存那条数据被修改,记录单元为每一行数据的改动,基本上是可以全部记录下来,但是由于很多操作会导致大量的行同时被改动(如 alert table),因此这种方式的文件保存信息太多,日志量太大。

  3. mixed,相对比较折中的方案,普通操作使用statement记录,当无法使用statement时,使用row记录日志。

7、索引的优缺点?

优点:

  1. 唯一索引可保证数据库表中每一行数据的唯一性。

  2. 索引可加快数据查询速度,减少查询时间。

缺点:

  1. 创建和维护索引需消耗时间。

  2. 索引需占物理空间,除数据表占用数据空间之外,索引还需占用一定物理空间。

  3. 表中数据进行增删改时,索引也需要动态维护。

8、索引有哪几种类型?

  1. 主键索引:数据列不允许重复,不允许出现NULL值,一表一主键。

  2. 唯一索引:数据列不允许重复,允许出现NULL值,一表多唯一。

  3. 普通索引:基础索引类型,无唯一性限制,允许出现NULL值。

  4. 全文索引:搜索引擎使用的技术,对文本的内容进行分词、搜索。

  5. 覆盖索引:查询列要被所建的索引覆盖,不必读取数据行。

  6. 组合索引:多列值组成一个索引,用于组合搜索,效率大于索引合并。

9、回表了解么?

二级索引无法直接查询所有列的数据,所以通过二级索引查询到的聚簇索引后, 再查询到想要的数据,这种通过二级索引查询出来的过程叫做回表。

至此,本次分享就结束了,后期会慢慢补充的。

以上仅为个人观点,不一定准确,能帮到各位那是最好的。

好啦,到这里本文就结束了,喜欢的话就来个三连击吧。

扫码关注公众号,获取更多优质内容。 

 

猜你喜欢

转载自blog.csdn.net/luyaran/article/details/121177726