利用event为zabbix数据表定期添加和删除分区

简介:

导读

利用MySQL的event来自动维护表分区。

我们去年就开始把zabbix数据库改成用TokuDB来支撑,并且启用了表分区(详情见:迁移Zabbix数据库到TokuDB)。这样做的好处很明显,较早的历史数据可以通过删除分区快速废弃掉。要知道,zabbix数据表默认是没有针对时间字段创建索引的,因此如果执行删除的SQL命令,其效率会很差,而直接删除分区就快多了。

先看history表的分区规则:

CREATE TABLE history (
  itemid bigint(20) unsigned NOT NULL,
  clock int(11) NOT NULL DEFAULT '0',
  value double(16,4) NOT NULL DEFAULT '0.0000',
  ns int(11) NOT NULL DEFAULT '0',
  KEY history_1 (itemid,clock)
) ENGINE=TokuDB DEFAULT CHARSET=utf8 ROW_FORMAT=TOKUDB_QUICKLZ
PARTITION BY RANGE (clock)
(PARTITION p20150531 VALUES LESS THAN (1433088000) ENGINE = TokuDB,
...
 PARTITION p20160411 VALUES LESS THAN (1460390400) ENGINE = TokuDB);

对这个表,我们每天要的是:创建一个新的分区,而后删除N个月前的历史旧分区。这个工作可以通过系统的cron来实施,也可以利用MySQL自身的event来做,在这里我们选择用event,没什么特殊的原因,只是想顺便尝试下event而已,呵呵。

一个定期调度的event写起来并不难,下面是参考样例,相信很快就能看明白:

相关文章
|
3月前
|
流计算
在使用FlinkSQL进行数据同步时,创建了一个新的任务,但发现无法删除旧任务同步的历史数据
在使用FlinkSQL进行数据同步时,创建了一个新的任务,但发现无法删除旧任务同步的历史数据
|
10月前
|
存储 关系型数据库 MySQL
MySQL记录删除后竟能按中间被删除的主键加回去,磁盘空间被重用!——底层揭秘MySQL行格式记录头信息
当Mysql记录被删除,页中记录存储结构如何变化?当删除的记录再次被插入,页中记录存储结构如何变化?本篇讲解记录头信息的底层原理和计算,让你从原理理解它!
68 0
MySQL记录删除后竟能按中间被删除的主键加回去,磁盘空间被重用!——底层揭秘MySQL行格式记录头信息
|
关系型数据库 测试技术 数据库
Postgres 如何清空数据库下的所有表记录,但保留表结构?
Postgres 如何清空数据库下的所有表记录,但保留表结构?
413 0
|
SQL HIVE
hive清空表删除分区
hive清空表删除分区
|
SQL 监控 关系型数据库
利用event为zabbix数据表定期添加和删除分区
利用event为zabbix数据表定期添加和删除分区
|
存储 SQL 数据库
DM8数据库批量创建表,插入数据,更改表信息,删除测试
在测试产品的功能和性能的时候需要大量数据表,我们可以通过**游标**和**存储过程**批量创建测试表,插入测试数据,更改测试表,删除测试表。
|
SQL 关系型数据库 MySQL
mysql中清空表数据,并重置主键为1
mysql中清空表数据,并重置主键为1
185 0
mysql中清空表数据,并重置主键为1
|
关系型数据库 Shell MySQL

推荐镜像

更多