两年前规划 news database 时,只做了千万级的设计,把 news 索引表和 newscontent 内容表分开,这样 news 索引表的效率很高,而 newscontent 除了偶尔读写,其他时候仅为存诸、备份,字段也很简单,一直都很高效。
关于 news database,曾经有一次让啊土(我们 Team 的一名程序员)误操作,把几百万条数据记录删除了,他的恢复脚本里面首面有 drop table 行为,当时被我严重教育了一番,后来把权限控制的比较严格一些,从此没再发生这种严重错误。
然而两年过去了,千万条数据记录也达到了,发生 mysql index 错误,需要使用 myisamchk 进行修复,发现分区 541G 已经使用了 458G,使用 myisamchk -r newscontent 修复不够空间,使用 -q 参数又不放心,只好接个 1.5TB 的 SATA 外接硬盘上去,把文件拷贝出来等修复完再传回去。
是时候对 news 数据库做上亿级规划的时候了,得把 newscontent 表再重新设计,规划一下,拆分成多张表,相对固定比如 [0-9]、[09-99]、[A-Z] 或按 [YYYYMM] 分表存诸。
Update:9个小时后,我放弃了把 newscontent.MYD 数据库文件通过网络传到 1.5TB USB/SATA 硬盘上再修复的做法,因为只完成了1/2不到,即便全部传完,再过9个小时,我才能开始修复,而修复时间,又将过去多少时间?因此,我又改用了 myisamchk -r -q newscontent 的方法,同时使用 renice 把优先级设到最大,让他去吧!
什么网站会有这么大的数据量???两年上亿条数据?平均每天新增十多万条数据??怎么可能有这么多新闻啊???我崩溃。。。
一千多万条数据吧,没上亿条,但是往下跑上亿条很正常啊。
那也很多啊,两年网多了说也就800天、而1千万条数据,就是说每天新增上万条数据,哪有那么多新闻啊?
很正常,一天产生一万多条新闻实不算多,当然这里面包括了很多通稿、转载等内容,把这些内容再重新挖掘聚合,就成为了热门标签或专题。
哈哈可以玩上亿的数据了 崇拜!