mysql 分区的真正作用

在mysql 表中 建立分区 很多人都说能够提供查询效率 如果是以主键id分区可以减少查询的范围!
但是也有人说 分区更重要的对数据的管理(清除) 比如保留三个月有效数据 可以将 可以根据时间字段 分区讲三个月前的 数据清除!直接清除分区!想问一下大神 分区到底在哪方面发挥的优势大!应该怎么用?

两种说法都是对的,并且实际上是一回事。数据库分区实际上是提供了数据在物理上的隔离。
你可以这样理解:
你把每天的日记写在了一本无限页数的本子上。有一次,你想回味其中某一篇的日记,你需要打开这个本子逐页查询(顺序遍历);随着日记的增多,某天查的时候你觉得日了狗,为了加快你查找的速度,你终于决定给这个厚厚的本子前面加一个时间的目录(建立索引);然而,好景不长,随着日记数进一步的增长,你发现光是翻目录就要很长时间,这时候你想到可以把你的大本本按月划分拆成不同的小本本(水平分区),并且每个小日记本也有自己的目录(本地索引),这样你的日记就能很科学地管理起来,极大方便了自己的查找。
与此同时你还发现了这么做的另一个好处:某天你突然觉得以前某一个月的自己很傻逼,想把这段时间的日记毁了不让别人看见,那么,只需要把某一个小本本烧掉就行(DROP PARTITION),而不必费劲从一个大本本中去掉那么几十页——这样既不好撕(DELETE效率低)也会影响到查看别的日记(表锁)。

发表评论

电子邮件地址不会被公开。 必填项已用*标注