博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql性能优化学习笔记-参数介绍及优化建议
阅读量:5741 次
发布时间:2019-06-18

本文共 1836 字,大约阅读时间需要 6 分钟。

MySQL服务器参数介绍

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引擎

IO相关配置参数

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/

你可能感兴趣的文章
C# Note4:XML序列化和反序列化(含加密解密等)
查看>>
IO中同步、异步与阻塞、非阻塞的区别
查看>>
汇率转换0.1
查看>>
关于TreeView控件的TreeNodeCheckChanged事件无法回发处理
查看>>
BrnMall多店版网上商城正式发布
查看>>
CodeSignal 刷题 —— matrixElementSum
查看>>
201771010121 唐月晨《面向对象程序设计(java)》第四周学习总结
查看>>
Spring Boot 启动加载数据 CommandLineRunner(一般用于项目启动时,用户信息的缓存)...
查看>>
GDUFE ACM-1347
查看>>
Vue2.0入门系列——循环
查看>>
leetcode — convert-sorted-list-to-binary-search-tree
查看>>
eoe·Android 开发门户 - android开发者的必备网站
查看>>
201771010126 王燕《面向对象程序设计(Java)》第七周实验总结
查看>>
android退出程序
查看>>
openjudge 错误探测
查看>>
6609 - Minimal Subarray Length
查看>>
文件流演示案例(一)
查看>>
Asp.net导出Excel/Csv文本格式数据
查看>>
C#SqlDataReader的用法
查看>>
redis持久化策略
查看>>