如何优化 MySQL 的内存使用?

T. *_*nes 9 mysql linux memory

我的设置(示例

我在具有以下规格的 Amazon High CPU Extra Large EC2 实例上运行 Linux:

  • 7 GB 内存
  • 20 个 EC2 计算单元(8 个虚拟内核,每个内核有 2.5 个 EC2 计算单元)
  • 1690 GB 本地实例存储
  • 64位平台

我有两个大型 MySQL 数据库在 MyISAM 存储引擎上运行。一个是 2GB,另一个是 500MB。我想确保 MySQL 使用尽可能多的 RAM,以最大限度地提高查询速度。我知道有很多 MySQL 内存配置选项,例如key_buffer_sizeMyISAM_sort_buffer_size,但我不熟悉优化这些选项。

问题

  1. 如何检查 MySQL 当前在 Linux 系统上使用的内存?
  2. 如何最大化/优化 MySQL 内存使用?
  3. 假设我的查询和架构已优化,我还应该考虑哪些其他更改?

san*_*lto 7

这是一个很难的话题。不能在这里回答,整本书都写过这个。我建议让你的 innodb_buffer_pool_size 足够大。如果您使用的是 myisam 表,请检查 key_buffer_size。还应考虑 table_cache 和 max_connections。

这里有一些可以帮助你的东西:

http://www.mysqlperformanceblog.com/2006/09/29/what-to-tune-in-mysql-server-after-installation/ http://www.mysqlperformanceblog.com/2007/11/01/innodb-性能优化基础/ http://www.mysqlperformanceblog.com/2007/11/03/choosing-innodb_buffer_pool_size/

编辑:

正如@drew010 所说,考虑数据库的用途很重要。大量读取 DB 的调整与大量写入非常不同。此外,您可以考虑其他策略。如 Memcached、nosql 数据库等。

  • 同意,相对而言,它们也是相当小的数据库。如果您期望大量的数据库读取访问,那么您可以考虑某种缓存系统,例如 memcached,您的应用程序可以使用它来存储数据库中的值以减少对数据库的访问。如果您主要执行插入操作,那么磁盘将是一个非常重要的因素。在某种程度上,问题取决于您的用例是什么。如果数据变化不大,那么 mysql 查询缓存也应该对更快的查询有很大帮助。还要确保您的索引/主键是好的。 (2认同)