原标题:分区自动管理与维护——MySQL Partition Manager
细心的小伙伴可能发现在Inside君中,将event_scheduler设置为了1。其实,在很多场景下,用户会有定时任务的需求,而event_scheduler就能完成这样的工作。
MySQL Partition Manager(下简称MPM)是由Yahoo开源的一个MySQL分区自动维护的脚本。该脚本通过存储过程实现,并通过MySQL的event_scheduler来设置调度任务。Inside君个人很是喜欢这样的实现,期待中能将此功能集成到sys库下。
使用MPM进行自动分区管理与维护的前提是:
分区字段必须采用INT类型,比如unix_timestamp、hour等
分区字段必须是主键的一部分
将要管理的分区表信息插入到配置表partition_manager_settings
可以发现MPM还是有一些局限性,特别是分区字段只能是INT类型表示的时间,这对于习惯使用类型datetime作分区字段的同学来说,不得不说是一个打击。话说,Yahoo时间都用unix_timestamp()转化?
接着看下分区配置表:
CREATE TABLE `partition_manager_settings` (
`table` varchar(64) NOT NULL COMMENT 'table name',
`column` varchar(64) NOT NULL COMMENT 'numeric column with time info',
`granularity` int(10) unsigned NOT NULL COMMENT 'granularity of column, i.e. 1=seconds, 60=minutes...',
`increment` int(10) unsigned NOT NULL COMMENT 'seconds per individual partition',
`retain` int(10) unsigned NULL COMMENT 'seconds of data to retain, null for infinite',
`buffer` int(10) unsigned NULL COMMENT 'seconds of empty future partitions to create',
PRIMARY KEY (`table`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=Dynamic;
有了上述这些内容,就能进行分区的自动维护了。接着就是通过存储过程partition_manager进行分区的维护,包括将表转化为分区表、创建新分区、删除老分区。而事件run_partition_manager就是用来进行定时任务设置。
Inside君对整个脚本进行了注释,感兴趣的同学可以点击下方的原文阅读进行查看。
最后,老规矩:“转发文章,手有余香。点击广告,来年加薪”。
当然,还有提前祝小伙伴们中秋节快乐~~~~
猜你喜欢
有态度的MySQL社区返回搜狐,查看更多
责任编辑: