我正在开发PHP / MySQL统计日志程序,并且正在尝试为它找到最佳的MySQL数据库结构。
有一部分访问者可以看到日期统计数据(即最新的20个条目),但也可以看到今天的整体,昨天的整体,过去7天整体和过去30天的整体统计数据。
根据我提取的数据,实时统计数据每60秒更新一次,每次更新至少有10个新条目。
我的逻辑是否正确设置两个表...一个用作“今天”的统计数据,另一个用作整体存档...如:
todays_stats
ID
from_url
ENTRY_DATEoverall_stats
ID
from_url
ENTRY_DATE
然后双重插入每个新条目,但每晚午夜通过cron作业截断todays_stats?
或者有更有效的方法吗?
答案 0 :(得分:1)
这取决于您的每日统计行数,是否删除历史数据以及您拥有多少索引。我们需要删除历史数据并且有7~8个具有大量统计数据的索引,因此我们将数据分成日常表并编写存储过程来获取数据(最后一天,最后7天,最后30天等)。丢弃表比DELETE FROM table WHERE index=6-month-old-data
答案 1 :(得分:0)
我认为最好的方法是保留一个表格来保存当前数据集,然后你将有一个单独的表格用于整体统计数据,在午夜你将使用
从当前表格中插入所有数据。INSERT INTO `overall` SELECT * FROM `current`
查询。然后,您将在成功复制数据后截断当前表。