【问题标题】:How to set innodb_thread_concurrency in MYSQL如何在 MYSQL 中设置 innodb_thread_concurrency
【发布时间】:2020-05-31 10:30:47
【问题描述】:

我的 MYSQL 数据库非常慢,但是当我将 innodb_thread_concurrency 值从默认的 33 更改为 0 时,每秒选择从 30-40 增加到 600-700。我想在每次数据库启动时设置这个值。我通常更改 my.ini 中的变量。我的系统上有 3 个 my.ini 文件,但正在使用的文件(在 MYSQL Workbench 中列出)位于 programdata 目录中。我已经尝试将变量添加到所有 3 中,但它没有任何区别。我一定是语法错误,但我尝试了几种变体: innodb_thread_concurrency=0 设置变量=innodb_thread_concurrency=0 两者似乎都不起作用。每当我查看系统变量(在 MYSQL Workbench 中)时,innodb_thread_concurrency 为 33,直到我开始会话并输入: 设置全局 innodb_thread_concurrency=0; 在 Unix 系统上,他们谈论 my.cnf,但在我的 W10 系统上不存在这样的文件。

我需要做什么才能在启动时正确设置此变量?

【问题讨论】:

    标签: mysql concurrency innodb


    【解决方案1】:

    正确的语法是:

    innodb_thread_concurrency=0
    

    确保将其添加到文件的 [mysqld] 部分。

    【讨论】:

    • @neilbarton 确保 my.ini [mysqld] 部分中只有一个 innodb_thread_concurrency 行。该部分中的最后一个将由启动使用。
    • 请在编辑、停止/启动实例后发布 MySQL 错误日志中最后 100 行 TEXT 以供分析。
    【解决方案2】:

    在 Windows 上,my.ini 文件可能位于多个位置。见https://dev.mysql.com/doc/refman/8.0/en/option-files.html

    %WINDIR%\my.ini, %WINDIR%\my.cnf
    C:\my.ini, C:\my.cnf
    BASEDIR\my.ini, BASEDIR\my.cnf
    

    BASEDIR 代表 MySQL 基本安装目录。当使用 MySQL Installer 安装 MySQL 8.0 时,这通常是 C:\PROGRAMDIR\MySQL\MySQL 8.0 Server 其中PROGRAMDIR 代表程序目录(通常在英语版本的 Windows 上为 Program Files

    文档还说:

    在 Windows 上,MySQL 程序按指定顺序从下表中显示的文件中读取启动选项(首先读取列出的文件,后读取的文件优先)。

    这意味着如果您在多个位置有一个选项文件,MySQL 服务器将按照我列出的顺序读取所有这些文件。如果后续文件包含innodb_thread_concurrency 的设置,则它设置的值将替换之前文件中设置的值。就像在一个文件中设置较低值的行设置替换文件中较早设置的值一样。

    因此,请务必彻底检查所有文件,以确保您在选项文件中的更改不会被后面的行所取代!

    【讨论】:

      【解决方案3】:

      感谢 Wilson Hauck,这是一个如此奇怪的默认值(我相信仅适用于 Solaris 系统),我从未想过要查看它,但文件下方还有另一个条目将其设置为 33!删除了它,一切都按预期工作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-21
        • 1970-01-01
        • 1970-01-01
        • 2019-05-29
        • 2015-11-15
        • 1970-01-01
        相关资源
        最近更新 更多