秋色园QBlog技术原理解析:性能优化篇:数据库文章表分表及分库减压方案(十五)



文章回顾:









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



版权声明:本文原创发表于博客园,作者为路过秋天,原文链接:



http://www.cnblogs.com/cyq1162/archive/2011/07/09/2101729.html





时间: 2024-07-30 01:54:42

秋色园QBlog技术原理解析:性能优化篇:数据库文章表分表及分库减压方案(十五)的相关文章

秋色园QBlog技术原理解析:性能优化篇:字节、缓存、并发(十二)

文章回顾: 1: 秋色园QBlog技术原理解析:开篇:整体认识(一) --介绍整体文件夹和文件的作用 2: 秋色园QBlog技术原理解析:认识整站处理流程(二) --介绍秋色园业务处理流程 3: 秋色园QBlog技术原理解析:UrlRewrite之无后缀URL原理(三) --介绍如何实现无后缀URL 4: 秋色园QBlog技术原理解析:UrlRewrite之URL重定向体系(四) --介绍URL如何定位到处理程序 5: 秋色园QBlog技术原理解析:Module之页面基类设计(五) --介绍创建

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

上节回顾:   上节 秋色园QBlog技术原理解析:性能优化篇:数据库文章表分表及分库减压方案(十五) 中, 介绍了 秋色园QBlog 在性能优化方面,从技术的优化手段,开始步入数据库设计优化,并从数据的使用情况上进行了分析,从而将文章内容进行分离,得到新的分表,由于内容比较大,进而分了库,达到一种基础减压.   本节内容:   本节将介绍秋色园 QBlog 的Super分库方案,以及何以如此Super分库的原因.   描述说明:   在进行上了上节的分库方案后,虽然感觉一度秋色园QBlog的访

秋色园QBlog技术原理解析:性能优化篇:用户和文章计数器方案(十七)

上节概要:   上节 秋色园QBlog技术原理解析:性能优化篇:access的并发极限及分库分散并发方案(十六) 中, 介绍了 Access的并发上限,及从某种程度上 秋色园QBlog 针对并发上限进行了多个数据的划分,从而最大并发上限从64提升到64*N(个数据库),虽然总和的最大并发值是上升了,但是单个库的最大值并没有变化,或者说单个表的最大并发值没有发生变化,上限仍是64. 于是,对于频繁产生更新操作的访问计数器(用户表及文章表),是该进入优化的方案了.   本节概要:   本节将介绍秋色

秋色园QBlog技术原理解析:性能优化篇:打印页面SQL,全局的SQL语句优化(十三)

文章回顾: 1: 秋色园QBlog技术原理解析:开篇:整体认识(一) --介绍整体文件夹和文件的作用 2: 秋色园QBlog技术原理解析:认识整站处理流程(二) --介绍秋色园业务处理流程 3: 秋色园QBlog技术原理解析:UrlRewrite之无后缀URL原理(三) --介绍如何实现无后缀URL 4: 秋色园QBlog技术原理解析:UrlRewrite之URL重定向体系(四) --介绍URL如何定位到处理程序 5: 秋色园QBlog技术原理解析:Module之页面基类设计(五) --介绍创建

秋色园QBlog技术原理解析:系列终结篇:最后的AOP策略(十九)

开篇闲话: 好几个月没写文章了,从9月15号发布新浪"微博粉丝精灵"V1.0后,持续的几个月都在折腾它,现在都折腾到V3.4版本了. 因此,本篇迟来了三个月了,同时,本篇也是本系列的最后一篇了,也是秋色园最后杀手锏,霸气总该是要外露的.   上节回顾: 上节  秋色园QBlog技术原理解析:性能优化篇:读写分离与文本数据库(十八), 秋色园 QBlog 将一些简单频繁的数据,借用文本外储,来分减一些压力,从而为并发降温,保障网站的顺利运行.   本节概要: 文本外储,在一定程序上解决了

秋色园QBlog技术原理解析:页面Post提交机制(十一)

文章回顾: 1: 秋色园QBlog技术原理解析:开篇:整体认识(一) --介绍整体文件夹和文件的作用 2: 秋色园QBlog技术原理解析:认识整站处理流程(二) --介绍秋色园业务处理流程 3: 秋色园QBlog技术原理解析:UrlRewrite之无后缀URL原理(三) --介绍如何实现无后缀URL 4: 秋色园QBlog技术原理解析:UrlRewrite之URL重定向体系(四) --介绍URL如何定位到处理程序 5: 秋色园QBlog技术原理解析:Module之页面基类设计(五) --介绍创建

秋色园QBlog技术原理解析:认识整站处理流程(二)

在上一节 秋色园QBlog技术原理解析:开篇:整体认识(一) 中,   我们了解了 秋色园 的整体结构,包括文件目录及文件的结构及作用.   本节,将解析 秋色园 的业务处理流程: 看一下Bin目录都有哪些内库,如下图:   以一个简单的请求来看一下,秋色园各dll[即各个项目]之间是怎么分工处理的:   1:用户访问 秋色园 如:http://www.cyqdata.com/   2:UrlRewrite.dll:第一时间接受请求,根据各种规则判断,将请求往下仍   3:Module.dll:

秋色园QBlog技术原理解析:独创的多语言翻译机制(九)

文章回顾: 1: 秋色园QBlog技术原理解析:开篇:整体认识(一) --介绍整体文件夹和文件的作用 2: 秋色园QBlog技术原理解析:认识整站处理流程(二) --介绍秋色园业务处理流程 3: 秋色园QBlog技术原理解析:UrlRewrite之无后缀URL原理(三) --介绍如何实现无后缀URL 4: 秋色园QBlog技术原理解析:UrlRewrite之URL重定向体系(四) --介绍URL如何定位到处理程序 5: 秋色园QBlog技术原理解析:Module之页面基类设计(五) --介绍创建

秋色园QBlog技术原理解析:UrlRewrite之URL重定向体系(四)

文章回顾: 1: 秋色园QBlog技术原理解析:开篇:整体认识(一) --介绍整体文件夹和文件的作用 2: 秋色园QBlog技术原理解析:认识整站处理流程(二) --介绍秋色园业务处理流程 3: 秋色园QBlog技术原理解析:UrlRewrite之无后缀URL原理(三) --介绍如何实现无后缀URL   附说: 为了加快 秋色园 和 CYQ.Data 数据框架 的开源速度及更好的发展, 目前正在寻找开源团队成员,有意向创业加入者, 欢迎点击看此贴:秋色园[CYQ.Data]开源团队寻人   OK