文章回顧:
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它跑不動了,最佳化到頂了,其它資料庫就上場了。