跳到主要内容

配置

SQL MOD

配置MySQL处理的方式

# 设置SQL模式
set [session/global/persist] sql_mode= `xxx`
  • only_full_group_by 对于group by 聚合操作,如果出现查询有额外的值将不会执行
  • ansi_quotes 禁止用双引号来引用字符串
  • real_al_float real作为float 的同义词
  • pires_as_concat 将|| 视为字符串的连接操作符而非 或 运算符
  • strict_trans_tables /strict_all_tables 在事务存储引擎/所有存储引擎上启用严格模式出现,那么这个SQL语法检查就报错
  • error_for_division_by_zero 不允许0作为除数
  • no_auto_create_user 在用户不存在时不允许grant语句自动建立用
  • no_zero_in_date / no_zero_date 日期数据内/ 日期数据不能为0
  • no_engine_subsitiution 当指定的存储引擎不可用时报错

比较系统运行时配置和配置文件的配置

使用set 命令配置动态参数

pt-config-diff

pt-config-diff u=root,p=,h=lcoalhost /etc/my.cnf

关键性能参数

  1. max_connections 设置MySQL允许访问的最大连接数量
  2. interactive_timeout 设置交互连接的timeout 时间
  3. wait_timeout 设置非交互连接的timeout 时间
  4. max_allow_packet 控制mysql 可以接受的数据包的大小
  5. sync_binlog 表示每写多少次缓冲会向磁盘同步一次binlog
  6. sort_buffer_size 设置每个会话使用的排序缓存区的大小
  7. join_buffer_size 设置每次会话使用的连接缓冲的大小
  8. read_buffer_size 指定了当对一个 myisam 进行扫描时所分配的读缓存池大小
  9. read_rnd_buffer_size 设置控制索引缓冲区的大小
  10. binlog_cache_size 设置每个会话用于缓存未提交的事务缓存大小

存储引擎参数

  1. innodb_flush_log_at_trx_commit
    • 0 每秒进行一次重做日志的刷新磁盘操作
    • 1 每次事务提交都会刷新事务日志到磁盘
    • 2 每次事务提交写入系统缓存每秒向磁盘刷新一次
  2. innodb_buffer_pool_size 设置Innodb缓冲池的大小,应为系统可用内存的75%
  3. innodb_buffer_pool_instances Innodb缓存池的实例个数,每个实例的大小为总缓存池大小/实例个数
  4. innodb_file_per_table 设置每个表独立使用一个表空间文件