comment_table表
comment表
comment_data_x表
我们留意到:
- comment_table表统计每个comment_data_x表里面有多少条记录,
- comment表只是记录文章id和tableid,
- 而comment_data_x则是记录评论信息。
实际上,v9的分表逻辑很简单,如果某个文章要新增评论,则判断comment表有无记录,有则这条记录不进行分表判断,若无记录,则判断comment_table的最后一个表是否达到了分表的条件。
if (!$comment = $this->comment_db->get_one(array('commentid'=>$commentid, 'siteid'=>$siteid), 'tableid, commentid')) { //评论不存在 //取得当前可以使用的内容数据表 $r = $this->comment_table_db->get_one('', 'tableid, total', 'tableid desc'); $tableid = $r['tableid']; if ($r['total'] >= 1) { //当上一张数据表存的数据已经达到1000000时,创建新的数据存储表,存储数据。 if (!$tableid = $this->comment_table_db->creat_table()) { $this->msg_code = 4; return false; } } }
这样做的好处也很简单,避免了同一个文章的评论分散在不同的comment_data_x表里面。