计划WordPress数据库增长的好策略是什么?


9

希望随着WordPress数据库的增长而获得关于优化和保持性能的主题的一些反馈...描绘一幅画....假设您有一个WordPress / Buddypress MU网站,开始于150kb左右(香草安装) ...随着时间的流逝,用户添加博客,论坛,帖子和评论,数据库将增长到5mb...。明年将增长到10mb...。此外,假设托管控件是标准的共置设置,例如Cpanel或Plesk。

  • 在什么时候数据库条目的数量会影响前端网站的性能?
  • 作为网站管理员,您可以做什么来随着数据库的增长保持平稳运行?
  • 当数据库容量为500-600mb时,在五年后的性能方面会有什么期望?

感谢您对保持紧密联系的任何反馈。

问候,

S.


3
您问了7个问题,只接受了1个。不好的记录。:-(

8
25mb什么都不是。当数据库达到GB时,您应该担心数据库的大小。
Dunhamzzz

感谢您的反馈意见。如果我们对500 mb的性能有疑问,那可能是我们的托管公司。PS返回并接受所有问题的答案。
西蒙

Answers:


4

您的具体问题:

1)在影响性能之前,数据库可能包含的“条目数”没有严格限制。性能取决于您的硬件和配置,也取决于数据库的大小和结构。

2)如果您担心数据库层的可伸缩性,则可以在集群中运行,也可以在允许调整大小的云盒或VPS中运行它。如果您的数据库开始变得迟钝,则可以进行扩展(尽管通常需要额外付费)。这些选项会增加成本,但实际上是确保数据库可伸缩性的最佳方法。

3)这实际上取决于您的托管设置和数据库体系结构。但是总的来说(除非您使用的便宜的盒子),我不会担心30MB的WordPress数据库。WordPress在索引表方面做得很好,即使OOB MySQL配置也可以轻松处理此大小的DB上的WordPress查询。当您达到千兆字节时,您可能需要认真考虑性能优化选项。

一般来说:

如果您担心性能,请集中精力调整现有的MySQL设置和/或设置缓存层。缓存可以大大减轻MySQL的负担(尤其是WordPress网站,因为它们通常执行大量的数据库查询)。

如果在正确调整MySQL并设置了一个不错的缓存层之后,您仍然担心硬件配置过剩,可以采取在x时间后删除内容的策略。

这些东西都不是特定于WordPress的。而且我不确定该问题是否有不适用于LAMP堆栈上运行的任何网站或应用程序的答案。但是也许其他人对MU表结构或其他WP特定的DB技巧有一些建议……我不知道。


4

严格从MySQL的观点出发,我对如何改善MySQL实例的数据/索引缓存提出了一些建议。

请记住,有两个主要的MySQL存储引擎

  • 我的ISAM
  • 创新数据库

它们的缓存机制是不同的。您可以根据自己的选择调整存储引擎。

我的ISAM

MyISAM仅缓存索引页。它从不缓存数据。您可以做两件事来改善MyISAM表的I / O。

MyISAM改进#1

任何具有VARCHAR列的MyISAM表都可以在内部转换为CHAR,而无需涉及初始设计。假设您有一个名为mydb.mytable的表,并且想要为其改进I / O,请对其执行以下操作:

ALTER TABLE mydb.mytable ROW_FORMAT=Fixed;

这将使表的大小增加60%-100%,但在不更改其他任何内容的情况下,I / O的性能将提高20-30%。我之前在DBA StackExchange中写道:

MyISAM改进#2

您需要增加MyISAM密钥缓存(按key_buffer_size的大小)。运行此查询,请:

SELECT CONCAT(ROUND(KBS/POWER(1024,
IF(PowerOf1024<0,0,IF(PowerOf1024>3,0,PowerOf1024)))+0.4999),
SUBSTR(' KMG',IF(PowerOf1024<0,0,
IF(PowerOf1024>3,0,PowerOf1024))+1,1))
recommended_key_buffer_size FROM
(SELECT LEAST(POWER(2,32),KBS1) KBS
FROM (SELECT SUM(index_length) KBS1
FROM information_schema.tables WHERE engine='MyISAM' AND
table_schema NOT IN ('information_schema','mysql','performance_schema')) AA ) A,
(SELECT 2 PowerOf1024) B;

这将为您显示基于当前数据集的理想key_buffer_size。

创新数据库

InnoDB缓存数据和索引。如果您将所有数据转换为InnoDB,并且当前正在从所有InnoDB数据库运行WordPress,则需要调整InnoDB缓冲池的大小(使用innodb_buffer_pool_size进行调整)。运行此查询,请:

SELECT CONCAT(ROUND(KBS/POWER(1024,
IF(PowerOf1024<0,0,IF(PowerOf1024>3,0,PowerOf1024)))+0.49999),
SUBSTR(' KMG',IF(PowerOf1024<0,0,
IF(PowerOf1024>3,0,PowerOf1024))+1,1)) recommended_innodb_buffer_pool_size
FROM (SELECT SUM(data_length+index_length) KBS FROM information_schema.tables
WHERE engine='InnoDB') A,
(SELECT 2 PowerOf1024) B;

这将为您显示基于当前数据集的理想key_buffer_size。

投影

如果您预测数据集将增长20倍,那么此查询所建议的结果将是20倍。假设MyISAM数据集为15MB,索引总和为3MB。如果您估计将有20倍的数据,请在/etc/my.cnf中将key_buffer_size设置为60MB:

[mysqld]
key_buffer_size=60M

然后重启MySQL。同样的事情也适用于InnoDB缓冲池。

如果您所有的数据都是InnoDB,则需要对我在StackOverflow中发布的InnoDB基础结构执行完整清理


2

在什么时候数据库条目的数量会影响前端网站的性能?

当查询开始达到托管帐户的资源限制时。

作为网站管理员,您可以做什么来随着数据库的增长保持平稳运行?

密切注意资源使用情况。采取步骤增加资源和/或优化使用率。

当数据库容量为25-30mb时,在五年后的性能方面会有什么期望?

在那个很小的数据库上,性能应该没有任何变化。

如果您希望自己的网站增长缓慢,那么您就有足够的时间学习如何管理增长。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.