1.NOSQL和SQL的区别? 数据库三大范式是什么?
2.MySQL 怎么连表查询?MySQL如何避免重复插入数据? CHAR 和 VARCHAR有什么区别?varchar后面代表字节还是会字符?int(1) int(10) 在mysql有什么不同?Text数据类型可以无限大吗?IP地址如何在数据库里存储?
3. 说一下外键约束?MySQL的关键字in和exist?mysql中的一些基本函数,你知道哪些?SQL查询语句的执行顺序是怎么样的?如何用 MySQL 实现一个可重入的锁?
4.执行一条SQL请求的过程是什么?讲一讲mysql的引擎吧,你有什么了解?MySQL为什么InnoDB是默认引擎?说一下mysql的innodb与MyISAM的区别?数据管理里,数据文件大体分成哪几种数据文件?
5.索引是什么?有什么好处?讲讲索引的分类是什么?MySQL聚簇索引和非聚簇索引的区别是什么? 如果聚簇索引的数据更新,它的存储要不要变化?
6.MySQL主键是聚簇索引吗?什么字段适合当做主键?性别字段能加索引么?为啥?表中十个字段,你主键用自增ID还是UUID,为什么? 为什么自增ID更快一些,UUID不快吗,它在B+树里面存储是有序的吗?
7.Mysql中的索引是怎么实现的 ?查询数据时,到了B+树的叶子节点,之后的查找数据是如何做?B+树的特性是什么?说说B+树和B树的区别?B+树的好处是什么?
8.B+树的叶子节点链表是单向还是双向?MySQL为什么用B+树结构?和其他结构比的优点?为什么 MysSQL 不用 跳表?
9.联合索引的实现原理?创建联合索引时需要注意什么?联合索引ABC,现在有个执行语句是A = XXX and C < XXX,索引怎么走? 联合索引(a,b,c) ,查询条件 where b > xxx and a = x 会生效吗?联合索引 (a, b,c),where条件是 a=2 and c = 1,能用到联合索引吗?
10.索引失效有哪些?什么情况下会回表查询? 什么是覆盖索引?如果一个列即使单列索引,又是联合索引,单独查它的话先走哪个?索引已经建好了,那我再插入一条数据,索引会有哪些变化?
11.索引字段是不是建的越多越好?如果有一个字段是status值为0或者1,适合建索引吗?索引的优缺点?怎么决定建立哪些索引?什么时候适用索引?什么时候不需要创建索引?索引优化详细讲讲?了解过前缀索引吗?
12.事务的特性是什么?如何实现的?mysql可能出现什么和并发相关问题?哪些场景不适合脏读,举个例子?mysql的是怎么解决并发问题的?
13.事务的隔离级别有哪些?mysql默认级别是什么?可重复读隔离级别下,A事务提交的数据,在B事务能看见吗?
14.举个例子说可重复读下的幻读问题?Mysql 设置了可重读隔离级后,怎么保证不发生幻读?串行化隔离级别是通过什么实现的?
15.介绍MVCC实现原理? 一条update是不是原子性的?为什么?滥用事务,或者一个事务里有特别多sql的弊端?
16.讲一下mysql里有哪些锁? 数据库的表锁和行锁有什么作用?MySQL两个线程的update语句同时处理一条数据,会不会有阻塞?两条update语句处理一张表的不同的主键范围的记录,一个<10,一个>15,会不会遇到阻塞?底层是为什么的?如果2个范围不是主键或索引?还会阻塞吗?
17.日志文件是分成了哪几种?讲一下binlog?UndoLog日志的作用是什么?有了undolog为啥还需要redolog呢?redo log怎么保证持久性的?能不能只用binlog不用redo log?binlog 两阶段提交过程是怎么样的?
18.update语句的具体执行过程是怎样的?ySQL是如何保障数据不丢失的?RedoLog是在内存里吗?为什么要写RedoLog,而不是直接写到B+树里面?mysql 两次写(double write buffer)了解吗?
19.mysql的explain有什么作用?给你张表,发现查询速度很慢,你有那些解决方案?如果Explain用到的索引不正确的话,有什么办法干预吗?
20.MySQL主从复制了解吗?主从延迟都有什么处理方法?分表和分库是什么?有什么区别?