mysql表参数_MySQL常⽤参数列表
收集⼀些常⽤的MySQL参数,⽅便⽇后使⽤。
全局参数
通⽤配置
max_connections
MySQL能创建的最⼤连接数,如果数据库的并发量⽐较⼤,建议调⾼此值,以增加并⾏连接数量,当然连接数越多,由于MySQL会为每个连接创建连接缓冲区,连接数越多会消耗更多内存
open_files_limit
MySQL打开的⽂件描述符限制,默认最⼩1024
port
= 3306 守护进程监听端⼝
socket
= /tmp/mysql.sock 本地sock⽂件
basedir
= /opt/mysql57 mysql安装⽬录
datadir
= /opt/mysql57/var mysql数据⽬录
back_log
= 600 参数值指定到来的TCP/IP连接的侦听队列的⼤⼩
max_connect_errors
= 6000 允许每个客户端最多尝试登录次数
skip-name-resolve
跳过域名解析,只使⽤ip
default-storage-engine
= InnoDB 默认存储引擎
缓冲区参数
key_buffer_size
key_buffer_size指定索引缓冲区的⼤⼩,它决定索引处理的速度,尤其是索引读的速度。
query_cache_size
使⽤查询缓冲,MySQL将查询结果存放在缓冲区中,今后对于同样的SELECT语句(区分⼤⼩写),将直接从缓冲区中读取结果。
record_buffer_size
每个进⾏⼀个顺序扫描的线程为其扫描的每张表分配这个⼤⼩的⼀个缓冲区。如果你做很多顺序扫描,你可能想要增加该值。
wait_timeout
指定⼀个请求的最⼤连接时间,对于4GB左右内存的服务器可以设置为5-10。
innodb引擎相关配置
sync_binlog
⼆进制⽇志⽂件binlog的刷新写⼊⽅式,这个参数不仅影响到Binlog⽇志对MySQL所带来的性能损耗,⽽且还影响到MySQL中数据的完整性。参数设置说明如下:
1) sync_binlog=0,
当事务提交之后,MySQL不做fsync之类的磁盘同步指令刷新binlog_cache中的信息到磁盘,⽽让⽂件系统⾃⾏决定什么时候来做同步,或者cache满了之后才同步到磁盘。如果没刷新到磁盘前系统宕机,则会丢失最后的binlog内容,但是此参数性能最佳
2) sync_binlog=n,
当每进⾏n次事务提交之后,MySQL将进⾏⼀次fsync之类的磁盘同步指令来将binlog_cache中的数据强制写⼊磁盘。
innodb_flush_logs_at_trx_commit
InnoDB引擎事务⽇志⽂件的刷新写⼊⽅式,这个参数对InnoDB引擎的写⼊性能来说⾮常重要,有以下3种设置:
1) =1时,在每个事务提交时,⽇志缓冲被写到⽇志⽂件,对⽇志⽂件做到磁盘操作的刷新。最安全的⽅式,但是速度最慢。
2) =2时,在每个事务提交时,⽇志缓冲被写到⽂件,但不对⽇志⽂件做到磁盘操作的刷新。只有操作系统崩溃或掉电才会删除最后⼀秒的事务,不然不会丢失事务。
3) =0时, ⽇志缓冲每秒⼀次地被写到⽇志⽂件,并且对⽇志⽂件做到磁盘操作的刷新。任何mysqld进程的崩溃会删除崩溃前最后⼀秒的事务
innodb_flush_method
这个参数控制着innodb数据⽂件及redo og的打开、刷写模式,有以下3种设置:
1) 默认是fdatasync,调⽤fsync()去刷数据⽂件与redo log的buffer
2) 为O_DSYNC时,innodb会使⽤O_SYNC⽅式打开和刷写redo log,使⽤fsync()刷写数据⽂件,通常⽐较慢。
3) 为O_DIRECT时,innodb使⽤O_DIRECT打开数据⽂件,使⽤fsync()刷写数据⽂件跟redo log,在Linux上使⽤Direct IO,可以显著提⾼速度,特别是在RAID系统上,避免额外的数据复制和double buffering(mysql buffering 和OS buffering)。
任何数据库,只要涉及到持久化,就与上⾯这三个⽅⾯的参数有极⼤关系,包括NOSQL与内存数据库,有时NOSQL与内存数据库之所以⽐MYSQL快,与这⽅⾯的设置也有很⼤关系
其实,在⼤部分场景下,如果某个产品宣称⾃⼰的写读tps超过其他存储n倍,⼀般来说都是从k-v这个⾓度⼊⼿进⾏优化的,主要⼊⼿的点是树的数据结构优化和锁的细化,⼀般都能在⼀些特定的场景获得5-10倍的性能提升。
innodb_buffer_pool_size
这是Innodb最重要的⼀个配置参数,这个参数控制Innodb本⾝的缓⼤⼩,也影响到,多少数据能在缓存中。建议该参数的配置在物理内存的70%-80%之间。
innodb_io_capacity
这个参数控制Innodb checkpoint时的IO能⼒,⼀般可以按⼀块SAS 15000转的磁盘200个计算,6块盘的SAS做的Raid10这个值可以配到600即可。如果是普通的SATA⼀块盘只能按100算。(innodb-plugin,
mysql文档手机版Percona有这个参数)
innodb_log_file_size
在⾼写⼊负载尤其是数据集很⼤的时候,这个值⾮常重要,值越⾼性能越好,不过可能会增加数据恢复的时候。我设置为128M。
⽇志⽂件:
错误⽇志
log-error=”filename.log”
可以通过如下sql语句查询error⽇志配置路径:
mysql> SHOW VARIABLES LIKE 'log_error%';
查询⽇志
参数配置:
log-output=FILE
general-log=1
general_log_file="filename.log"
通过sql语句查询⽇志路径:
mysql> SHOW VARIABLES LIKE 'general_log%';
慢查询⽇志
参数配置
slow-query-log = 1
slow-query-log-file = /usr/loval/var/mysql/mysql-slow.log
long_query_time = 1 #设置满请求时间
log-queries-not-using-indexes
通过sql语句查询慢查询⽇志配置:
mysql> SHOW VARIABLES LIKE 'slow_query_log%';
⼆进制⽇志
log-bin=mysql-bin 表⽰启⽤⼆进制⽇志记录,服务器记录了所有改变数据语句的⼆进制⽇志,⽤于备份和复制。
binlog_format=mixed 设置binlog格式,可选如下三种:
Row,⽇志中会记录成每⼀⾏数据被修改的形式,缺点是会产⽣⼤量的⽇志
Statement,每⼀条会修改数据的SQL都会记录到master的bin-log中,如果sql语句包含函数可能会导致主从数据库的数据不⼀致,⽐如调⽤NOW()函数获取时间
Mixed,MySQL会根据执⾏的每⼀条具体的SQL语句来区分对待记录的⽇志形式,也就是在 statement和row之间选择⼀种。
操作系统优化
⽹络优化
修改/f⽂件
1. 增加SYN队列长度:p_max_syn_backlog = 65535
2. socket资源回收优化
p_tw_recycle = 1 处理TIME-WAIT状态的Socket快速回收
p_tw_reuse = 1 允许将处于TIME-WAIT状态的Socket重新⽤于新的连接
p_fin_timeout = 30 处于FIN_WAIT-2状态的时间
打开⽂件数限制
通过ulimit -a查看限制,修改/etc/f,增加打开⽂件句柄限制
* soft nofile 65536
* hard nofile 65535
参考⽂档
注意:本⽂来⾃Lippi-浮⽣志。本站⽆法对本⽂内容的真实性、完整性、及时性、原创性提供任何保证,请您⾃⾏验证核实并承担相关的风险与后果!
CoLaBug遵循[CC BY-SA 4.0]分享并保持客观⽴场,本站不承担此类作品侵权⾏为的直接责任及连带责任。您有版权、意见、投诉等问题,请通过[eMail]处理,如需商业授权请联系原作者/原⽹站。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论