MySQL45讲(一)(43)

这一小节是有关分区表的事情

分区表在mysql8.0的时候已经不允许myisam进行分区表的创建,应为该方法使用的是通用分区策略,然后就是open_file_limits的默认值是1024,然后就要把所有的分区表都要访问个遍,如果分区多一点,直接就报错了,所以之后就直接禁用这个策略了

这个分区表,在server上是一个,但是在引擎层却有好多个,然后就造成开启事务的时候不同的分区,锁并不是连贯的,例如2017和2018的数据都不在同一个分区内,然后你加锁,之后的操作并不会影响到另外一个分区

现在使用的是Innodb和ndb的本地分区策略,让引擎自己去打开分区,不用server层了

使用分区表的时候分区表影响比较大

在一个事务中查询一个分区,就会对于整个分区表进行MDL加锁,然后如果你对于其他表进行DDL操作的话,就得不到MDL锁,就无法进行操作了,无法写入

小知识点

对于mysql打开分区表时,会浏览整个分区

对于server来说,这些分区共用同一个MDL锁

在引擎层就会认为是不同的分区,然后就会去访问不同的分区

分区表的优点在于可以对于时间分段数据进行分解,然后可以直接通过alter table t drop partition 这个语法删除分区,效果类似于drop,如果使用delete的话,可以更快,并且对于系统的影响比较的小

对于分区表来说,最困惑的就是mdl锁了,所以一般使用分区表的话就不建议使用太多的分区,

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值