QBlog

This blog will record the growth associated with the Autumn Garden distance and the history of the development progress and other relevant circumstances
Bulletin
Welcome to Autumn Garden official blog, please: download and use CYQBlog system, and make your comments and Recommendations.
Article Archive
Article
秋色园QBlog技术原理解析:性能优化篇:数据库文章表分表及分库减压方案(十五)
2011/7/9 3:54:35

上节回顾:

上节 秋色园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它跑不动了,优化到顶了,其它数据库就上场了。

下一篇:秋色园QBlog技术原理解析:性能优化篇:access的并发极限及分库分散并发方案(十六)

 

历史文章回顾:

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

Autumn Garden is QBlog the official site, created by the passing autumn, based on the framework data layers developed cyqdata support multi-user, multi-language, multi-database (access, mssql, oracle), directory level url and other powerful blog system
新浪微博粉丝精灵,刷粉丝、刷评论、刷转发、企业商家微博营销必备工具"
:Register
  
Copyright © 2010-2020 power by CYQ.Blog - Autumn v2.0 All Rights Reserved