Appearance
1.MySQL的数据存储一定是基于硬盘的吗?
存储引擎设置为MEMORY,即变成内存表。
2.InnoDB和MyISAM有什么区别?
InnoDB支持事务、外键和行级锁;InnoDB清空是逐行清空,MyISAM是删除表再新建。
3.什么是脏读、幻读、不可重复读?
- 脏读:读到了其他事务还没有提交的数据。
- 不可重复读:对某数据进行读取过程中,有其他事务对数据进行了修改(UPDATE、DELETE),导致第二次读取的结果不同。
- 幻读:事务在做范围查询过程中,有另外一个事务对范围内新增或删除了记录(INSERT、DELETE),导致范围查询的结果条数不一致。
4.谈谈索引的作用和优化?
- 索引可以加快检索速度,避免全表扫描。
- 前缀索引,特别是TEXT和BLOG类型的字段,只检索前面几个字符,提高检索速度
- 尽量使用数据量小的充当索引
- 内容少,查询多可以多建索引
- 索引会占用磁盘空间,也会降低检索速度。
5.InnoDB为什么使用B+树实现索引?
B+树呢这哥们,节点大小固定,方便磁盘预读;叶子节点存储数据,并且是双向链表结构,方便范围查询,并且叶子节点按照关键字的大小排序,提高了查询效率;而非叶子节点可以存储更多的索引,因为是指针连接所以方便范围查询和倒序查询;