前几天,我朋友的他换工作了。 我以前在网上疯狂地找面试问题和资料。 当他得到大厂商的报价时,整理了这10篇Mymsql问题资料,胁迫获利后发给了他,所以今天要和大家分享。
1. MySQL支持哪些存储引擎?
【参考答案】
MySQL支持的存储引擎主要有四种。
)1)InnoDB支持事务,行级锁和外键是事务型数据库的首选引擎。 MySQL5.5.5或更高版本的默认存储引擎;
)2)MyISAM插入,查询速度快,但不支持事务。 MySQL5.5.5或更低版本的默认存储引擎;
)3)Memory基于散列的,存储在内存中,有助于临时表。 典型的APP部署方案是临时存储数据,数据量小,不需要较高的数据安全性
)4)Archive支持高并发插入操作,但本身并不安全。 典型的APP应用方案:使用Archive存储归档数据,包括日志信息记录。
2. MySQL索引的基础是什么结构? 选择这个结构的优点是什么?【参考答案】
MySQL索引的基础采用的是b树的存储结构。 采用b树的理由:
)索引文件很大,无法全部保存在内存中,只能保存在磁盘上,所以索引的数据结构尽量减少查找过程中对磁盘I/O的访问次数。
3 .为什么不选择b树?【参考答案】
b树的所有Data域都位于叶节点中,其馀节点用于索引,b树在每个索引节点上都有一个Data域,并且b树的所有叶的节点之间都有一个链指针。 以这种方式遍历叶节点可以获得所有数据,并支持查询区分。 数据库中基于作用域的查询非常频繁,但Web树不支持这种遍历操作。
4 .为什么不选择红黑树?【参考答案】
红黑树往往高度过大,磁盘I/o读写过于频繁,效率低下。 另外,逻辑上接近的节点(父子)在物理上很远,可能无法利用局部原理。
5. InnoDB和MyISAM的区别是什么呢?【参考答案】
InnoDB支持事务MyISAM不支持事物,它强调性能和提高查询速度。InnoDB支持行级锁和表级锁,但MyISAM只支持表级锁InnoDB支持MVCC,而MyISAM不支持MVCC; InnoDB支持外键,MyISAM不支持外键; 以前版本的InnoDB不支持全文索引。 MySQL5.6及更高版本支持全文索引。 在MyISAM中受支持。 InnoDB不保存表中的具体行数。 count ) )时,扫描整个表格计算有多少行。 MyISAM内置有计数器(count ) )时,从计数器直接读取。 注意:在MySQL中,索引是在存储引擎层实现的,不同的存储引擎具有不同的索引行为。 此外,即使不同的存储引擎支持相同类型的索引,底层实现也可能不同。 在这些存储引擎中,InnoDB使用最广泛,许多问题也以此为中心展开。
6. MySQL支持的索引类型是什么?【参考答案】
普通索引:由表中的普通列构建的索引。 没有限制;唯一索引:唯一索引列的值必须是唯一的,但允许为空值。 对于组合索引,列值组合必须是唯一的。主键索引:基于主键创建索引,是一个特殊的唯一索引,不允许重复或为空。全文索引:一种通过创建倒排索引来快速匹配文档的方法。 MySQL 5.7.6及更早版本仅支持英语,MySQL 5.7.6及更高版本支持中文;组合索引:也称为联合索引。 通过组合多个列构建的索引。 多列值不能为空值。 可以在创建表时指定表,也可以修改表的结构。 7 .你知道集合索引和非集合索引吗?【参考答案】
聚集索引 (clustered index)也称为主索引,键值的逻辑顺序决定表中相应行的物理顺序。 由于真正的数据数据只有一种排序方法,因此一个表中只有一个聚簇索引。非聚集索引 (secondary index)也称为辅助索引、普通索引,其逻辑顺序与磁盘上行链路的物理存储顺序不同,一个表可以包含多个非聚合索引。 注:聚合索引/非聚合索引是一种存储数据的方法,而不是索引类型。 在InnoDB中,它们有非常重要的区别。 如果要使用非聚合索引进行搜索,请搜索主键值,因为聚合索引的叶节点的data域包含完整的数据记录,而非聚合索引的叶节点的data域包含主键值这称为回表查询。
8 .索引有什么缺点
?【参考答案】
索引需要额外的占用物理空间,索引越多,所以空间越多;当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,降低了数据的写速度;9. 索引什么时候会失效?【参考答案】
索引失效通常有以下原因:
条件中有 or;like 查询(以 % 开头);如果列类型是字符串,那一定要在条件中将数据使用引号引用起来,否则不使用索引;对列进行函数运算(如 where md5 (password) = “xxxx”);负向查询条件会导致无法使用索引,比如 NOT IN,NOT LIKE,!= 等;对于联合索引,不是使用的第一部分 (第一个),则不会使用索引(最左匹配);如果 mysql 评估使用全表扫描要比使用索引快,则不使用索引;。10. 为什么不选择哈希表?【参考答案】
哈希表只适用与查找等值查询, 不能支持区分条件(大于小于查询)、模糊查询等;hash 索引虽然在等值查询上较快,但是不稳定,性能不可预测,当某个键值存在大量重复的时候,发生 hash 碰撞,此时效率可能极差。而 B + 树的查询效率比较稳定。
——————————————————————
资料领取方式:点赞+收藏后,私聊小编:资料,免费领取看完记得点赞+收藏哦!在这里也祝愿读者们都可以拿到自己心仪的offer哦!