MySQL,如何实现类似partition的功能

extend 2009-07-02 12:32:59
一个应用使用的MySQL数据库,几年下来总共有500W+的数据量,现在想把一年前(或按自然年09年前)的数据做个archive,有什么好办法没?

Mysql也没有类似oracle的partition的功能。

谢谢!
...全文
124 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
wwwwb 2009-07-02
  • 打赏
  • 举报
回复
MYSQL5。1支持分区表
SHOW VARIABLES LIKE '%partition%';

mysql help:
CREATE TABLE sales1 (
id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
sales_date DATE NOT NULL DEFAULT '0000-00-00'
) ENGINE=InnoDB DEFAULT CHARSET=latin1
PARTITION BY RANGE(id)
(
PARTITION p0 VALUES LESS THAN (5000)
DATA DIRECTORY='d:/s1/data/'
INDEX DIRECTORY = 'd:/s1/idx/',

PARTITION p1 VALUES LESS THAN (10000)
DATA DIRECTORY='e:/s1/data/'
INDEX DIRECTORY = 'e:/s1/idx/',

PARTITION p1 VALUES LESS THAN MAXVALUE
DATA DIRECTORY='f:/s1/data/'
INDEX DIRECTORY = 'f:/s1/idx/'
);


注意引擎及分区值的类型
ACMAIN_CHM 2009-07-02
  • 打赏
  • 举报
回复

MySQL 5.1 起支持 partition

按照年份你可以使用range partition

你可以参考一下MYSQL官方文档中的一个例子。
http://dev.mysql.com/doc/refman/5.1/zh/partitioning.html#partitioning-range
18.2.1. RANGE分区
按照RANGE分区的表是通过如下一种方式进行分区的,每个分区包含那些分区表达式的值位于一个给定的连续区间内的行。这些区间要连续且不能相互重叠,使用VALUES LESS THAN操作符来进行定义


56,679

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧