MySql 笔记 | 通用配置项简述

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/liupeifeng3514/article/details/82805331

通用配置项(配置文件)


下划线的参数表示系统变量,不能在配置文件中使用。

1、bind_address:绑定的网卡ip地址,默认为“0.0.0.0”,即绑定本机的所有网卡地址;每个机器至少包括内网IP和外网IP,如果此mysql只能被内网访问,那么请绑定在内网IP上。
  
2、port:绑定的端口,默认为3306。
  
3、pid_file:pid文件的名称。
  
4、autocommit:是否开启事务自动提交模式,默认为“1”表示开启;如果为“0”,客户端需要声明事务提交的时机,“START TRANSCATION”、“COMMIT”、“ROLLBACK”等。

5、bulk_insert_buffer_size:批量INSERT时的缓冲区大小,我们经常用“INSERT INTO …VALUES(…),(…),(…)…”使用一条INSERT插入多行记录,此值用于控制buffer的最大容量,如果超过此值insert将会被拒绝,默认为8M,单位“字节”。

6、character_set_server:为了避免乱码,建议上述值以及客户端使用的编码保持一致,我们通常选用兼容域更大的字符集,比如UTF8等。

7、concurrent_insert:仅对MyISAM引擎有效,表示是否支持并发插入。“0”表示禁用并发插入;“1”表示没有空洞时支持并发插入,如果有空洞,就首先填充;“2”表示总是支持并发插入,即使表文件有空洞(holes),当表正在被其他线程执行INSERT时,新的INSERT将直接在表文件尾部插入,如果没有并发,才会填充空洞。所谓空洞就是表文件中因为数据删除,而遗留下的未被使用的空间。(因为innodb使用的是聚簇索引,所以也不存在并发插入的问题,insert总是在合适的位置被插入–通常为了提高性能,主键总是自增的,即insert总是在数据文件的尾部发生)

8、connect_timeout:链接超时时间,默认为10秒。
  
9、datadir:数据目录。
  
10、default_storage_engine:默认值为“InnoDB”,如果你的数据库不需要事务支持,可以使用“MyISAM”作为默认引擎。引擎的类型也可以在创建table时指定。

11、flush:每个变更操作执行后(即写入数据文件后)是否立即刷新磁盘,默认为“0”表示关闭,刷新时机有操作系统决定;如果你的数据库保存的数据非常重要,可以开启此值(值为1)。
  
12、interactive_timeout:链接空闲的最长时间,单位“秒”,默认为28800(即8个小时);通常链接有客户端关闭,我们可以不用调整此值。

13、key_buffer_size:MyISAM引擎中,内存中缓存索引的最大尺寸,单位“字节”,默认为8M;如果你的系统由较多的MyISAM表,且建立了索引,你可以通常增加此值来提高读取性能。

14、lock_wait_timeout:尝试获取metadata锁时等待的最长时间,比如DDL操作,或者在DML语句中使用“LOCK TABLES”、“FLUSH TABLES WITH READ LOCK”等。单位“秒”。
  
15、log_error:错误日志的文件名。
  
16、log_output:可选值为“FILE”、“TABLE”,表示日志输出在哪里。
  
17、long_query_time:如果一个query耗时超过此值,将被认定为“慢查询”,SQL语句将会被写入到慢查询log中。单位“秒”,默认值为10,通常这个值有些小,我们可以适度增加此值。

18、lower_case_table_names:表名是否是大小写敏感的,默认为“0”表示区分大小写,“1”表示表名将以小写方式保存且在比较时大小写不敏感,“2”表示表名原样保存但是比较时不区分大小写。因为表名的大小写经常会带来麻烦,建议使用“1”或者“2”。

19、max_allowed_packet:server与client单此交互所能接收、发送的最大数据集,单位“字节”,默认为4M。
  
20、max_connections:所能支撑的最大连接数,默认为151,如果超过此值,将会拒绝链接且反馈“Too many connections”错误,对于production环境,此值显然有些小,建议修改为“65535”等,server所能支撑的最大连接数仍受限于本地系统最大文件描述符的个数,可以通过“ulimit”等方式调整。

21、max_relay_log_size:原理基本同“max_binlog_size”,默认为“0”表示relay log的大小由“max_binlog_size”参数控制。单位“字节数”。
  
22、preload_buffer_size:索引文件预加载到内存的大小,默认为32K,单位“字节”;建议增大此值。
  
23、relay_log_purge:是否开启relay log自动清除功能,默认为“1”表示开启。
  
24、report_host:在replication模式中,slave向master注册时告知的host名称,此值通常为slave的ip地址(建议与bind_address保持一致),仅供展示。
  
25、report_port:通上,此值与port保持一致,仅供展示。
  
26、report_user:replicaiton的用户名,此值可以不需要与实际使用的replication用户名一致,仅供展示。(在master上使用“SHOW SLAVE HOSTS”查看)
  
27、rpl_semi_sync_master_enabled:是否在master上开启“半同步”replication特性,默认为“0”表示关闭;如果replicaiton集群中需要采用半同步机制,那么master上必须开启。(需要安装semisync_master插件)
  
28、rpl_semi_sync_master_timeout:在半同步模式中,master将变更操作提交给“半同步”slave后,等待响应的最长时间,默认为10000,单位“毫秒”;如果超时,此master与此slave将转换成“异步”replication,直到此slave再次跟进为止。(需要安装semisync_master插件)

29、rpl_semi_sync_master_wait_no_slave:在timeout期间,所有的slave都离线时,master是否继续等待,默认为“1”表示继续等待,“0”表示master不再等待,转换成异步replication模式。(需要安装semisync_master插件)
  
39、rpl_semi_sync_slave_enabled:是否在slave上开启半同步模式,默认为“0”表示关闭。(需要安装semisync_slave插件)
  
31、slow_query_log:是否开启“慢查询”日志功能,配合“long_query_time”参数。
  
32、slow_query_log_file:指定慢查询日志文件的名称,默认为“<hostname>–slow.log”。
  
33、socket:指定socket文件的路径和文件名,即unix socket file。
  
35、thread_pool_size:5.6新增参数,用于设定线程池的大小,默认为16,最大不得超过64;线程池中的线程用户并行的接收和执行客户端的SQL语句,合适的线程池大小对性能有很大的提升。(5.7中移除了此选项)

36、tx_isolation:事务的隔离级别,默认值为“REPEATABLE-READ”。(此参数为系统变量,不能在配置文件中声明)
  
37、innodb_buffer_pool_size:innodb用缓存数据和索引的内存大小,默认为128M,单位“字节”,通常设定为内存总量的20%~80%之间。
  
38、innodb_commit_concurrency:innodb允许多少个线程并发的提交事务,默认为“0”表示不限制线程并发数,允许的最大值为1000。(针对整个innodb层)

39、innodb_thread_concurrency:innodb允许的最大并发线程数,默认为“0”表示不限制,最大值不得超过1000;如果并发线程数到达限定值,其他线程将会被加入等待队列,正在等待lock的线程不计为并发线程数。如果你要修改此值,需要经过测试和性能对比才能决定,如果你无法断定,可以将此值暂且设定为CPU的核数或者保持默认值。(针对整个innodb层)

40、innodb_concurrency_tickets:innodb线程持有的tickets数量,默认值为5000。如果并发数达到上限,后续线程将会被添加到等待队列中(由innodb_thread_concurrency控制);当线程被允许进入innodb层后,会给此线程分配“innodb_concurrency_tickets”个tickets,线程可以自由进入innodb层直到tickets消耗完毕(进入即消耗),此后线程需要重新进行并发检查(innodb_thread_concurrency),有可能重新进入队列等待。
  
较小的innodb_concurrency_tickets,对于只处理较少个操作的小事务影响不大,如果一个事务中需要多个操作,那么它需要多次访问innodb层,有可能会耗尽tickets,进而需要多次进行并发检查,这将导致事务的处理时间较长;如果你要减小此值,需要慎重考虑。

41、innodb_doublewrite:是否开启“双写”特性,默认为“1”表示开启;双写就是数据变更首先写入“buffer”,然后再写入实际的数据文件(data files),可以提高数据完整性;不建议关闭!

42、innodb_file_per_table:是否将不同的innodb表数据(数据和索引)保存在各自的.ibd文件中,而不是保存在系统表空间中;它的优点就是,当table被drop或者truncate时,此表的存储空间可以被回收;在5.6.6+版本之后,默认为“1”表示开启,此前版本默认为关闭。当关闭此特性时,InnoDB将所有的表和索引保存在系统表空间的idb文件中,这种存储方式对处理“drop”和“truncate”表时性能较低,因为删除表数据不会导致innodb数据文件的收缩,毕竟所有的innodb表共享底层存储文件空间。

43、innodb_flush_log_at_timeout:默认值为1,单位“秒”,当“innodb_flush_log_at_trx_commit”值为0或者2时,表示binlog刷新的时间间隔。

44、innodb_lock_wait_timeout:事务等待获取行锁的最长时间,默认为50,单位“秒”,一旦超时将会抛出timeout错误。这个参数不会应用在deadlock上,因为mysql有死锁检查,一旦发现死锁将立即回滚而不会等待。
  
45、innodb_read_io_thread、innodb_write_io_thread:IO线程的个数,此值建议保持默认,如果你的系统是基于固态硬盘等更高速的存储设备,可以适当调大此值,默认值为4,最大为64。
  
46、innodb_sort_buffer_size:排序时使用的内存量,默认为1m,单位“字节”,如果排序时内存需要量超过此值将会交换到文件中,对于线上环境,我们可以适度调大此值。
  
47、innodb_support_xa:是否支持XA事务,默认为1表示支持。

猜你喜欢

转载自blog.csdn.net/liupeifeng3514/article/details/82805331