【问题标题】:Best configuration for MySQL? InnoDB and MyISAMMySQL的最佳配置? InnoDB 和 MyISAM
【发布时间】:2015-07-18 21:17:13
【问题描述】:

我读到 InnoDB 应该比 MyISAM 更擅长写入 MySQL,但是,我正在尝试通过运行 3000 个 MySQL 查询(插入行,8 列 + id)......但结果没有结果如我所愿。
使用 InnoDB 的执行时间约为 5.3 秒,而使用 MyISAM 大约需要 2.2 秒。

我当前的mysql配置是:

innodb_io_capacity = 8000
innodb_read_io_threads = 64
innodb_write_io_threads = 64
innodb_log_buffer_size = 32M
innodb_log_file_size = 564M
innodb_buffer_pool_size = 6G
innodb_buffer_pool_instances = 6
innodb_thread_concurrency = 0

其他一切都是默认值。
我的服务器当前正在运行:Ubuntu 14.04 x64
拥有 12GB 内存
6芯
并且使用 SSD(服务提供商说它提供 10,000 IOPS)

如果我只使用 InnoDB,什么是 InnoDB 的最佳配置,而只使用 MyISAM 的最佳配置是什么(如果我在不使用的情况下禁用 InnoDB,由于某种原因会更快吗?它。)?

现在只是想用我的服务器来存储东西,并且需要写更多的数据,而不是阅读它......而后来,考虑阅读而不是写作。
不确定是否重要,但现在正在运行 nginx(服务器上没有 apache)、php 5.6 和 MySQL 5.6.19。

【问题讨论】:

  • 这最好在 dba.stackexchange.com 上询问。使用 InnoDB,有事务的开销。这 3000 个单独的 INSERT 语句是组合在一起形成一个事务,还是那些单独的事务?
  • 如果您的查询需要 2 秒才能执行,请归咎于查询而不是存储引擎。因此,配置问题无关紧要
  • @akuzminsky 我对查询没有问题,就像我说的,我只是在测试速度。代码+查询当时运行。目前只是试图获得可能的最佳配置

标签: php mysql configuration innodb myisam


【解决方案1】:

MyISAM 不是崩溃安全的,也不是事务性的。InnoDB 正在并且正在确保在完成语句(或 COMMIT)之前将数据同步到磁盘(MyISAM 不会)。

尝试将您的写入集中到一个事务中(BEGIN;INSERT,INSERT;COMMIT),或者并行运行多个插入而不是顺序(或同时运行两者)。这些事情将显着提高性能。

我还会阅读 Stuart Wagner 建议的链接。

【讨论】:

    猜你喜欢
    • 2012-03-01
    • 2011-05-14
    • 2012-01-13
    • 2011-09-17
    • 2011-04-18
    • 2011-07-25
    • 1970-01-01
    • 2012-04-14
    • 2010-11-12
    相关资源
    最近更新 更多