天天看點

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

文章回顧:

附章:

上節回顧:

本節内容:

基礎說明:

而操作一個正在運作的幾百M的access資料庫,實在不是件容易的事,是以優化工作隻能在技術上尋求突破。

是以稍為偏移了一下,把整體優化的壓力,部分分擔到了access資料庫。

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

基礎分析:

而文章表中占最多空間的,得屬文章的内容了,本節将把它給抽出來。

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

部落格文章表:Blog_Content

字段:

ID  文章ID

Title 文章标題

Body 文章内容

Abstract 文章簡介

...... 其它字段省略

這裡有一個正常文章表的設計,就是文章的内容Body 字段,通常是放在文章表中的。

而這個字段出現及使用是在什麼情況?

出現1:背景發表或編輯文章時

出現2:檢視文章。

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

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

是以,将不常用的,又占有90%以上空間的文章内容 Body 字段獨立出來,顯得相當有必要。

于是進行分表:

多了一個Blog_ContentBody表:

字段,就兩個:

ID:文章ID

Body:文章内容。

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

于是再進行分庫:

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

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

從myspace.mdb,更名為:

qblog.mdb 主資料庫

qblogbody.mdb 文章内容資料庫

當然,表分了,庫也分了,代碼不可能不跟進,技術手段也得跟着更新。

更新的實作與操作步驟:

1:分表分庫,代碼動改相容更新

1:删除Blog_Content表的Body枚舉字段。

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

    public enum U_QBlogBodyEnum

    {

        Blog_ContentBody,

    }

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

3:釋出編輯文章和顯示文章,增加文章内容的獨立操作函數。

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

2:資料庫分庫步驟:

2:打開原來的表Blog_Content,删除Body字段,然後壓縮一下資料庫,剩下20多M了。

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

總結:

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

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

     本文轉自cyq1162 51CTO部落格,原文連結:http://blog.51cto.com/cyq1162/606977,如需轉載請自行聯系原作者