数据库相关面试
- MySQL性能如何进行优化?
- MySQL慢查询的优化方式?
- 索引有几种类型?
- 讲一讲MySQL中的聚集索引,非聚集索引以及索引结构?
- 索引有几种扫描方式?
- 数据库中的索引应该如何使用?应该在何时使用?
- union和union all有什么区别?
- innodb引擎和myisam引擎的区别?
- MySQL有几种隔离级别,默认的隔离级别是什么,讲一讲实现原理?
- MySQL数据库中虚读和幻读是什么意思?发生在什么地方?
- MySQL的事务隔离级别?
- 讲一讲数据库中的的B树,B+树以及红黑树?
- 讲一讲MySQL数据库中各种树的特性?
- 数据库中的分页查询是如何分页的?怎么实现的?
- 讲一讲数据库中的执行计划?
- 讲一讲count(1)和count(*)的使用区别?
- 举例说明SQL的基本优化方式?
- 讲一讲MVCC和事务隔离级别的关系?
- 讲一讲MySQL中的间隙锁和行锁的基本使用?
- 讲一讲唯一索引和普通索引的区别中的changeBuffer?
- 讲一讲数据库中的页分裂和页合并?
- MySQL行锁的最大并发数?
- MySQL中有哪几种锁?
- 表级锁: 开销小,加锁快. 不会出现死锁. 锁的粒度大,发生锁冲突的概率最高,并发度最低
- 行级锁: 开销大,加锁慢. 会出现死锁. 锁的粒度小,发生锁冲突的概率最低,并发度最高
- 页面锁: 开锁和加锁时间介于表锁和行锁之间,会出现死锁. 锁的粒度介于表锁和行锁之间,并发度一般
- MySQL中有哪些不同的表?
- MyISAM
- Heap
- Merge
- InnoDB
- ISAM
- MySQL数据库中MyISAM和InnoDB的区别?
- MyISAM:
- 不支持事务.每次查询都是原子的
- 支持表级锁,每次操作都是对整个表加锁
- 存储表的总行数
- 一个MyISAM表由三个文件组成: 索引文件,表结构文件和数据文件
- 采用非聚集索引: 索引文件的数据域存储指向数据文件的指针.辅助索引和主索引基本一致,但是辅助索引不用保证唯一性
- InnoDB:
- 支持ACID事务,支持事务的四种隔离级别
- 支持行级锁和外键约束,可以支持写并发
- 不存储总行数
- 一个InnoDB存储引擎可以存储在一个表空间,共享一个表空间,表大小不受操作系统控制,一个表可能分布在多个文件里.一个InnoDB存储引擎也可以存储在多个表空间,设置为独立表空,表大小受操作系统文件大小限制,一般为2G,受操作系统文件大小的限制
- 主键索引采用聚集索引:索引的数据域存储数据本身.辅索引的数据域存储主键的值.这样从辅索引查找数据,需要首先通过辅索引主键值,然后访问主索引.推荐使用自增主键,防止插入数据时,为了维持B+树结构,文件的大幅调整
- MySQL中InnoDB支持的四种事务隔离级别:
- read uncommitted : 读未提交
- read committed : 不可重复读
- repeatable read : 可重复读
- serializable : 串行化
- CHAR和VARCHAR的区别?
- CHAR类型和VARCHAR类型在存储和检索查询方面存在区别
- CHAR列长度固定为创建表时声明的长度,长度范围为1到255.CHAR值存储时,使用空格填充到特定的长度,检索CHAR值需要删除尾随的空格