任何數(shù)據(jù)庫應(yīng)用都存在分頁性能問題,mysql的性能問題似乎更大些,Discuz7.2(以下簡(jiǎn)稱dz7.2)和Discuz X2(簡(jiǎn)稱X2)的搶樓機(jī)制基本相同,搶樓與普通帖子(蓋樓)是不同的處理機(jī)制,到了Discuz X2.5(簡(jiǎn)稱X2.5)就把搶樓與蓋樓機(jī)制統(tǒng)一.
引用來源:X2.5的新程序架構(gòu)
由以上信息可以看出Discuz!X2.0及更早版本與Discuz!X2.5對(duì)搶樓及蓋樓的機(jī)制并不相同、數(shù)據(jù)結(jié)構(gòu)也相應(yīng)的存在差距,為了解決這一問題,我們同時(shí)首先需要了解下discuz數(shù)據(jù)表以下幾個(gè)常見字段.
- tid:主題id
- pid:帖子id
- position:顯示位置
- first:是否是首貼
Discuz!X2.0及更早版本主題搶樓蓋樓數(shù)據(jù)表:
forum_post 帖子表:
forum_postposition帖子排樓順序表,用來存儲(chǔ)論壇帖子的排序,該表采用 (tid, position) 兩個(gè)字段聯(lián)合做自增主鍵,在高并發(fā)情況下,效率自然不高。(題外話,補(bǔ)充一點(diǎn):該表不宜修改為InnoDB,建議新增了一列自增ID做主鍵,該主鍵和業(yè)務(wù)完全沒有任何關(guān)系,僅用做自增主鍵。)
forum_postposition表的存儲(chǔ)內(nèi)容格式:
在搶樓帖中假設(shè)forum_post表中first字段為1且該帖pid與forum_postposition表中pid相等且forum_postposition表中position字段為1對(duì)應(yīng)則為1樓。
Discuz!X2.5及更高版本主題搶樓蓋樓數(shù)據(jù)表:
forum_postpositin帖子排樓順序表:取消了forum_postpositin表,在 post主表中增加 position 字段保存每個(gè)帖子的樓號(hào).//開源軟件:Vevb.com
forum_post 帖子表中多了一個(gè)position字段.
至此,你應(yīng)該知道如何解決或處理該問題了,該問題在Discuz!X2.5及更高版本中很少遇見或幾乎不會(huì)遇見,原因上述內(nèi)容已經(jīng)提到.
擴(kuò)展閱讀:
先不分析X2.5固定樓號(hào)的利弊,就談?wù)剰膁z7.2到X2.5對(duì)樓層處理機(jī)制以及變化的優(yōu)缺點(diǎn).
dz7.2用 postposition表來實(shí)現(xiàn)搶樓樓號(hào)排序,順便也實(shí)現(xiàn)了對(duì)高樓層分頁性能優(yōu)化;X2 postpositon表只用來搶樓,對(duì)于高樓層主題分頁優(yōu)化沒看到相關(guān)處理;X2.5對(duì)post主表添加樓號(hào)字段來讓所有帖子的樓號(hào)固定,從而解決分頁性能問題,也一并解決了搶樓問題。
從搶樓為主,附加高樓層分頁到所有樓層分頁為主,附帶實(shí)現(xiàn)了搶樓,這個(gè)變化說明隨著discuz功能增加對(duì)于分頁性能的需求也變大,另外一個(gè)顯示原因是那些長(zhǎng)期使用discuz系統(tǒng)的大站數(shù)據(jù)也越來越大,大于1000萬帖子的不是少數(shù),他們對(duì)分頁性能提高的需求更迫切.
新聞熱點(diǎn)
疑難解答
圖片精選