MySQL数据库自动分区

21

我有一个MySQL数据库表,想按日期分区,特别是按月份和年份。但是,当添加新数据到新的月份时,我不希望手动更新数据库。

当我最初创建数据库时,我有从2009年11月到12月、2010年1月等的数据。现在当2月份开始时,我希望自动创建一个名为Feb 10的分区。这有可能吗?


我不确定这是否是最佳方案。每次更改分区,您基本上都会重写整个表格。这可能需要相当多的时间和资源。 - Mchl
@Mchl 如果你有更好的想法,我很乐意听听。你说得对,它相当耗费资源(比我想象的还要多),但如果它只运行一次一个月,那就还好 - 特别是当我需要执行常规查询时,比如“选择上个月的第三天”。 - Benubird
5
“每次您更改分区时,您基本上会重写整个表”这句话并不完全正确。添加或删除分区就像创建/删除表一样,几乎是瞬间完成的。只有修改一个已经存在数据的现有分区可能会很慢。因此,如果您在插入数据之前为下个月创建一个新的分区,那么速度非常快。 - jssebastian
3个回答

7
如果您想要完整的解决方案,那么有一些可供选择,可以查看这个网站上的帖子。它是一个基本的存储过程,处理分区分析和创建(带有一些日志记录!)。
您只需要根据您的分区类型进行调整(示例使用bigint分区),并安排MySQL事件调度程序运行该存储过程即可。

1
我喜欢使用存储过程来创建分区的概念。 - Jeff Storey
8
KickingTyres的链接损坏了。 - Soma Holiday
死链并不有用。 - Fuzzy

0

我需要每个月设置一个触发器来添加该月的新分区吗?因为我不想预先定义所有的月份/年份... - Jeff Storey
1
@Jeff - 我不这么认为,在那篇文章中没有注意到任何问题。虽然这些是很好的增强功能,但不会解决你当前的问题...这也是我第一次使用SQL Server添加分区时遇到的问题,肯定很烦人。 - Nick Craver
@Nick Craver。你发布的文章中有用于执行此操作的存储过程。我想我可以使用每月触发器(或cron作业,详细信息待定)通过存储过程添加新分区。谢谢。 - Jeff Storey
3
链接已失效。 - CAFxX

0

我会做其他人所做的(发布链接)MySQL分区快速介绍

(查看第50页以获取所需内容-按日期分区) 编辑:我仔细重新阅读了您的帖子-如果您想按月更改分区,为什么不创建一个Mysql 事件来完成呢?


这只是一个建议。但我认为你最终会得到一个事件和存储过程来实现你想要的功能。 - cristian

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接