1.讲一讲mysql的引擎吧,你有什么了解?
2.MySQL为什么InnoDB是默认引擎?
3.说一下mysql的innodb与MyISAM的区别?
4.数据管理里,数据文件大体分成哪几种数据文件?
5.索引是什么?有什么好处?
6.讲讲索引的分类是什么?
7.MySQL聚簇索引和非聚簇索引的区别是什么?
8.如果聚簇索引的数据更新,它的存储要不要变化?
9.MySQL主键是聚簇索引吗?
10.什么字段适合当做主键?
1.讲一讲mysql的引擎吧,你有什么了解?
mysql 有两种数据库引擎一种是 MyISAM,一种是 InnoDB
MyISAM 发音为 “my-z[ei]m”;
InnoDB 发音为 “in-no-db”。
2.MySQL为什么InnoDB是默认引擎?
InnoDB引擎在事务支持、并发性能、崩溃恢复等方面具有优势,因此被MySQL选择为默认的存储引擎。
事务支持:InnoDB引擎提供了对事务的支持,可以进行ACID(原子性、一致性、隔离性、持久性)属性的操作。Myisam存储引擎是不支持事务的。
并发性能:InnoDB引擎采用了行级锁定的机制,Myisam存储引擎只支持表锁,锁的粒度比较大。
崩溃恢复:InnoDB引引擎通过 redolog 日志实现了崩溃恢复,保证数据的持久性和一致性。Myisam是不支持崩溃恢复的。
3.说一下mysql的innodb与MyISAM的区别?
4.数据管理里,数据文件大体分成哪几种数据文件?
我们每创建一个 database(数据库) 都会在 /var/lib/mysql/目录里面创建一个以 database 为名的目录,然后保存表结构和表数据的文件都会存放在这个目录里。
5.索引是什么?有什么好处?
索引类似于书籍的目录,可以减少扫描的数据量,提高查询效率。
如果查询的时候,没有用到索引就会全表扫描,这时候查询的时间复杂度是O(N)。
如果用到了索引,那么查询的时候,可以基于二分查找算法,通过索引快速定位到目标数据,mysql 索引的数据结构一般是 b+树,其搜索复杂度为O(logdN),其中 d 表示节点允许的最大子节点个数为 d 个。
6.讲讲索引的分类是什么?
具体还是要看javaguide。
7.MySQL聚簇索引和非聚簇索引的区别是什么?
无非是索引和数据有没有存放在一起。
8.如果聚簇索引的数据更新,它的存储要不要变化?
如果更新的数据是非索引数据,也就是普通的用户记录,那么存储结构是不会发生变化。
如果更新的数据是索引数据,那么存储结构是有变化的,因为要维护 b+树的有序性。
9.MySQL主键是聚簇索引吗?
看存储引擎。InnoDB是,MyISAME不是。
10.什么字段适合当做主键?
字段应该具有唯一性,不为空,具有自增的特性,不建议使用业务数据(订单号,学号之类的)。分布式的id有另外的方案,因为自增的特性保证不了。