按月份MySQL表格分区
我有一个巨大的表格,用于存储许多跟踪事件,例如用户点击。
这张桌子已经有数百万人了,而且每天都在增长。 当我尝试从大时间范围获取事件时,查询开始变慢,并且在对该主题进行了相当多的阅读之后,我明白分区表可能会提升性能。
我想要做的是每月分区表。
我只发现了一些指南,说明如何每个月手动进行分区,是否有办法告诉MySQL按月进行分区,并且会自动进行分区?
如果不是,考虑到按列分区是日期时间,手动执行该操作的命令是什么?
正如手册所解释的:http://dev.mysql.com/doc/refman/5.6/en/partitioning-overview.html
这很容易通过月份输出的散列分区来实现。
CREATE TABLE ti (id INT, amount DECIMAL(7,2), tr_date DATE)
ENGINE=INNODB
PARTITION BY HASH( MONTH(tr_date) )
PARTITIONS 6;
请注意,这只是按月份而不是按年份划分的,在这个例子中也只有6个分区(所以6个monhts)。
分区一个现有的表(手册:https://dev.mysql.com/doc/refman/5.7/en/alter-table-partition-operations.html):
ALTER TABLE ti
PARTITION BY HASH( MONTH(tr_date) )
PARTITIONS 6;
查询可以从整个表中完成:
SELECT * from ti;
或从特定分区:
SELECT * from ti PARTITION (HASH(MONTH(some_date)));
使用具有独立于表大小的访问时间的TokuDb。
链接地址: http://www.djcxy.com/p/75031.html