秋色園QBlog技術原理解析:效能最佳化篇:資料庫文章表分表及分庫減壓方案(十五)

來源:互聯網
上載者:User

文章回顧:

1: 秋色園QBlog技術原理解析:開篇:整體認識(一) --介紹整體檔案夾和檔案的作用

2: 秋色園QBlog技術原理解析:認識整站處理流程(二) --介紹秋色園業務處理流程

3: 秋色園QBlog技術原理解析:UrlRewrite之無尾碼URL原理(三) --介紹如何?無尾碼URL

4: 秋色園QBlog技術原理解析:UrlRewrite之URL重新導向體系(四) --介紹URL如何定位到處理常式

5: 秋色園QBlog技術原理解析:Module之頁面基類設計(五) --介紹建立基類和自訂生命週期

6: 秋色園QBlog技術原理解析:Module之頁面基類-生命週期流程(六) --介紹基類生命週期內部業務

7: 秋色園QBlog技術原理解析:Module之基類生命週期-頁面載入(七) --介紹介面html載入原理

8: 秋色園QBlog技術原理解析:Web之頁面處理-內容填充(八) --介紹html的內容是如何填充

9: 秋色園QBlog技術原理解析:獨創的多語言翻譯機制(九) --介紹html多語言翻譯原理

10:秋色園QBlog技術原理解析:頁面內容填充及多語言翻譯流程示範樣本(十) --總結示範範例程式碼

11:秋色園QBlog技術原理解析:頁面Post提交機制(十一) --介紹如果Post提交資料

12:秋色園QBlog技術原理解析:效能最佳化篇:位元組與緩衝與並發(十二) --介紹效能最佳化:位元組,並發及緩衝

13:秋色園QBlog技術原理解析:效能最佳化篇:全域的SQL語句最佳化(十三) --介紹全域掌握SQL,進行針對性最佳化

14 :秋色園QBlog技術原理解析:效能最佳化篇:緩衝總有失效時,構造持續的緩衝方案(十四)--介紹二次緩衝方案

附章:

1:秋色園QBlog技術原理解析:部落格一鍵安裝工具技術實現[附源碼下載] --開源秋色園安裝工具原理

2:如何安裝部署秋色園CYQBlog網站

3:Windows7下如何安裝部署秋色園CYQBlog網站

 

PS:秋色園QBlog:http://www.cyqdata.com/download/article-detail-427

 

 

上節回顧:

上節 秋色園QBlog技術原理解析:效能最佳化篇:緩衝總有失效時,構造持續的緩衝方案(十四) 中,

介紹了 秋色園QBlog 在效能最佳化方面,為了避開緩衝失效的空白期,特意使用靜態化方式做為臨時緩衝策略方案。

 

本節內容:

本節將介紹秋色園 QBlog  從另一個角度上的網站最佳化方式:資料庫分表分庫基礎最佳化。

 

基礎說明:

秋色園 QBlog 的最佳化工作,從一開始都是基於代碼的技術最佳化方案,其中一個很大的原因:

就是秋色園 QBlog 一開始是寄放在朋友國外虛擬機器主機的子目錄中,本人僅有ftp許可權;

而操作一個正在啟動並執行幾百M的access資料庫,實在不是件容易的事,所以最佳化工作只能在技術上尋求突破。

 

自從秋色園 QBlog 轉移到VPS後,能從物理上操作access,最佳化可選方案也增多了一下,

因此稍為位移了一下,把整體最佳化的壓力,部分分擔到了access資料庫。

本節將介紹一個最開始的資料庫最佳化方式:文章內容的分表及分庫。

 

基礎分析:

秋色園 QBlog  的access資料庫之所以超過600M,是因為有大量的文章表Blog_Content 。而文章表中占最多空間的,得屬文章的內容了,本節將把它給抽出來。

 

我們看下原始的文章表資料結構的設計:

部落格文章表:Blog_Content

欄位:

ID  文章ID

Title 文章標題

Body 文章內容

Abstract 文章簡介

...... 其它欄位省略

 

這裡有一個常規文章表的設計,就是文章的內容Body 欄位,通常是放在文章表中的。

 

而這個欄位出現及使用是在什麼情況?

出現1:後台發表或編輯文章時

出現2:查看文章。

從這裡可以看出,涉及點並不多,很少,而且前台有靜態頁面頂著,基本除了發文章和編輯文章,這麼大資料量的內容,幾乎都不露面。

 

那文章表出現和使用又在什麼情況下出現?

這個多的數不清,秋色園 QBlog 首頁,使用者部落格首頁,文章列表,文章檔案,幾乎每個頁面,都會用到文章列表。

因此,將不常用的,又佔有90%以上空間的文章內容 Body 欄位獨立出來,顯得相當有必要。

 

於是進行分表:

多了一個Blog_ContentBody表:

欄位,就兩個:

ID:文章ID

Body:文章內容。

 

然而僅是進行分表,力度似乎不夠。

 

於是再進行分庫:

將Blog_ContentBody直接分到另一個access資料庫中。

提示:最後發現,去除文章內容的資料庫,僅剩下幾十M,而文章內容,竟然佔了500多M。

 

由此,秋色園 QBlog 從一個資料變成2個資料庫了,資料庫名稱也變化了一下:

從myspace.mdb,更名為:

qblog.mdb 主要資料庫

qblogbody.mdb 文章內容資料庫

 

當然,表分了,庫也分了,代碼不可能不跟進,技術手段也得跟著升級。

 

升級的實現與操作步驟:

 

1:分表分庫,代碼動改相容升級

 

CYQ.Data 資料架構,自身已支援同時操作多個資料庫,因此分庫後,改動的代碼量很少,主要改動點有:

1:刪除Blog_Content表的Body枚舉欄位。

2:增加多資料庫的枚舉:

    public enum U_QBlogBodyEnum
    {
        Blog_ContentBody,
    }

然後資料庫增加一個QBlogBodyConn的資料庫連結即可。

3:發布編輯文章和顯示文章,增加文章內容的獨立操作函數。

 

代碼改動很小,就是半小時以內完成的事情。

 

2:資料庫分庫步驟:

1:直接登陸vps伺服器,使用了CYQ.DBImport,從原來的資料庫中,將ID和Body欄位匯入到另一個資料庫的表Blog_contentBody中。

2:開啟原來的表Blog_Content,刪除Body欄位,然後壓縮一下資料庫,剩下20多M了。

3:直接升級dll到伺服器中,整個的升級過程很迅速。

 

分離升級後,感覺秋色園 QBlog 的訪問速度又刷刷的上去了。

 

總結:

至此,秋色園 QBlog  開始走進資料庫最佳化及代碼最佳化雙重結合的整體策略方案,

只是,有一點還沒改的,就是還一直糾結的使用access,別問我為啥不用mssql。

也許某天,Access它跑不動了,最佳化到頂了,其它資料庫就上場了。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.