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秒查看状态变量的增值