9

以下是我my.cnf使用 InnoDB 作为默认存储引擎的纯 UTF-8 设置的默认生产 MySQL 配置文件 ()。

[server]
bind-address=127.0.0.1
innodb_file_per_table
default-character-set=utf8
default-storage-engine=innodb

该设置执行以下操作:

  1. 绑定到 localhost:3306(环回)而不是默认的 *:3306(所有接口)。这样做是为了增加安全性。
  2. 每个表设置一个表空间。这样做是为了提高可维护性。
  3. 将默认字符集设置为 UTF-8。默认情况下允许轻松国际化。
  4. 将默认存储引擎设置为 InnoDB。默认情况下允许行级锁定。

假设您可以通过添加最多三 (3) 个配置参数来进一步改进设置。你会添加哪个,为什么?

在这种情况下,改进将意味着性能改进、可靠性改进或易用性/易维护性的提高。您可以假设运行 MySQL 实例的机器将具有 1000 MB 的 RAM。

4

3 回答 3

5

缓存更多数据:

innodb_buffer_pool_size = 512M

如果您写入大量数据:

innodb_log_file_size = 128M

, 避免过多的日志切换。

在任何情况下我都不会添加第三个,所有其他都取决于。

于 2009-07-22T18:10:48.370 回答
1

为 InnoDB 分配比默认值 8M 更多的内存(使用 innodb_buffer_pool_size)肯定是一种增强。关于该值,在您的专用数据库服务器上,您可以将其设置为 RAM 的 80%,并且您设置的值越高,与硬盘的交互就越少。只是为了给我两分钱,我想提一下,您可以通过调整 的值来提高性能innodb_flush_log_at_trx_commit,但是会牺牲 ACID 合规性……根据MySQL 手册

如果 innodb_flush_log_at_trx_commit 的值为 0,则每秒一次将日志缓冲区写入日志文件,并对日志文件执行刷新到磁盘操作,但在事务提交时不执行任何操作。

因此,由于崩溃或任何故障,您可能会丢失一些未正确写入数据库的数据。再次根据 MySQL 手册:

但是,InnoDB 的崩溃恢复不受影响,因此无论值如何,崩溃恢复都会起作用。

所以,我建议:

innodb_flush_log_at_trx_commit = 0

最后,如果您的连接率很高(即,如果您需要配置 MySQL 以支持访问数据库的 Web 应用程序),那么您应该考虑将最大连接数增加到 500 左右。但是因为这或多或少是微不足道的众所周知,所以我想强调back_log确保连接性的重要性。

我希望这些信息能帮助您优化您的数据库服务器。

于 2011-02-15T11:44:04.957 回答
0

增加 innodb 缓冲池的大小,尽可能大:

innodb_buffer_pool_size=768M

您还需要一些临时表的关键缓冲区空间:

key_buffer_size=32M

其他人将取决于您对数据库所做的事情,但 table_cache 或 query_cache_size 将是其他几个潜力。

于 2009-07-22T18:06:28.703 回答