InnoDB知识点整理

1.InnoDB支持事务,外键,行级锁,索引和数据存到一起,不保存表的具体行数,count时需要全表扫描,此时会锁表,删除数据的时候一条一条的删除,即使是删除表中所有的数据,不支持全文索引。

2.InnoDB在select和insert性能上不如myisam

3.InnoDB除了存自定义的列之外,还存了一个事务id和回滚指针列,如果表中没有主键,并且也没有not null 的unique,那么Innodb会增加一个rowid列作为主键(6个字节)

4.InnoDB的数据是按行进行存放,主键索引(聚集索引)是一个B+Tree,基于聚集索引的特点,InnoDB的主键索引的叶子节点保存了整行数据,非叶子节点保存了主键,辅助索引的叶子节点中保存的是主键,如果通过辅助索引检索数据,是先通过辅助索引找到主键,然后再查主键索引,找到数据。

5.InnoDB的锁级别是行锁,注意,InnoDB的行锁是通过给索引项加锁来实现的,InnoDB行锁分为3中形式,简单了解,一种是给索引项加锁,一种是对索引项的间隙,进行加锁,第三种就是对记录和前面的间隙进行加锁。

     因为InnoDB的行锁是通过索引项来实现的,所以,如果不通过索引检索数据,那么Innodb将对表中所有的记录进行加锁,也就是表锁。(1)不通过索引条件查询的时候,会锁定表中的所有记录(2)如果索引的值相同,那么会锁定两行数据,例如id是索引,存在这样的数据{id:1, name:1} {id:1, name:4} 如果查询条件是id=1 and name=4  那么会锁定id=1的所有记录,从而会出现锁冲突的现象。(3)当表中由多个索引的时候,不同事务使用不同的索引,不论是什么索引,都会使用行锁对数据进行加锁。(4)即便是查询条件中有索引字段,但是如果执行计划没有使用这个索引,还是没用,所以分析锁冲突的时候别忘记了执行计划。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值