mysql的配置参数

获取配置信息路径

  • 命令行参数
  • 配置文件

MySQL配置参数的作用域

  • 全局参数:set global 参数名 = 参数值;set @@global.参数名 := 参数值; 
  • 会话参数:set[session]参数名=参数值; set @@session.参数名 := 参数值;

内存配置相关参数

  • 确定可以使用的内存上限
  • 确定MySQL的每个连接使用的内存

sort_buffer_size:排序缓冲区大小

join_buffer_size:连接缓冲区大小

read_buffer_size:对mysiam表全表扫描时分配,必须是4K的倍数

read_rnd_buffer_size:索引缓冲区的大小,在需要时才分配

全部以线程分配

  • 确定需要为操作系统保留多少内存
  • 如何为缓存池分配内存

Innodb_buffer_pool_size:Innodb缓存池的大小

总内存 - (每个线程所需要的内存*连接数)- 系统保留内存 = 缓存池内存大小

key_buffer_size

用于Myisam存储引擎


Innodb的I/O相关配置参数

  • Innodb_log_file_size:单个事务日志文件的大小
  • Innodb_log_files_in_group:事务日志文件的个数
  • Innodb_log_buffer_size:事务日志缓冲区大小(一般32MB到128MB)
  • Innodb_flush_log_at_trx_commit:0——每秒进行一次log写入cache,并flush log到磁盘,1[默认]——在每次事务调教,执行log吸入Cache中,并flushlog到磁盘,2[建议]——每次事务提交,执行log数据写入到cache,没秒执行一次flush log到磁盘
  • Innod_flush_method:数据和日志文件刷新方式,建议设置为O_DIRECT(禁止缓存数据和预读)
  • Innodb_file_per_table:是否建立单独表空间,建议启用
  • Innodb_doublewrite:是否开启双写缓存,避免页没有写完整,建议启用,增加安全性,减少性能

事务日志文件总大小=Innodb_log_files_in_group*Innodb_log_file_size

MyISAM的I/O相关配置参数

  • delay_key_write:OFF每次写操作后刷新键缓冲中的脏块到磁盘,ON只对键表时指定了delay_key_write选项的表使用延迟刷新,ALL对所有MYISAM表都是用延迟键写入

安全相关配置参数

  • expire_logs_days:指定自动清理binlog的天数
  • max_allowed_packet:控制MySQL可以接受的包的大小
  • skip_name_resolve:禁用DNS查找
  • sysdate_is_now:确保sysdate()返回确定日期
  • read_only:禁止非super权限的用户写权限
  • skip_slave_start:禁用Slave自动恢复
  • sql_mode:设置MySQL所使用的SQL模式,strict_trans_tables:当数据无法插入事务存储引擎时会终止操作,对非事务的没有影响||no_engine_subtitution:如果在建表语句中的引擎不可使用时,会终止操作,不会调用默认引擎||no_zero_date:不接受日期为0||no_zero_in_date:不接受部分日期为0||only_full_group_by:在使用group by时,需要写所有没有聚合函数的列

其它常用配合参数

  • sync_binlog:控制MySQL如何磁盘刷新binlog
  • tmp_table_size和max_heap_table_size:控制内存临时表大小
  • max_connections:控制允许的最大连接数