2011-03-30 116 views
3

我的网站需要存储每次访问mysql的ip和时间戳。我担心很快我会在我的数据库中有1e6行。什么是压缩日期的最佳方式?

在mysql或java上压缩日期的最佳方式是什么? mysql是否已经压缩日期?理想情况下,我想快速解压缩日期值以生成报告。

更新:对不起,我的意思是每天有一个密尔。但我想这还是微不足道的。

+2

日期的大小是每天记录的数量最少的存储问题。 – Wes 2011-03-30 05:03:23

回答

2

大副,百万行是微小数据库。我不会担心太多。在任何情况下,MySQL使用一个相当压缩格式(3个字节)反正按this page

DATE: A three-byte integer packed as DD + MM×32 + YYYY×16×32 

换句话说,在比特级别(基于1000-01-01 thru 9999-12-31范围):

00000yyy yyyyyyym mmmddddd 
+0

100万行= 3MB左右(数据碎片等) – 2011-03-30 04:30:03

+0

@Yanick - 为每个IP地址添加一个额外的4字节值。但是,按照今天的标准,这是一个很小的存储量。 – 2011-03-30 04:34:21

1

使用内置的MySQL日期时间类型。一百万行并不是那么多。

+0

1E6是1x10^6或100,000 ... – 2011-03-30 04:21:14

+5

10^6 = 1百万。 – yan 2011-03-30 04:22:56

+0

ops,我的意思是每天有一个密尔,但是我明白了,谢谢 – somid3 2011-03-30 04:43:15

1

一个MySQL时间戳将只有4个字节。表示时间戳的整数将是相同的。因为您可以高效地基于该列进行索引和/或查询,所以将其保存为mysql类型会很有效。

任何“压缩”形式不是mysql类型将是低效的查询。

相关问题