像这类表,一般 3,4 个字段就够了,而且每个字段的字符数也很少,但会产生大量行数。假如数据量超大时,如何对待它呢?比如几千万行的情况,这种表有必要分表吗?
![]() | 1 ipwx 2019-04-27 10:01:32 +08:00 ![]() 我不懂,统计浏览量的表难道不是一篇文章一条记录的嘛? 如果你文章都有几千万了,你还用一个数据库? |
2 kukumao 2019-04-27 10:09:39 +08:00 via Android ![]() 我觉得不需要。又不是经常读。 |
3 whileFalse 2019-04-27 11:11:04 +08:00 ![]() 浏览量为啥会有几千万行? |
![]() | 4 longxboy 2019-04-27 11:24:57 +08:00 ![]() 不超过 1 亿条的话不用 |
![]() | 5 GoLand 2019-04-27 11:27:12 +08:00 ![]() 这种数难道不是 kv 存储好吗?还放关系数据库干啥? |
![]() | 6 opengps 2019-04-27 11:31:18 +08:00 ![]() 不需要,这种表主要是查时间区间,重点考虑用时间列聚集索引,排除其他的查询 跟我之前分享的超大密集写入表设计有点相似,只不过达不到需要表分区的地步 [《 mysql,sqlserver 数据库单表数据过大的处理方式》]( https://www.opengps.cn/Blog/View.aspx?id=284) |
![]() | 7 mamahaha OP ![]() @ipwx @whileFalse 需要记录文章 id、浏览文章的非重复 ip。点击一次生成一行,一个文章 id 对应有多少行就是被浏览了多少次,所以会产生很多行。如果单给一个字段做累加是没法区别重复点击的,不过我也不敢绝对肯定,也许你会有更好的办法吧。 |
![]() | 8 mamahaha OP @opengps 谢谢,“只增,不删,不改”,“只用于查询”,应用场景非常符合啊。是不是可以理解为按时间段进行了模拟分表。 |
![]() | 9 jugelizi 2019-04-27 13:20:10 +08:00 ![]() 才几千万行。。 我都好几亿条的 mysql 的这种纯数字也是毫秒查 |
![]() | 10 6j1A6v70lEv5n2U2 2019-04-27 13:20:29 +08:00 via iPhone ![]() 楼上那些,是不是没考虑到按时间查看浏览量… 比如精确到每分钟某篇文章有多少浏览… 这种情况楼主说的几千万行当然也是存在的,每一次流量都要记录下时间和客户端等信息,而不再是文章的一个字段了 |
![]() | 11 oott123 2019-04-27 14:15:35 +08:00 via Android ![]() 按时间浏览存储的,可以试试时序数据库 time serial database 区分 ip 统计总数的,可以试试布隆过滤器 |
![]() | 12 oott123 2019-04-27 14:16:02 +08:00 via Android ![]() 是 time series database,拼错了 |