mysql自动分区partition_<Mysql> 深入理解MySQL分区(Partition)

什么是数据库分区?

Mysql数据库中的数据是以文件的形式保存在磁盘上的,默认放在mysql/data路径,不同的引擎生成的文件后缀不同,像MyISAM生成.MYD和.MYI后缀文件,MYI存放索引(非聚簇索引)。Innodb生成.idb后缀文件(聚簇索引)。

当mysql表中数据越来越多,文件会变的越来越大,这个时候查询数据的速度会变慢。这个时候就可以用到分区这个功能,将一张表生成的数据文件拆分为多份,进行横向水平分区,提升查询效率。并且分区在清理历史数据的场景上非常高效

“随着MySQL越来越流行,Mysql里面的保存的数据也越来越大。在日常的工作中,我们经常遇到一张表里面保存了上亿甚至过十亿的记录。这些表里面保存了大量的历史记录。 对于这些历史数据的清理是一个非常头疼事情,由于所有的数据都一个普通的表里。所以只能是启用一个或多个带where条件的delete语句去删除(一般where条件是时间)。 这对数据库的造成了很大压力。即使我们把这些删除了,但底层的数据文件并没有变小。面对这类问题,最有效的方法就是在使用分区表。最常见的分区方法就是按照时间进行分区。 分区一个最大的优点就是可以非常高效的进行历史数据的清理。”

目前MySQL支持范围分区(RANGE),列表分区(LIST),哈希分区(HASH)以及KEY分区四种。下面我们逐一介绍每种分区:

RANGE分区:

基于属于一个给定连续区间的列值,把多行分配给分区。最常见的是基于时间字段. 基于分区的列最好是整型,如果日期型的可以使用函数转换为整型。本例中使用to_days函数

da8233118260

如上图,以时间字段分区,把一个航班动态相关的表分成5个区先。

da8233118260

分完了以后可以看到生成了5个.ibd文件(Innodb)

INSERT INTO `nick`.`partition_table_name`(`id`, `flightno`, `flight

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值