赞
踩
原文地址:MySQL面试常见题目(四)
1、MySQL有哪几种锁?
按锁粒度划分:
表锁:开销小,加锁快,锁定力度大,锁冲突概率高,并发度最低,不出现死锁。
行锁:开销大,加锁慢,会出现死锁,发生锁冲突概率低,并发程度高。
页锁:加锁速度和锁定粒度介于表锁和行锁,会出现死锁,并发程度一般。
2、hash索引和B+树的区别?
B+树可进行范围查询,hash索引不能。
B+树支持联合索引的最左原则,hash索引不支持。
B+树支持order by排序,hash索引不支持。
hash索引在等值查询上的效率比B+树高。
B+树使用like模糊查询时,like后面(如%开头)可起到优化作用,hash索引不支持模糊查询。
3、MySQL的内连接、左连接、右连接的区别?
innor join 在两张表进行连接查询时,只保留两张表中完全匹配的结果集。
left join 在两张表进行连接查询时,即使右表无匹配项,也会返回左表全部行。
right join 在两张表进行连接查询时,即使左表无匹配项,也会返回右表全部行。
4、MySQL有关权限的表?
user权限表:记录允许连接到服务器的用户账号信息,里面的权限是全局级的。
db权限表:记录各个账号在各个数据库上的操作权限。
table_priv权限表:记录数据表级别的操作权限。
columns_priv权限表:记录数据列级别的操作权限。
host权限表:配合db权限表对给定主机上的数据库级别的操作权限做更细致的控制,host权限表不受grant和revoke语句的影响。
5、InnoDB四大特性?
插入缓冲(insert buffer)。
二次写(double write)。
自适应哈希索引(ahi)。
预读(read ahead)。
6、MySQL的binlog有几种录入方式?区别在哪里?
statement,每一条会修改数据的SQL都会记录在binlog中,不需要记录每一行数据的变化,减少binlog日志量,节约IO,提高性能,由于SQL的执行是有上下文的,因此在保存SQL的时候需保存相关信息,同时还有一些使用函数之类的语句是无法被记录和复刻的。
row,不记录SQL上下文信息,仅保存那条数据被修改,记录单元为每一行数据的改动,基本上是可以全部记录下来,但是由于很多操作会导致大量的行同时被改动(如 alert table),因此这种方式的文件保存信息太多,日志量太大。
mixed,相对比较折中的方案,普通操作使用statement记录,当无法使用statement时,使用row记录日志。
7、索引的优缺点?
优点:
唯一索引可保证数据库表中每一行数据的唯一性。
索引可加快数据查询速度,减少查询时间。
缺点:
创建和维护索引需消耗时间。
索引需占物理空间,除数据表占用数据空间之外,索引还需占用一定物理空间。
表中数据进行增删改时,索引也需要动态维护。
8、索引有哪几种类型?
主键索引:数据列不允许重复,不允许出现NULL值,一表一主键。
唯一索引:数据列不允许重复,允许出现NULL值,一表多唯一。
普通索引:基础索引类型,无唯一性限制,允许出现NULL值。
全文索引:搜索引擎使用的技术,对文本的内容进行分词、搜索。
覆盖索引:查询列要被所建的索引覆盖,不必读取数据行。
组合索引:多列值组成一个索引,用于组合搜索,效率大于索引合并。
9、回表了解么?
二级索引无法直接查询所有列的数据,所以通过二级索引查询到的聚簇索引后, 再查询到想要的数据,这种通过二级索引查询出来的过程叫做回表。
至此,本次分享就结束了,后期会慢慢补充的。
以上仅为个人观点,不一定准确,能帮到各位那是最好的。
好啦,到这里本文就结束了,喜欢的话就来个三连击吧。
扫码关注公众号,获取更多优质内容。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。