我有一台 1 GB RAM 的机器,并已将 apache 设置为使用 150 的 STARTSERVER 和 150 的 MAXCLIENTS,只使用了一半,所以我还有大约 500 MB 的备用 RAM。我希望 MySQL 能够用完这些内存,因为现在运行的 AB 测试显示,使用静态图像我获得 6000req/sec,而使用我的 CMS 我只能获得 180req/sec,这是一个带有 MySQL 后端的 php 脚本。我需要在不触碰 SQL 语句的情况下提高 MySQL 性能,只需作为网络管理员而不是程序员。MySQL 有这个选项吗?500MB 的备用 RAM,我想用完它。
答案1
如果你使用 MyISAM 增加
key_buffer_size=512M
如果你使用 InnoDB
innodb_buffer_pool_size=512M
my.cnf
此外, MySQL 包中通常还有称为的预设,my-huge.cnf
您可以搜索它们。my-large.cnf
my-medium.cnf
my-small.cnf
PS. 你真的应该谷歌一下MySQL 调优为您的存储引擎提供示例。
答案2
一旦完成了内存设置的调整,提高数据库性能通常就归结为创建索引或以其他方式重新排列数据的物理结构以获得更好的局部性,例如通过索引进行聚类。
当然,维护索引也需要大量开销,除非您知道自己在做什么,否则不要进行任何更改。并且,除非给定表中有几千行,否则不要指望数据库会使用其索引。