代码之家  ›  专栏  ›  技术社区  ›  Maximus

Innodb性能优化

  •  0
  • Maximus  · 技术社区  · 15 年前

    1. innodb_autoinc_lock_mode=2(它不会生成连续的密钥)
    2. 外键检查=0(禁用外键检查)
    3. --log_bin=关闭用于复制的二进制日志

    问题

    最后一个选项,我想关闭它,但我想知道如果我以后需要复制,如果我再次打开它,它会不会开始工作?

    建议

    谢谢

    2 回复  |  直到 15 年前
        1
  •  2
  •   MarkR    15 年前

    假设您是在一个或几个事务中加载数据,那么大部分时间可能都花在构建索引上(取决于表的模式)。

    如果您的表比innodb缓冲池大(或者几乎和innodb缓冲池一样大),那么您就有麻烦了;不能有效地插入带有索引的ram的表,因为它必须执行读操作才能插入。这使得可以更新现有索引块。

    请记住,磁盘写入是正常的(它们大多是顺序的,而且您有一个电池支持的raid控制器,对吧?),但读取速度很慢,需要避免。

    总结

    • 获取足够的内存,使表适合内存;适当地设置innodb缓冲池(您正在运行x86_64,对吧?)
    • 不用担心操作会花费很长时间,因为MVCC的原因,你的应用程序将能够在以前版本的行上操作,假设它只是在阅读。

    不要做上面列出的任何优化,它们可能是在浪费时间(不要相信我的话-在实验室的测试系统上测试这些操作的基准)。

        2
  •  0
  •   Brian Hooper    15 年前

    要回答问题的最后一部分,不,它不会重新开始工作;如果插入没有被复制,但随后的更新是,结果将不是一个漂亮的景象。禁用外键和唯一键应该是可以的,前提是以后重新启用它们,并处理任何违反约束的情况。

    你多久做一次?能否更频繁地加载较小的数据集?