面试题总结(五)mysql
1.说说自己对于 MySQL 常见的两种存储引擎:MyISAM与InnoDB的理解
关于二者的对比与总结:
1. count运算上的区别:因为MyISAM缓存有表meta-data(行数等),因此在做COUNT(*)时对于一个结构很好
的查询是不需要消耗多少资源的。而对于InnoDB来说,则没有这种缓存。
2. 是否支持事务和崩溃后的安全恢复: MyISAM 强调的是性能,每次查询具有原子性,其执行数度比InnoDB类型
更快,但是不提供事务支持。但是InnoDB 提供事务支持事务,外部键等高级数据库功能。 具有事务
(commit)、回滚(rollback)和崩溃修复能力(crash recovery capabilities)的事务安全(transaction-safe (ACID
compliant))型表。
3. 是否支持外键: MyISAM不支持,而InnoDB支持。
MyISAM更适合读密集的表,而InnoDB更适合写密集的的表。 在数据库做主从分离的情况下,经常选择MyISAM作
为主库的存储引擎。 一般来说,如果需要事务支持,并且有较高的并发读取频率(MyISAM的表锁的粒度太大,所以
当该表写并发量较高时,要等待的查询就会很多了),InnoDB是不错的选择。如果你的数据量很大(MyISAM支持压
缩特性可以减少磁盘的空间占用),而且不需要支持事务时,MyISAM是最好的选择。
2.数据库索引了解吗?
- 为什么要使用索引
- 为什么不对所有列建立索引
- 索引是如何提高查询速度的
- 使用索引注意事项
- Mysql索引主要使用的两种数据结构
- MyISAM 和 InnoDB实现BTree索引方式的区别
- 覆盖索引介绍
- 什么是覆盖索引
- 覆盖索引使用实例
- 使用索引的3个原则
3.为什么索引能提高查询速度?