本文共 1836 字,大约阅读时间需要 6 分钟。
mysql参数介绍(客户端中执行),尽量只修改session级别的参数。
全局参数(新连接的session才会生效,原有已经连接的session不生效)
- set global 参数名=参数值;
- set @@global.参数名 :=参数值;
会话参数
- set [session] 参数名=参数值;
- set @@session.参数名 :=参数值;
- 确定可以使用的内存的上限
- 确定mysql每个连接使用的内存
sort_buffer_size:需要注意,每个连接分配指定大小的内存;join_buffer_size;read_buffer_size;read_rnd_buffer_size。上述都为每个进程分别进行设置,所以要注意配置大小。
- 确定需要为操作系统保留多少内存
- 如何为缓存池分配内存
Innodb_buffer_pool_size:总内存 - (每个线程所需内存 * 连接数) - 系统保留内存key_buffer_size:主要用于myisam引擎
Innodb I/O相关配置
- Innodb_log_file_size:单个日志文件大小
- Innodb_log_files_in_group:日志文件的个数
- 事务日志总大小:
Innodb_log_files_in_group * Innodb_log_file_size
- Innodb_log_buffer_size:日志缓冲区大小
- Innodb_flush_log_at_trx_commit:日志刷新的频率
0:每秒进行一次log写入cache,并flush log到磁盘。如果mysql关闭或重启会导致至少1秒日志的丢失。1:『默认』,在每次事务提交执行log写入cache,并flush log到磁盘。保证不会导致事务日志的丢失。2:【建议】,每次事务提交,执行log数据写入到cache。每秒执行一次flush log到磁盘。
- Innodb_flush_method=O_DIRECT:Innodb刷新的方式。
- Innodb_file_per_table=1:表空间。强烈建议启用。
- Innodb_doublewrite=1:
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和now返回的日期是一样的。(同一条sql同时使用sysdate返回的结果有可能是不同的,因而建议启用)
- read_only禁止非super用户写权限:在做主从复制时,建议备库启用这个配置项。
- skip_slave_start警用slave自动恢复,(从服务器中进行配置)
- sql_mode设置mysql所使用的sql模式。(建议不要在生产换环境中调整这个值,有可能会导致系统不可用)
strict_trans_tablesno_engine_subtitutionno_zero_dateno_zero_in_dateonly_full_group_by:select字句需要全部列出group by字段,否则报错。
- sync_binlog控制mysql如何向磁盘中刷新binlog
- tmp_table_size和max_heap_table_size控制内存临时表的大小。两个值应保持一致
- max_connections允许最大连接数,一般设置为2000都可以。
- 过分的反范式话为表建立太多的列
- 过多的范式话造成太多表的关联(最多只允许61个表关联)
- 在OLTP中使用不恰当的分区表
- 使用外键保证数据的完整性(性能很低,建议不要使用外键约束)
性能优化顺序
- 数据库结构和sql语句优化
- 数据库引擎的选择和参数配置(不要混合使用存储引擎)
- 系统选择及优化
- 硬件升级
转载地址:http://bcszx.baihongyu.com/