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

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介:
文章回顾:
1: 秋色园QBlog技术原理解析:开篇:整体认识(一) --介绍整体文件夹和文件的作用
2: 秋色园QBlog技术原理解析:认识整站处理流程(二) --介绍秋色园业务处理流程
4: 秋色园QBlog技术原理解析:UrlRewrite之URL重定向体系(四) --介绍URL如何定位到处理程序
5: 秋色园QBlog技术原理解析:Module之页面基类设计(五) --介绍创建基类和自定义生命周期
附章:
 
 
 
上节回顾:
介绍了 秋色园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它跑不动了,优化到顶了,其它数据库就上场了。
 



     本文转自cyq1162 51CTO博客,原文链接:http://blog.51cto.com/cyq1162/606977 ,如需转载请自行联系原作者



相关文章
|
3月前
|
SQL 数据挖掘 测试技术
南大通用GBase8s数据库:LISTAGG函数的解析
南大通用GBase8s数据库:LISTAGG函数的解析
|
3月前
|
数据库 索引
深入探索数据库索引技术:回表与索引下推解析
【10月更文挑战第15天】在数据库查询优化的领域中,回表和索引下推是两个核心概念,它们对于提高查询性能至关重要。本文将详细解释这两个术语,并探讨它们在数据库操作中的作用和影响。
82 3
|
5天前
|
SQL 存储 关系型数据库
【SQL技术】不同数据库引擎 SQL 优化方案剖析
不同数据库系统(MySQL、PostgreSQL、Doris、Hive)的SQL优化策略。存储引擎特点、SQL执行流程及常见操作(如条件查询、排序、聚合函数)的优化方法。针对各数据库,索引使用、分区裁剪、谓词下推等技术,并提供了具体的SQL示例。通用的SQL调优技巧,如避免使用`COUNT(DISTINCT)`、减少小文件问题、慎重使用`SELECT *`等。通过合理选择和应用这些优化策略,可以显著提升数据库查询性能和系统稳定性。
46 9
|
4月前
|
存储 NoSQL 关系型数据库
数据库技术深度解析:从基础到进阶
【10月更文挑战第17天】数据库技术深度解析:从基础到进阶
150 0
|
28天前
|
存储 缓存 NoSQL
云端问道21期方案教学-应对高并发,利用云数据库 Tair(兼容 Redis®*)缓存实现极速响应
云端问道21期方案教学-应对高并发,利用云数据库 Tair(兼容 Redis®*)缓存实现极速响应
|
3月前
|
存储 负载均衡 监控
数据库多实例的深入解析
【10月更文挑战第24天】数据库多实例是一种重要的数据库架构方式,它为数据库的高效运行和灵活管理提供了多种优势。在实际应用中,需要根据具体的业务需求和技术环境,合理选择和配置多实例,以充分发挥其优势,提高数据库系统的性能和可靠性。随着技术的不断发展和进步,数据库多实例技术也将不断完善和创新,为数据库管理带来更多的可能性和便利。
144 57
|
2月前
|
存储 Oracle 关系型数据库
数据库数据恢复—ORACLE常见故障的数据恢复方案
Oracle数据库常见故障表现: 1、ORACLE数据库无法启动或无法正常工作。 2、ORACLE ASM存储破坏。 3、ORACLE数据文件丢失。 4、ORACLE数据文件部分损坏。 5、ORACLE DUMP文件损坏。
134 11
|
2月前
|
SQL 关系型数据库 MySQL
数据库数据恢复—Mysql数据库表记录丢失的数据恢复方案
Mysql数据库故障: Mysql数据库表记录丢失。 Mysql数据库故障表现: 1、Mysql数据库表中无任何数据或只有部分数据。 2、客户端无法查询到完整的信息。
|
2月前
|
存储 关系型数据库 MySQL
double ,FLOAT还是double(m,n)--深入解析MySQL数据库中双精度浮点数的使用
本文探讨了在MySQL中使用`float`和`double`时指定精度和刻度的影响。对于`float`,指定精度会影响存储大小:0-23位使用4字节单精度存储,24-53位使用8字节双精度存储。而对于`double`,指定精度和刻度对存储空间没有影响,但可以限制数值的输入范围,提高数据的规范性和业务意义。从性能角度看,`float`和`double`的区别不大,但在存储空间和数据输入方面,指定精度和刻度有助于优化和约束。
302 5
|
3月前
|
缓存 关系型数据库 MySQL
高并发架构系列:数据库主从同步的 3 种方案
本文详解高并发场景下数据库主从同步的三种解决方案:数据主从同步、数据库半同步复制、数据库中间件同步和缓存记录写key同步,旨在帮助解决数据一致性问题。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
高并发架构系列:数据库主从同步的 3 种方案

热门文章

最新文章

推荐镜像

更多