WordPress支持创建各种自定义文章类型,当你想做一个拥有庞大数据量的网站的时候,网站内容很多很多,可能就会因为达到或超过服务器性能瓶颈而使得网站变卡甚至无法打开。这时候就需要对数据库进行优化,目前最为普遍的优化方案就是数据库读写分离和对数据表进行拆分,减轻单个数据库服务器的存储与读写压力。
前后端分离与数据库读写分离
一个动态网站(即内容数据存放在数据库里的网站),它的加载过程分为几步:1、加载应用层(即PHP文件的运行) 2、加载数据层(即Mysql数据库)。然后数据层的运行方式又可以分为两种类型:读取数据和写入数据。重点来了,当搜索引擎的蜘蛛爬取一个网站页面或者我们打开一个网站页面的时候,其实主要是从数据库读取数据,只有在我们发布文章、收藏文章、购买商品、保存后台设置的时候才需要写入操作。所以数据读取占据了大部分的场景,负载需求也会更大。
因而在数据量大了以后单个服务器的性能就很难再同时支持应用层和数据层这两个模块的负载需求了,这时候就需要做两件事:
1、对网站进行前后端分离,即PHP文件放在一个服务器,MySQL数据库放在另外的服务器。
2、对数据库进行读写分离优化,一个主数据库节点执行读取和写入操作,一个或多个从数据库节点只执行读取操作。当然如果想要更加安全稳定可以像上图一样再给主数据库增加一个备用节点。
数据表拆分
顾名思义,就是对数据库进行更细化的数据表拆分处理,把不同的表放在不同的数据库里。当一个数据库数据量太大以后,就会很影响服务器的性能,导致数据读写速度变慢,进而让网站加载速度也变慢,这时候就需要对一个整体的数据库进行拆分,把数据量很大的一个或多个数据表移动到一个单独的数据库节点里面。比如把文章数据表拿出来单独放一个节点,把产品数据表拿出来再放到另一个节点。
补充:也可以只做数据表拆分而不做上面第一个图里MySQL数据同步,因为目前宝塔面板里的那个MySQL主从复制插件貌似并不是很好用,很多人都反馈有问题,自己也尝试过一次体验并不好。
WordPress数据库读写分离与数据表拆分插件推荐
HyperDB 是一个非常高级的数据库类,它取代了一些 WordPress 内置的数据库功能。主要区别是:
* HyperDB 可以连接到任意数量的数据库服务器,
* HyperDB 检查每个查询以确定合适的数据库。
它支持:
- 读写服务器(复制)
- 可配置的读写优先级
- 本地和远程数据中心
- 私人和公共网络
- 不同数据库/主机上的不同表
- 智能后写主读
- 故障主机的故障转移
- 用于分析的高级统计信息
- WordPress 多站点
它基于目前在 WordPress.com 上的生产环境中使用的代码,其中有许多 MySQL 服务器跨越多个数据中心。
评论0