mysql参数介绍(客户端中执行),尽可能只修改session级别的参数。mysql
全局参数(新链接的session才会生效,原有已经链接的session不生效)sql
- 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_tables no_engine_subtitution no_zero_date no_zero_in_date only_full_group_by:select字句须要所有列出group by字段,不然报错。
- sync_binlog控制mysql如何向磁盘中刷新binlog
- tmp_table_size和max_heap_table_size控制内存临时表的大小。两个值应保持一致
- max_connections容许最大链接数,通常设置为2000均可以。
- 过度的反范式话为表创建太多的列
- 过多的范式话形成太多表的关联(最多只容许61个表关联)
- 在OLTP中使用不恰当的分区表
- 使用外键保证数据的完整性(性能很低,建议不要使用外键约束)
性能优化顺序性能优化
- 数据库结构和sql语句优化
- 数据库引擎的选择和参数配置(不要混合使用存储引擎)
- 系统选择及优化
- 硬件升级