mysql - 基于可用 RAM 调优 MySQL

标签 mysql database-performance

亲爱的,我经历了这一切article但不是我无法在我的 Centos 6.2 上找到名为 '/proc/user_beancounters' 的文件,是否有任何标准计算以根据可用 ram 设置 my.cnf 以增加查询性能。

如果有什么方法的话,假设我得到了8GB RAM,那么MyISAMmy.cnf的配置是什么Innodb 使用可用 RAM 获得最佳性能?

最佳答案

我不得不查找/proc/user_beancounters,它似乎是为 OpenVz 实现的 Linux 的扩展。我怀疑它会出现在普通的 CentOS Linux 中。

首先推荐你don't use MyISAM .它不是 ACID 存储引擎,它使用表锁定。 MyISAM 的唯一好处是它可以将数据存储在比 InnoDB 更少的磁盘空间中(取决于您的表结构)。

没有神奇的调整值可以使所有工作负载都达到最佳状态。如果有,它们将不是可调选项,它们只是预先设置为正确的值。

通常情况下,您拥有的数据多于可用 RAM 的容量,因此考虑到服务器上 RAM 的其他用途,折衷方案是将 innodb_buffer_pool_size 设置得尽可能高。例如,如果您有 Apache 或 Java 应用程序或内存缓存或其他 RAM 用户,请确保他们有他们需要的东西。

您需要对数据运行的查询也是一个重要的考虑因素。如果您有大量查询一直扫描整个表,那么很难将它们保留在缓冲池中。但典型的 OLTP 工作负载定位于“热点”,并在 80% 的时间内查询 20% 的数据。缓存在这里有很大帮助,因为最常请求的数据会被缓存。

针对 OLAP 工作负载进行优化更加困难,在这种情况下,您的查询可能会扫描大量数据库,并且您的数据库大于可用 RAM。

所以基本准则是:

  • 如果可以,请不要使用 MyISAM。
  • 确保其他进程拥有所需的 RAM。
  • 在剩余的 RAM 中,尽可能多地分配给 innodb_buffer_pool_size。人们通常猜测可用 RAM 的 80%。请记住,缓冲池使用的值比您设置的值高出大约 10%。
  • 如果您的数据库小于 RAM,那么让缓冲池大于数据库的大小没有任何好处。 InnoDB 只缓存每个数据库页面一次。

关于mysql - 基于可用 RAM 调优 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41888358/

相关文章:

php - SQL 查询在 MYSQL 中花费更少的时间,在 PHP 应用程序中花费更多时间

Mysql:连接被拒绝错误:111

mysql - 如何在不使用 between 或 >= 的情况下从给定的月份中进行选择?

postgresql - 使用许多常见的子表达式进行更新

生产环境MySql慢查询日志

c++ - 提高SQLite每秒更新的性能?

mysql - 在 Rails 控制台中创建记录

mysql - 使用子查询使用同一个表中的值更新表

MySQL统计输出

MySQL 解释行数限制