我使用Wordpress和Shopp插件开发了一个55k的产品电子商务网站,可以分享我对MySQL所做的工作,以弥补更好的性能,YMMV和其中一些(或全部)可能不适用于您的情况。
通过查看“show status”sql命令的输出来确定需要增加多少缓冲区/缓存-有一些工具可以优化此输出,这可能很有用,我通常只是使用phpmyadmin来了解一下。http://blog.mysqltuner.com/ 也是一种方便的资源和实用工具。
确保您的查询缓存处于打开状态,并且它足够大,可以拥有非常低的内存双关数字。确保密钥读取的数量不太高(这是一个相对值),增加密钥缓冲区大小可以帮助实现这一点。确保创建的临时表的数量较低,通过增加tmp\\u table\\u size来减少该数量。
打开慢速查询日志并记录慢速查询,使用explain语句手动重新运行这些查询,根据需要添加索引更改列类型等。对于一个查询,我们得到了疯狂的explain语句(就像比较了很多很多比“应该”多的行一样),升级到新版本的MySQL导致MySQL本身对同一查询进行了更好的优化(并且更快)。
如果您使用的是全文索引,我不认为InnoDB表是一种选择——只是不要在繁忙时间更新产品。如果您的电子商务软件包支持它,您可以通过在登台服务器上进行更改,然后将产品表从登台转储并加载到生产中,来最大限度地减少客户中断(性能或其他方面)-但是,如果您的Wordpress安装的其余部分没有一些额外的工作,这将不起作用。
如果你的网站设计和用户体验能够支持它,那么引导用户进入“浏览”模式而不是“搜索”模式(例如:在网站周围单击而不是在搜索框中键入搜索)可以帮助你利用一些非常简单的数据库级和Wordpress级缓存。
预加载缓存-通过使用wget对站点进行爬网,也可以预加载诸如查询缓存和Wordpress级缓存之类的简单缓存。您还可以使用用户搜索行为(通过日志)预加载搜索缓存,并在需要填充缓存时重新获取这些请求。