我在使用 600MB 的 MySQL 数据库的网站时遇到问题。网站太慢了。我注意到 MySQL 数据库越大,运行速度就越慢。当它是 5MB 时,网站速度非常快。当它开始变大时,它开始变得越来越慢,现在 600MB,它真的很慢,加载页面需要 10 秒。
我检查了顶级进程,它与高负载或任何事情无关。它甚至与 IOPS 无关,因为我在 HDD 7.2k rpm 驱动器上进行了测试,现在使用 Intel 320 SSD 驱动器进行测试时出现了同样的问题,因此我认为这也与高查询无关。
该网站正在使用 Wordpress,并且有 9 个插件处于活动状态。人们说这可能是插件......好吧也许......但现在我只想将整个数据库缓存在内存中,并希望获得有关从哪里开始以及如何做的帮助和指导。
我有 16GB RAM 和 i5-2400 4 核 @ 3.1 GHz。操作系统是centos 5.7
top - 07:23:57 up 9 days, 12:15, 0 users, load average: 0.09, 0.04, 0.05
Tasks: 162 total, 1 running, 161 sleeping, 0 stopped, 0 zombie
Cpu(s): 8.2%us, 1.0%sy, 0.0%ni, 90.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 16367532k total, 3641628k used, 12725904k free, 612140k …
Run Code Online (Sandbox Code Playgroud) 我正在尝试更多地了解正确的数据库构建的细节,但遇到了一些让我感到困惑的事情。在当前的 Wordpress 安装中,我发现用于索引的 varchar 字段长于 191 个字符,文档似乎说这是最大值。我正在运行 MariaDB 10.x,我相信它与 MySQL 5.7 匹配,并且文档确认了使用 utf8mb4_unicode_ci 整理和压缩作为格式时的限制。
我正在查找 varchar(200) 和 varchar(255) 索引字段,例如 wp_postmeta,字段 meta_key 是 varchar(255)。我错了还是对此感到困惑?数据库使用 InnoDB 引擎。感谢您的澄清。