我已经设置了一个表来记录访问者的每一个页面视图。这将导致一个每周大约有5万条条目的表格。
为了保持事务的可管理性和良好的性能,我打算每周或每个月将表的内容转移到存档中。
我有几个问题,第一个问题是多长时间移动内容是否明智?
第二,移动内容的最佳方式是什么?
这是一个mysql数据库,表有11列,大多数是int或varchar,平均80个字符。
当涉及到存档时,应该是一系列表,还是再次拆分,但可能在较小的程度上?
发布于 2015-06-01 09:10:15
至于每隔多久,我会说,这完全取决于你的情况。例如,您需要访问多少数据,有多少磁盘空间,需要多久才能访问。
对于类似的数据,我在这里有一个类似的过程,我按月对其进行分区,然后在每个月开始时,我只需安排一个运行和删除最古老的分区的事件,并创建一个新的事件。这是快速和简单的,并保持相对恒定的磁盘空间。根据您当前的表结构,这可能很容易,也可能不是那么容易。
如果您想保存这些数据,您只需在本月初将一个新的分区添加到顶部,创建一个仍然可搜索但作为单个文件保存在系统上的大型表。如果您使用的是MySQL 5.6,您甚至可以按分区进行选择(一个好的索引也会有所帮助)。
类似的讨论请参见如何分割MySQL表文件?。
另一个选项,如果您想要保持可访问性,(我在另一个系统中也这样做)是在月初简单地运行一个计划好的事件来创建一个新的空表(CREATE TABLE tablename LIKE...,并重命名旧的表,例如tablename_201505 )。我还对另一个表进行了维护,以跟踪每个表中的月份数据,以便于应用程序参考。
发布于 2015-06-07 21:59:15
它对PARTITION来说相当小,但是使用分区和“可传输表空间”,归档可以非常简单和高效。嗯,也许比使用慢速SELECTs和DELETEs更复杂。
使用InnoDB,至少5.6,并按范围分区,具有每日或每周的粒度。
许多细节都是在我的博客中列出的。
https://dba.stackexchange.com/questions/102895
复制相似问题