MySQL面试总结

三范式,反三范式:范式就是规范,就是关系型数据库在设计时要遵循的三个规范。第一范式就是列的不可分割性,第二范式就是主键,第三范式就是外键。反三范式:有时候为了查询效率或者可以推到出的字段,可以设置重读的字段,比如订单(总价)和订单项(单价)。

存储引擎相关:

分类:MySQL常用的存储引擎有InnoDB(默认存储引擎)、MyISAM。

InnoDB的优势:支持事务、支持行级锁和表级锁、查询不加锁,完全不影响查询、支持崩溃后恢复。

count(*):在没有where条件的情况下,MyISAM会比InnoDB快,尤其是在表很大的时候。InnoDB会做全表扫描,但是MyISAM内部维持了一个计数器,预存了结果。对于InnoDB的优化,可以将主键采用尽量小的类型且数据具有连续性(比如自增整型的id)和建立一个小字段的二级索引。

索引相关:

什么是索引:可以理解为类型书籍的目录,提高查询效率。

索引的好处:提高数据的检索速度,减少IO的次数;降低数据排序的成本,减少cpu消耗。

索引的坏处:占用空间;降低表更新的速度。

索引的分类:

       1、普通索引

       2、唯一索引(主键索引为特殊的唯一索引,不允许有空值)

       3、复合索引

       4、外键索引(InnoDB特有)

       5、全文索引。

索引创建的原则:

       1、索引列的基数越大越好(索引列的基数:不同列的总数)。

       2、字段为where子句后的列或者连接子句中的列而不是select关键字后的列。

       3、对字符串进行索引,应该定制一个前缀长度。

索引原理:实质就是数据结构中的B+树。

隔离级别相关:

事务的特性是指:ACID:原子性、一致性、隔离性、持久性。

事务的并发问题:记住一句脏读针对update操作。

MySQL四种隔离级别:读未提交、读以提交、可重复读、串行化。

MySQL锁机制:MySQL有全局锁、表级锁、行锁三种。其中全局锁和表级锁是所有都有的。而行锁是靠引擎层自己实现的,所以不是所有的引擎都具有行锁。

两阶段协议:在InnoDB存储引擎中行锁是在需要的时候才加上,但并不是在不需要时就立刻释放,是要等到事务结束后才释放行锁。

MySQL主从复制原理:MySQL的主从复制实际上就是三个线程的交互,master上面的binlog dump负责将binlog event传到slave,slave上面的IO线程负责接收master传来的binlog同时将binlog写入自己的relay log,slave上面的SQL线程读取binlog并且执行。

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值