首页 > CMS > Discuz > 正文

解决discuz论坛楼层显示错误并且楼主不显示方法

2024-09-11 09:03:15
字体:
来源:转载
供稿:网友

任何数据库应用都存在分页性能问题,mysql的性能问题似乎更大些,Discuz7.2(以下简称dz7.2)和Discuz X2(简称X2)的抢楼机制基本相同,抢楼与普通帖子(盖楼)是不同的处理机制,到了Discuz X2.5(简称X2.5)就把抢楼与盖楼机制统一.

引用来源:X2.5的新程序架构

由以上信息可以看出Discuz!X2.0及更早版本与Discuz!X2.5对抢楼及盖楼的机制并不相同、数据结构也相应的存在差距,为了解决这一问题,我们同时首先需要了解下discuz数据表以下几个常见字段.

  1. tid:主题id 
  2.  
  3. pid:帖子id 
  4.  
  5. position:显示位置 
  6.  
  7. first:是否是首贴 

Discuz!X2.0及更早版本主题抢楼盖楼数据表:

forum_post 帖子表:

forum_postposition帖子排楼顺序表,用来存储论坛帖子的排序,该表采用 (tid, position) 两个字段联合做自增主键,在高并发情况下,效率自然不高。(题外话,补充一点:该表不宜修改为InnoDB,建议新增了一列自增ID做主键,该主键和业务完全没有任何关系,仅用做自增主键。)

forum_postposition表的存储内容格式:

在抢楼帖中假设forum_post表中first字段为1且该帖pid与forum_postposition表中pid相等且forum_postposition表中position字段为1对应则为1楼。

Discuz!X2.5及更高版本主题抢楼盖楼数据表:

forum_postpositin帖子排楼顺序表:取消了forum_postpositin表,在 post主表中增加 position 字段保存每个帖子的楼号.//开源软件:Vevb.com

forum_post 帖子表中多了一个position字段.

至此,你应该知道如何解决或处理该问题了,该问题在Discuz!X2.5及更高版本中很少遇见或几乎不会遇见,原因上述内容已经提到.

扩展阅读:

先不分析X2.5固定楼号的利弊,就谈谈从dz7.2到X2.5对楼层处理机制以及变化的优缺点.

dz7.2用 postposition表来实现抢楼楼号排序,顺便也实现了对高楼层分页性能优化;X2 postpositon表只用来抢楼,对于高楼层主题分页优化没看到相关处理;X2.5对post主表添加楼号字段来让所有帖子的楼号固定,从而解决分页性能问题,也一并解决了抢楼问题。

从抢楼为主,附加高楼层分页到所有楼层分页为主,附带实现了抢楼,这个变化说明随着discuz功能增加对于分页性能的需求也变大,另外一个显示原因是那些长期使用discuz系统的大站数据也越来越大,大于1000万帖子的不是少数,他们对分页性能提高的需求更迫切.

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表