MySQL性能调优(系统参数调优)总结
最近,发现数据库中偶尔会发现丢失数据的问题,为了解决此问题,查询了很多资料,最终优化mysql。
查看项目log,发现丢失数据的时间点报错1205,通过查询mysql官方错误代码对照表得知,1205是数据库发生阻塞。经过分析发现,项目中某些表会不断的进行写操作,而读操作却很少,写操作意味着排它锁(写锁),如果线程太多,某个线程进行写操作,同时会锁表,其他线程只能处于等待状态,MySQL的系统参数innodb_lock_wait_timeout为锁等待时间,默认为50s,如果其他某个线程等待时间超过50s,那么这么线程不会进行往下执行,报1205阻塞的错误。
将innodb_lock_wait_timeout的值调大,可以保证数据丢失的会少点,但是这样可能会引起更多的线程等待,mysql的性能会降低。
最后做出的决定还是在mysql的执行效率的找解决办法,对于系统参数进行调整,让mysql提升SQL的执行速度。
sort_buffer_size = 4M
#默认为256KB
# Sort_Buffer_Size 是一个connection级参数,在每个connection(session)第一次需要使用这个buffer的时候,一次性分配设置的内存。
#Sort_Buffer_Size 并不是越大越好,由于是connection级的参数,过大的设置+高并发可能会耗尽系统内存资源。例如:500个连接将会消耗 500*sort_buffer_size(8M)=4G内存
#Sort_Buffer_Size 超过2KB的时候,就会使用mmap() 而不是 malloc() 来进行内存分配,导致效率降低。
join_buffer_size = 2M
#默认为256K
#用于表间关联缓存的大小,和sort_buffer_size一样,该参数对应的分配内存也是每个连接独享。
#如果应用中,很少出现join语句,则可以不用太在乎join_buffer_size参数的设置大小。
#如果join语句不是很少的话,个人建议可以适当增大join_buffer_size到1MB左右,如果内存充足可以设置为2MB
thread_cache_size = 512
默认为18
query_cache_size = 32M
默认值为1M
query_cache_limit = 2M
#默认1M
innodb_autoextend_increment = 256
#默认是8M
#当自动扩展表空间被填满之时,为扩展而增加的尺寸(MB为单位)
# mysql 5.6.5版本之前默认值是8Mb,从5.6.6版本之后默认为64Mb,最小值为1Mb最大值为1000Mb。
#这个参数受到innodb_file_per_table参数的影响
max_allowed_packet = 100M
#默认4M
innodb_table_locks = 0
#使用LOCK TABLES虽然可以给InnoDB加表级锁,但必须说明的是,表锁不是由InnoDB存储引擎层管理的,而是由其上一层──MySQL Server负责的,仅当autocommit=0、innodb_table_locks=1(默认设置)InnoDB层才能知道MySQL加的表锁,MySQL Server也才能感知InnoDB加的行锁,这种情况下,InnoDB才能自动识别涉及表级锁的死锁;否则,InnoDB将无法自动检测并处理这种死锁。
#如果autocommit=1,Innodb的内部表锁可能会导致deadlock,可以通过设置innodb_table_locks=0来解决这个问题
innodb_buffer_pool_size = 16G(此参数为解决问题的关键,最初有的统计报表打开需要十几秒,此参数调整后,最多两三秒就打开了)
#默认为8M
#InnoDB 用来高速缓冲数据和索引内存缓冲大小
#InnoDB最重要的设置,对InnoDB性能有决定性的影响
#可以设置60-80%的内存
innodb_additional_mem_pool_size = 20M
#默认值为1MB
#InnoDB 用来存储数据字典(data dictionary)信息和其它内部数据结构(internal data structures)的存储器组合(memory pool)大小
#参数对系统整体性能并无太大的影响,只要能存放需要的数据就好,否则只会浪费内存
#几百个Innodb 表的,推荐20M以内就足以了。
#此参数在5.7中已经移除
https://dev.mysql.com/worklog/task/?id=7628
innodb_read_io_threads = 6
#读线程数
innodb_write_io_threads = 6
#写线程数
innodb_log_buffer_size = 48M
#默认为16M
#当事务提交时,保存脏数据到内存中,后续再刷新保存到磁盘
#适当调整此参数大小,可以减少磁盘I/O
查找相关资料进行调整后执行效率提升了,查看一些操作的执行时间,都是在1秒内完成,可以满足本公司的业务需求,不会造成数据丢失。
刚开始有点想不通,为啥mysql官方的版本不给个优化好的安装包,后来想了半天,可能是考虑到某些用户的电脑配置问题吧,或者因为mysql免费,如果想进行优化,那就自己想办法吧。
此文章的优化方案,只是对单机版的mysql进行优化,不是SQL优化。如果想实现高并发高可用的mysql解决方案,建议采用:读写分离、分库分表等解决方案吧。
MySQL性能调优(系统参数调优)总结相关推荐
- drbd mysql性能_drbd性能测试及调优
主库: ----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system-- usr sys idl wai hiq siq| ...
- MySQL性能调优与架构设计——第11章 常用存储引擎优化
第11章 常用存储引擎优化 前言: MySQL 提供的非常丰富的存储引擎种类供大家选择,有多种选择固然是好事,但是需要我们理解掌握的知识也会增加很多.每一种存储引擎都有各自的特长,也都存在一定的短处. ...
- mysql工具使用意义_MySQL性能分析、及调优工具使用详解
本文汇总了MySQL DBA日常工作中用到的些工具,方便初学者,也便于自己查阅. 先介绍下基础设施(CPU.IO.网络等)检查的工具: vmstat.sar(sysstat工具包).mpstat.op ...
- mysql buffer used_MySQL性能调优(软调优)
基于一台普通版的MySQL服务器 目的:加快服务器的响应速度 进程数=进程*线程 1.Mysql的查询过程 1)客户端向服务器发送连接请求 2)服务器端(连接池)开辟线程响应用户请求 3)用户发起sq ...
- 转】MYSQL性能调优与架构设计之select count(*)的思考
原博文出自于: http://blog.fens.me/category/%E6%95%B0%E6%8D%AE%E5%BA%93/page/5/ 感谢! Posted: Feb 7, 2013 Tag ...
- MySQL性能调优与架构设计——第4章 MySQL安全管理
第4章 MySQL安全管理 前言 对于任何一个企业来说,其数据库系统中所保存数据的安全性无疑是非常重要的,尤其是公司的有些商业数据,可能数据就是公司的根本,失去了数据的安全性,可能就是失去了公司的一切 ...
- MySQL性能调优与架构设计——第5章 备份与恢复
第5章 备份与恢复 前言 数据库的备份与恢复一直都是 DBA 工作中最为重要的部分之一,也是基本工作之一.任何正式环境的数据库都必须有完整的备份计划和恢复测试,本章内容将主要介绍 MySQL数据库的备 ...
- MySQL 性能调优之存储引擎
原文:http://bbs.landingbj.com/t-0-246222-1.html http://bbs.landingbj.com/t-0-245851-1.html MySQ ...
- mysql性能监控 调优_MySQL管理之道:性能调优、高可用与监控(第2版)
MySQL管理之道:性能调优.高可用与监控(第2版) 作者:贺春旸 著 出版日期:2016年08月 文件大小:71.36M 支持设备: ¥50.00在线试读 适用客户端: 言商书局 iPad/iPho ...
- 经典!《MySQL性能调优手册》高清电子版,限时 3 天免费下载
点击上方"逆锋起笔",关注领取视频教程 ☞ 程序员进阶必备资源免费送「各种技术!」 ☜ 作为最流行的开源数据库软件之一,MySQL数据库软件已经是广为人知的了,性能调优是MySQL ...
最新文章
- struts 2 标签之s:tree/和s:treenode/简单实例
- python中读取文件编码_[转载]python中使用文件的读取编码问题
- JS+PHP实现登录后自动执行之前的操作
- 学业水平考试b能上985吗_这是最好考的985高校,如今被“降级”到双一流B类,真让人惋惜...
- 关于Swift中的泛函数find的问题
- 一、用户画像是如何生成的
- 前端网页设计必逛的六个宝藏网站(非常值得收藏)
- web前端开发基础入门教程之HTML5 浏览器支持
- 次世代角色建模入门教学-人体比例和肌肉骨骼
- Linux——Ubuntu使用个给力的镜像,安装软件速度飞快
- 9步搞定:用迅雷等工具下载百度网盘资源
- SpringBoot集成Swagger文档及自定义访问路径
- Git如何合并分支到主干及合并主干到分支
- 用c语言程序判断谁是小偷
- 【运维面试】面试官: 你每天在公司都做啥?
- Unity 游戏脚本
- c# 计算圆锥的体积_用C#如何编写程序计算球,圆柱和圆锥的表面积和体积? 用C#编写方法并通过方法...
- opencv 图像填充
- SQL Server数据库参考书籍 完成总结
- html5光线传感器,基于一种可以测量光线强度的传感器电路设计