当 zblog 网站的数据量达到百万级别时,会出现网站变慢甚至无法打开某些页面的情况,特别是文章和标签页。尽管 MySQL 对百万数据来说是可以承受的,但慢的原因是文章表的数据文件过大,主要是 Content 字段所占用的空间。
标签页通过 like 关键词进行文章检索,而 like 关键词需要进行全表扫描,这会导致整个数据文件的读取和检索。文章页的慢也是因为相关文章列表通常是通过在数据库中检索具有相同标签的文章来实现的,同样使用了 like 关键词。
为了优化性能,可以将文章表的内容字段(Content、Intro)分离到另一张表中,从而减小文章表的数据文件大小,然后通过 ID(添加唯一索引)进行关联,在读取文章内容时通过 ID 进行查找。数据库使用索引进行查询非常快速。
演示站点:http://demo.kelbk.com/。
根据阿里云的压力测试结果,在1分钟的测试中,使用配置为 2H4G 的测试站,以每秒50个请求的并发量进行压测。
更新日志
v1.3.0
1. 优化了分离/恢复数据的代码:使其效率提升以及更加稳定
v1.2.1
1. 修复命令行调用bug
v1.2.0
1. 新增命令行分离和恢复数据
v1.1.15
1. 修复某些情况下无法更新已有文章内容。
v1.1.14
1. 修改获取逻辑。
v1.1.13
1. 修复数据的 bug。
v1.1.12
1. 更新提示文字:在分离数据前,请务必先备份数据库!在分离数据前,请务必先备份数据库!在分离数据前,请务必先备份数据库!
v1.1.11
1. 优化数据分离。
v1.1.10
1. 修复缓存 bug。
v1.1.9
1. 修复还原数据时报错的 bug。
v1.1.8
1. 紧急修复一个 bug。
v1.1.7
1. 修复与某插件的兼容问题。
v1.1.6
1. 修复某些情况下查询次数过多,导致系统变慢。
v1.1.5
1. 增加插件兼容性。
v1.1.4
1. 修复 Windows 服务器兼容问题。
v1.1.2
1. 修复兼容性问题。
v1.1.1
1. 修复与 1.7 版本兼容问题。
v1.1.0
1. 兼容 Z-BlogPHP 1.6 版本。
v1.0.5
1. 修复某些情况下文章内容未更新的 bug。
v1.0.4
1. 优化代码逻辑,提升数据分离和文章发布效率。
v1.0.3
1. 优化与可乐云存储插件的兼容性。
v1.0.2
1. 优化“未完成的操作”提示,在插件首页显示提示信息。
v1.0.1
1. 优化部分代码性能。