秋色园QBlog技术原理解析:性能优化篇:读写分离与文本数据库(十八)

网友投稿 754 2022-12-02

秋色园QBlog技术原理解析:性能优化篇:读写分离与文本数据库(十八)

秋色园QBlog技术原理解析:性能优化篇:读写分离与文本数据库(十八)

上节回顾:

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

秋色园 ​​QBlog​​ 对于频繁产生更新操作的访问计数器(用户表及文章表),进行了另一种优化方案处理,使得原来并发进行的操作,变成了定时的单个队列式顺序更新操作,有效的解决了计数器引发的并发的问题。

本节概要:

虽然减压方案频繁出招,可是依旧没能阻挡住access黄金4K的绝杀。

在压力之下,梦幻潜能再次被激发。

于是,新的绝招再次出世:一个失传已久的招数:​​文本数据库​​。

本节内容:

1:分析寻找优化点:

通过 ​​CYQ.Data​​ 的 AppDebug(即将发布的V4.5.5版本包含此类),打印出页面的SQL语句:

PS:关于打印页面SQL语句的优化,可见之前的文章:​​秋色园QBlog技术原理解析:性能优化篇:全局的SQL语句优化(十三) ​​

首先观察页面这些语句,我们看到这里涉及到几条语句:

1:第一次的表架构获取语句,即where 1=2的语句

2:博客用户的信息读取语句

3:友情链接的语句

PS:如果没有缓存,当然还有很多和文章列表相关的语句,文章的下节重点再讲。

然后我对着这些语句寻思了很久时间,最后得出结论,得把这些语句消灭掉。

2:步步分析并对可优化点进行优化:

2.1:消灭表架构读取SQL语句

这个其实关系不大,因为一个表仅读一次,而且之后全局默认缓存30分钟,所以出现频繁非常低,不过了为追求首页0语句,我还是比较严肃的把它给消灭了,怎么消灭的?

消灭其实还是很好解决的,只要首次读取时,把表架构外置到文本中即可,于是架构的读取顺序就变成了:缓存->文本->数据库。

下面给一张表架构外置文本和架构外置架构示例图:

2.2:消灭用户信息的读取SQL语句

其实用户表是个大问题,经常也会出现的4K,因为有太多的语句,可涉及到用户表的读取。

为此,虽然说用户信息每次读取完后也会进行缓存,但是,用户数量比较多,搜索引擎来来回回,啥用户也会扯到,所以总体来来回回就变的读取相当相当的频繁,为此,我想了一想,把它给消灭了,怎么消灭的?

同理,第一次读取时,我把用户信息外置到文本了,然后用户后台更新数据的时候,也刷新文本。

然后读取自然的顺序就变成了:缓存->文本->数据库。

于是当然的,秋色园现在4000多的用户,就产生了4000多个文本了,看似规模很庞大!

难免有人要发出感叹,要是你100万用户,不就产生100万个文本了?我想说,求之不得啊!

下面给一张用户信息文本及用户信息以json格式存储的示例图:

2.3:消灭友情链接的读取SQL语句

用户的友情链接,比起用户信息来说,不算重点,不过你会发现,用户的每个页面可都是也有友情链接的。

所以,我打算把它也给灭了,怎么消灭的?

有了上面两步的经验,这步实施起来太easy了,同理,首次把用户的友情链接转存到文件中,然后读取就是文本读取了,后台修改的时候,也是读的文本的,不过写的时候,先写数据库,再写文本。

于是,4000多用户,也会产生4000多的友情链接的文本。

下面给一张友情链接的文本及友情链接列表以json格式存储的示例图:

2.4:文章列表的SQL语句呢?

这里必须严肃的说一下,大量的文章列表的SQL语句,并没有使用文本的方式进行消灭。

为啥没有呢?

原因也很简单,因为文章列表涉及到查询及排序还有分组等复杂语句,文本不太好操作这些事情。

那文章列表是如何进行的优化,这是个大工程,当时我在外散步连续思考了3天,也是秋色园​​QBlog​​ 至今为止的最后一次优化,这么大工程,具体下节详细介绍了。

总结:

秋色园​​QBlog​​ 通过借助于文本,将大量的读取数据库转移到文本读取中,有效的降低了数据库的压力,同时网站运行也顺畅了很多。

经过一场应用之后,对文本有了第一印象:

优点:速度快,小数据量(10万或10M上下)简单的存储与读取非常方便。

缺点:删除,更新,查询,分页,排序及并发控制等操作复杂,而且数据量也不适合太多。

另外据网上搜索“文本数据库”的结果看来:

文本数据库以前在php界很流行,多数论坛都采用文本数据库,而且抗并发能力相当强,当然这背后相信有一定的技术手段在处理,然后后来的后来,php基本都统一mysql了。

至于-界,文本数据库却从没流行过,这是为什么呢?

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Sagit.Framework For IOS 开发框架入门教程6:网络请求STHttp
下一篇:文本数据库--.Net界未来的一朵奇葩
相关文章

 发表评论

暂时没有评论,来抢沙发吧~