大数据量下的分表策略问题

时间:2022-08-16 14:33:05
有一张用户访问信息表,用户在网站中的所有访问信息都存放在这张表中,网站运行一段时间后,表中的数据量越来越大,需要执行分表。分表策略:
1、按照时间分表
每个月份一张表,实现简单,但是有以下两个缺点:
(1)每个月份的数据量分布不均,有的月份很大,有的月份很小
(2)如果查找某一个IP的访问记录,需要遍历所有的表,1年就是12张,2年就是24张。。。。
2、按照IP地址进行分表
将某一IP地址段的用户所有访问记录放在一张表中,也有2个缺点
(1)也是同样的分布不均的问题,可能某一IP地址段的用户访问的频率高,某段的很小
(2)要是查找某段时间的所有访问记录,也歇菜了,也得遍历所有

请问有没有这样的分表策略,可以同时满足①方便查找某一IP的访问记录;②方便查找某段时间段内所有的网站访问记录。
考虑良久,终不得结果,请问达人有没有好的思路推荐,多谢

11 个解决方案

#1


没有两全的方案。

可以先考虑使用MYSQL的分区表。 

#2


还是考虑下只保留一段时间的用户登录日志吧

#3


没有两全的方案的话,那哪种方案比较好呢?

#4


第一种比较好  毕竟按照ip查找的需求比较少

#5


可以考虑通过MYSQL复制存两份数据。。。以便你们自己分析统计

#6


#4
那如何结果有的月份数据多,有的月份数据少的问题呢?

#7


MySQL分区表没有足够的理由还是不要用的好。坑巨多。

#8


分表和分区表还是不同的吧,我拟采用的是分表

#9


引用 7 楼 linwaterbin 的回复:
MySQL分区表没有足够的理由还是不要用的好。坑巨多。


水彬兄有例子吗?

#10


总表和分表都保留吧,大部分查询用分表,需要跨表查询的直接用总表查询来避免

#11


给表设定最大记录条数,满了就创建新表。

#1


没有两全的方案。

可以先考虑使用MYSQL的分区表。 

#2


还是考虑下只保留一段时间的用户登录日志吧

#3


没有两全的方案的话,那哪种方案比较好呢?

#4


第一种比较好  毕竟按照ip查找的需求比较少

#5


可以考虑通过MYSQL复制存两份数据。。。以便你们自己分析统计

#6


#4
那如何结果有的月份数据多,有的月份数据少的问题呢?

#7


MySQL分区表没有足够的理由还是不要用的好。坑巨多。

#8


分表和分区表还是不同的吧,我拟采用的是分表

#9


引用 7 楼 linwaterbin 的回复:
MySQL分区表没有足够的理由还是不要用的好。坑巨多。


水彬兄有例子吗?

#10


总表和分表都保留吧,大部分查询用分表,需要跨表查询的直接用总表查询来避免

#11


给表设定最大记录条数,满了就创建新表。