olliejones / index-wp-mysql-for-speed
通过向MySQL数据库表添加高性能键(数据库索引)来加速您的WordPress网站。
Requires
- php: >=5.6.20
- ext-ctype: *
- ext-json: *
- ext-mbstring: *
- composer/installers: ~v2
This package is auto-updated.
Last update: 2024-09-24 21:49:41 UTC
README
一个插件,用于将您的WordPress安装的MySQL数据库索引现代化。
更多信息请点击此处。
国际化
使用此命令生成.pot文件。
wp i18n make-pot . languages/index-wp-mysql-for-speed.pot --path=/var/www/ubu2010.plumislandmedia.local
插件仓库内容
以下是关于仓库的信息。
- SVN URL: https://plugins.svn.wordpress.org/index-wp-mysql-for-speed
- 公共URL: https://wordpresstheme.cn/plugins/index-wp-mysql-for-speed
- GitHub源代码URL: https://github.com/OllieJones/index-wp-mysql-for-speed
制作一次性zip文件
在插件顶级目录中
wp dist-archive .
仓库更新说明。
- 进行更改。
- 确保更新当前版本号的所有位置。
- 提交到GitHub并推送。
为了自动将插件发布到WordPress仓库,我们使用名为WordPress Plugin Deploy的GitHub操作。在GitHub上发布版本的动作现在会将插件部署到WordPress仓库。更多信息请点击此处。
自动化前的插件发布
请参阅此内容。
仅为此存档目的。请使用自动化流程。
- 如果尚未完成,请执行以下操作
svn co https://plugins.svn.wordpress.org/index-wp-mysql-for-speed svn
- 将待发布的文件复制到
svn/trunk
目录。 - 从
svn
目录添加任何新文件svn add svn/trunk/code/whatever.ext
- 从
svn
目录执行以下操作svn cp trunk tags/xx.yy.zz
其中xx.yy.zz
是要发布的版本 - 执行此操作
svn ci -m "vxx.yy.zz commit message"
svn ci
可能会在网页浏览器中提示。如果看起来卡住了,请查看浏览器。
目标表是这些
- wp_options: WordPress实例的数据,包含默认设置和主题/插件配置等信息。
- wp_postmeta: 页面、文章、附件、WooCommerce产品和类似项目的元数据。
- wp_usermeta: 描述WordPress用户和WooCommerce客户的元数据。它与wp_postmeta具有相同的特征。
- wp_termmeta: 与wp_postmeta类似,此表包含描述标签、分类和各种WooCommerce数据的元数据。
更改键如何产生影响?(奇怪的)
所有现代MySQL数据库都使用名为InnoDB的存储引擎来存储数据。(MySQL的早期版本使用了一个不同、更简单的存储引擎,名为MyISAM。如果你还在使用它,是时候升级了。真的。)WordPress的数据库表都有一个主键。将主键想象成图书馆一本书的目录号。例如,你通过在图书馆的在线目录中搜索“MySQL”或“数据库管理”来查找Sheeri Cabral和Keith Murphy的优秀的MySQL管理员圣经。你的在线搜索会给你这本书的目录号。然后你在图书馆里四处寻找含有这样号码的书架。当你找到它时,你就取出这本书。InnoDB主键就像这样工作(但不需要四处乱逛)。一旦知道了主键,它就可以非常快速地获取数据。在数据库管理的世界中,这被称为聚集索引。因此,选择一个好的主键可以使InnoDB查找数据变得非常快。
InnoDB还提供次级键。次级键包含像“MySQL”或“数据库管理”这样的搜索词,我们曾经用它来查找Sheeri的书。这些次级键带我们找到主键。我们可以将InnoDB的键想象成按字母顺序排序。(从技术上讲,它们使用B树数据结构。)例如,作者键可能包含“Cabral, Sheeri”和“Murphy, Keith”。如果我在作者键中查找“Cabral”,我会立即找到Sheeri,获取主键,并获取她的书。(这在InnoDB中只需要几毫秒。)但是,如果我想查找“Sheeri”,我可能需要扫描每个作者的名字才能找到她:可能会有名叫“Aardvark, Sheeri”和“Zyzygy, Sheeri”的作者。我知道没有,但软件不知道。这需要时间。WordPress使用这种方式查找键时,会变得很慢。为了使这种查找更快,我们在作者的名字上添加一个新的次级键。
因此,我们可以调整主键和次级键,使WordPress更快地从数据库表中获取所需内容。这个插件就是做这个的。
我们具体做了哪些键的更改?(更加复杂)
主键有两个作用。它们可以唯一标识它们的数据,并且处理快速查找的聚集索引。它们的唯一标识作用意味着数据库设计者通常会设置表,为每个项目——每行数据——设置一个自动递增的序列号作为主键。一旦你知道了序列号,你就可以快速从聚集索引中获取项目。但是,如果你用其他方式识别项目,你将多一个查找步骤,这会减慢你的速度。
例如,wp_options表包含WordPress每次有人查看页面时检索的数十行数据。例如,具有option_name为“home”的行包含这个WordPress实例的https://plumislandmedia.net。为了获取这些信息,WordPress会对数据库说。
SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes'
wp_options 表有一个自动增长的唯一主键,每行都有一个数字,称为 option_id。它还有一个在 "autoload" 列上的键,这有助于加快对 autoload = 'yes' 的过滤。这是一个设计得很好的表(当然!WordPress 的开发者是诗人)。但我们能做得更好,尤其是考虑到我们经常需要获取所有自动加载的行。我们可以将表的主键改为包括两列而不是一列:autoload 和 option_id。它仍然具有唯一性:option_ids 是唯一的。但在主键中将 autoload 放在第一位意味着 MySQL 可以直接从聚簇索引中检索自动加载的行,而不是在次级键中查找主键。节省的毫秒和毫瓦累积起来,尤其是在繁忙的网站上。因此,我们这样更改主键。
ALTER TABLE wp_options ADD PRIMARY KEY (autoload, option_id)
实际的更改比这要复杂一些,但你应该明白了这个思路。