mysql面试题

1.mysql原子性和持久性怎么保证
原子性:是基于undo log回滚实现,undolog他会记录行修改,当不成功时会回滚。
持久性:是基于redo log实现,在事务提交前,先把修改写进日志,他不是针对行数据,而是针对页数据,当数据崩溃时,通过redo log实现。

2.innodb和myisam的区别
innodb支持行级锁,myisam支持表级锁
innodb支持事务,myisam不支持事务
innodb支持mvcc(多版本并发控制),myisam不支持
innodb支持全文索引,myisam不支持
innodb支持外键,myisam不支持
mvcc:就是解决可重复读下的脏读和不可重复读。

3.索引分类:
普通索引:针对数据库表创建的索引。
唯一索引:跟普通索引相似,当时索引的值必须唯一,允许有空值
主键索引:索引的值的必须唯一,不许有空值
组合索引:将数据组中多个字段进行组合
全文索引:全文索引的类型为fulltext,全文索引可以在varchar、char、text类型的列上创建。

4.innodb底层的数据结构
innodb底层的数据结果是b+树,每个叶子节点存储信息,叶子节点中间有指针指向下一个数据节点。

5.为啥用b+树而不是b树,
因为b树在非叶子节点也存在数据,会占用大量内存空间,当表数据量大时,树的层次会加深,影响查询速率,
使用b+树,所有数据都在叶子节点,非叶子节点可以存储大量索引,可以减少io次数。而且b+树有指针指向下一数据(形成链表),在范围查询时会特别方便。所有数据都在叶子节点,查询稳定。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值