1、按照时间分表
每个月份一张表,实现简单,但是有以下两个缺点:
(1)每个月份的数据量分布不均,有的月份很大,有的月份很小
(2)如果查找某一个IP的访问记录,需要遍历所有的表,1年就是12张,2年就是24张。。。。
2、按照IP地址进行分表
将某一IP地址段的用户所有访问记录放在一张表中,也有2个缺点
(1)也是同样的分布不均的问题,可能某一IP地址段的用户访问的频率高,某段的很小
(2)要是查找某段时间的所有访问记录,也歇菜了,也得遍历所有
请问有没有这样的分表策略,可以同时满足①方便查找某一IP的访问记录;②方便查找某段时间段内所有的网站访问记录。
考虑良久,终不得结果,请问达人有没有好的思路推荐,多谢
11 个解决方案
#1
没有两全的方案。
可以先考虑使用MYSQL的分区表。
可以先考虑使用MYSQL的分区表。
#2
还是考虑下只保留一段时间的用户登录日志吧
#3
没有两全的方案的话,那哪种方案比较好呢?
#4
第一种比较好 毕竟按照ip查找的需求比较少
#5
可以考虑通过MYSQL复制存两份数据。。。以便你们自己分析统计
#6
#4
那如何结果有的月份数据多,有的月份数据少的问题呢?
那如何结果有的月份数据多,有的月份数据少的问题呢?
#7
MySQL分区表没有足够的理由还是不要用的好。坑巨多。
#8
分表和分区表还是不同的吧,我拟采用的是分表
#9
水彬兄有例子吗?
#10
总表和分表都保留吧,大部分查询用分表,需要跨表查询的直接用总表查询来避免
#11
给表设定最大记录条数,满了就创建新表。
#1
没有两全的方案。
可以先考虑使用MYSQL的分区表。
可以先考虑使用MYSQL的分区表。
#2
还是考虑下只保留一段时间的用户登录日志吧
#3
没有两全的方案的话,那哪种方案比较好呢?
#4
第一种比较好 毕竟按照ip查找的需求比较少
#5
可以考虑通过MYSQL复制存两份数据。。。以便你们自己分析统计
#6
#4
那如何结果有的月份数据多,有的月份数据少的问题呢?
那如何结果有的月份数据多,有的月份数据少的问题呢?
#7
MySQL分区表没有足够的理由还是不要用的好。坑巨多。
#8
分表和分区表还是不同的吧,我拟采用的是分表
#9
水彬兄有例子吗?
#10
总表和分表都保留吧,大部分查询用分表,需要跨表查询的直接用总表查询来避免
#11
给表设定最大记录条数,满了就创建新表。