我有一个可以开发成PHP和mysql的站点,在那里,我每两分钟从服务器获取10个xml并将数据插入我的数据库。
这个数据是简单的字符串(最多10)和大约20个字段( string (10))。每隔两分钟,我就会插入20个字段的10条记录( xml的数量可以增加)。
在这个数据库中,我有其他表,但最大的表是每两分钟插入一次记录。
我想知道按年分开数据库是否更好: database_2013,database_2014.当年份发生变化时自动创建数据库,因为我不希望这个数据表每年都能生成Gb的数据库,十年后,我有一个非常大的数据库,在那里进行查询非常缓慢。
一个数据库(对于一个数据库来说不是一个很大的Gb问题)或更多的数据库除以年份?
这是我实现的表:
CREATE TABLE IF NOT EXISTS `station` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`station_id` int(11) unsigned NOT NULL,
`dewpoint` varchar(5) NOT NULL,
`heat_index` varchar(10) NOT NULL,
`pressure` varchar(10) NOT NULL,
`relative_humidity` varchar(5) NOT NULL,
`temperature` varchar(5) NOT NULL,
`wind_degrees` varchar(10) NOT NULL,
`wind_direction` varchar(10) NOT NULL,
`wind_speed` varchar(5) NOT NULL,
`windchill` varchar(10) NOT NULL,
`rain_rate_in_per_hour` varchar(10) NOT NULL,
`rain_rate_hour_high_in_per_hour` varchar(10) NOT NULL,
`rain_storm_in` varchar(10) NOT NULL,
`leaf_wetness` varchar(2) NOT NULL,
`created` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;发布于 2013-05-31 11:25:51
每2分钟插入10行将导致(24*60/2)*每天10行(7200) ->,这不是一个值得担心的大值。而且,你可以考虑“未来-10年”,但不要因为过早的优化而浪费时间。
如果您唯一关心的是每2分钟插入一次数据的这个表,那么创建额外的数据库(每年一个)是没有意义的,所以让我们继续使用这个表(Table_A)。
现在,由于这个表的时间会慢慢增加,并且您希望查询运行得很快,所以您有很多选项:
..。诸若此类。
最佳选择:通过台站_id和已创建对现有表进行分区,每个站点都有"A“分区,每个月有"B”分区,以及总共有AxB可定位的分区数。对Table_A进行分区之后,为Table_A_Archive执行相同的操作,并且在每年年底,将数据从Table_A移动到Table_A_Archive。
**重要:**在制定分区模式之后,请记住,所有查询都应该在WHERE子句中具有必要的条件,这样查询就可以作为可定位的小分区访问。
例如。
Select AVG(pressure)
FROM Table_A
WHERE station_id = 123
AND created between '2013-01-01 00:00:00' AND '2013-02-01 00:00:00'。
上面的查询将只触及分区"123“和2个子分区,为期1个月和2个月。
https://dba.stackexchange.com/questions/43506
复制相似问题