写这篇文章的主要原因是
快速复习mysql知识点。主要是为了面试做准备,所以看到关键字还是不能快速回忆起相关知识的时候,说明这个知识点不熟或者忘了,再百度详细学习下就行了哈,这里只有关键字,想要详细学习的道友直接跳过。
写这篇文章的背景是
不知君有没有这种感受,很多时候面试的问题,好像曾经复习过但是却怎么都回答不上来或者说来说去都说不到关键的点。而在面试官认为回答不上来的都是不会。所以记录下这篇文章给自己复习所用,如果对你也有用,共勉 _
mysql中什么情况会导致自增主键不能连续?
- 唯一主键冲突
- 事务回滚
常用的存储引擎InnoDB和MyISAM有什么区别?
- innodb支持事务,行级锁,外键 ,主键查询性能高
- myisam支持fulltext类型全文索引,仅表锁,性能高
innodb 有哪些特性?
- 插入缓冲
- 两次写
- 自适应哈希索引
什么是覆盖索引?
- 索引上的信息足够满足查询请求。无需回到主键上取数据
并发事务会带来哪些问题?
- 脏读
- 修改丢失
- 不可重读读
- 幻读
什么是脏读和幻读?
- 脏读是一个事务在处理过程中读取了另外一个事务未提交的数据。
- 幻读是同一个事务内多次查询返回的结果集不一样(多了或者少了行记录)。
什么索引?
索引是一种能帮助mysql提交查询效率的数据结构
索引有哪些优缺点?
优点:检索速度,数据唯一性,加速表连接,减少分组和排序时间。
- 快速访问数据表中的特定信息,提交检索速度
- 创建唯一性索引,保证数据表中每一行数据唯一性
- 加速表与表之间的连接。
- 使用分组和排序进行数据检索,可以显著减少查询中分组和排序的时间。
缺点:
- 降低了更新表速度,更新数据同时还要更新索引文件
- 建立索引需要占用磁盘空间
注意事项:
- 短索引,提交查询速度,节省磁盘空间和i/o操作
- mysql查询只适用一个索引,如果where子句使用了索引,就尽量不使用排序和分组
- 不要在列上运算
- 不适用not in 和 <>操作