共计 1461 个字符,预计需要花费 4 分钟才能阅读完成。
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 秒查看状态变量的增值