MySQL作为一种常见的数据库管理系统(DBMS),其本身的各种配置项极大的影响了其性能。所以有必要进行理解和学习。

配置学习资源路径

我最近在看《高性能Mysql》,其中第8章解说了对于配置的很多事项,都值得理解和学习。当然,官网也是最新信息查阅的重要渠道。

官网【可在5.1 TheMySQL Server找到配置解释。可在5.4找到BinLog相干内容。 】

MySQL配置

配置文件地位:

一般来说,MySQL服务端配置文件的默认地位是:/etc/my.cnf 或者 /etc/mysql/my.cnf
【也能够通过mysqld --verbose --help|grep -A 1 'Default option'确认配置文件的地位】

和nginx相似,也是分目录进行include,便于查看。 (比方 !includedir /etc/my.cnf.d

配置批改根底:

1、mysql配置文件是分段的,要留神配置项放在了正确的段里(比方服务器次要用 [mysqld] 这一段

1、副作用:一些配置项会产生副作用,长期批改配置须要十分小心。(比方变更 query\_cache\_size立刻删除所有查问的缓存,从新构建。
2、变量的值:变量不是越大越好,可能会导致内存替换或者超出地址空间。须要跟进状况设定。

2、配置项有不同的作用域,有的是全局,有的是会话。其次,还有动静变量,可在运行时批改。
3、全局变量:批改后对以后会话及已存在的会话均不失效。可通过SHOW GLOBAL VARIABLES确认。
4、变量的单位:配置时要留神单位,命令行或者配置文件,能够应用后缀指定单位(比方1M等,但要留神,应用SQL的SET指令时就不能应用单位
5、配置文件治理:最好应用git来进行版本治理,加上短缺的正文。能够防止不少问题。

如何创立一个靠谱的MySQL配置?

1、一个好的配置,不是从学习配置项开始,也不是询问怎么设置或者怎么批改,更不是察看服务器行为和询问哪个配置能够晋升性能。
【应该是从了解MySQL内核和行为开始
2、保障根底配置都正确(比方日志门路,缓存配置,端口号,数据库存储地位等。如非必要,尽量应用默认配置。(默认配置禁受过的测试是最多的。
3、优先进行语句优化等其余优化,最初思考批改配置项

一个最小配置示例

一般来说,抉择尽量少的配置(或者说最小配置),如无必要,不必申明(不申明应用默认值)。

当然一些十分重要的配置项,即便应用默认配置,也最好申明进去。(比方default_storage_engine)

见《高性能MySQL》P336

如何创立正当的MySQL配置文件?

{上面的配置项根本都基于上述参考最小配置}
1、Innodb的配置项:

  • innodb_buffer_pool_size 【最外围配置,innodb重大依赖缓冲池。索引、行数据缓存、哈希索引,插入缓存、锁等。必须为innodb配置足够的缓冲池。[ 《高性能MySQL》P343
  • innodb_log_file_size 【日志文件配置
  • innodb_file_per_table
  • innodb_flush_method

2、MySQL配置项:

  • thread_cache 【依据Thread_connected来判断,如果线程数较多,能够适当调大这个值。
  • table_cache

如何确认MySQL以后的状态变量?

1、SHOW GLOBAL STATUS
【或者能够通过SHOW、innotop等工具,确认innodb等的内存利用状况。
2、mysqladmin extended-status -ri60
每60秒查看状态变量的增值