数据库分区-MySQL按年份进行分区:日期与时间戳



我有一个巨大的表要分区。它有一个复合的4元素主键。其中一个要素是记录时间,这是一个很好的拍卖关键。MySQL手册给出了很多例子,其中带有RANGE YEARDATE字段是一个非常有效的分区键。

我的问题是我有timestamp而不是date。MySQL文档指出可以使用timestamp:

从MySQL 5.1.43开始,也可以对表进行分区根据TIMESTAMP列的值,使用UNIX_TIMESTAMP()函数

但它并没有说明性能。问题是:datetimestamp中哪一个作为分区键会更快?如果DATE更好,我正在考虑更改主键。我将把所有数据划分为一年或半年的分区。

唯一可以确定的方法是查看基准。

我从来没有做过,所以我的答案可能是错误的。

在我看来,DATE应该比TIMESTAMP更快,因为它存储的信息更少,所以使用起来更容易。此外,由于它是第一个支持分区的版本,因此应该告诉您它可以更好地实现(并不是说TIMESTAMP版本的实现会很糟糕)。

但我想问你的是,DATE是否能很好地替代TIMESTAMP,因为你会失去很多精度。

另一个重要的检查是每个字段的字节数。

DATE=3字节

TIMESTAMP=4字节

http://dev.mysql.com/doc/refman/5.1/en/storage-requirements.html

最新更新