最近,发现数据库中偶尔会发现丢失数据的问题,为了解决此问题,查询了很多资料,最终优化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性能调优(系统参数调优)总结相关推荐

  1. drbd mysql性能_drbd性能测试及调优

    主库: ----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system-- usr sys idl wai hiq siq| ...

  2. MySQL性能调优与架构设计——第11章 常用存储引擎优化

    第11章 常用存储引擎优化 前言: MySQL 提供的非常丰富的存储引擎种类供大家选择,有多种选择固然是好事,但是需要我们理解掌握的知识也会增加很多.每一种存储引擎都有各自的特长,也都存在一定的短处. ...

  3. mysql工具使用意义_MySQL性能分析、及调优工具使用详解

    本文汇总了MySQL DBA日常工作中用到的些工具,方便初学者,也便于自己查阅. 先介绍下基础设施(CPU.IO.网络等)检查的工具: vmstat.sar(sysstat工具包).mpstat.op ...

  4. mysql buffer used_MySQL性能调优(软调优)

    基于一台普通版的MySQL服务器 目的:加快服务器的响应速度 进程数=进程*线程 1.Mysql的查询过程 1)客户端向服务器发送连接请求 2)服务器端(连接池)开辟线程响应用户请求 3)用户发起sq ...

  5. 转】MYSQL性能调优与架构设计之select count(*)的思考

    原博文出自于: http://blog.fens.me/category/%E6%95%B0%E6%8D%AE%E5%BA%93/page/5/ 感谢! Posted: Feb 7, 2013 Tag ...

  6. MySQL性能调优与架构设计——第4章 MySQL安全管理

    第4章 MySQL安全管理 前言 对于任何一个企业来说,其数据库系统中所保存数据的安全性无疑是非常重要的,尤其是公司的有些商业数据,可能数据就是公司的根本,失去了数据的安全性,可能就是失去了公司的一切 ...

  7. MySQL性能调优与架构设计——第5章 备份与恢复

    第5章 备份与恢复 前言 数据库的备份与恢复一直都是 DBA 工作中最为重要的部分之一,也是基本工作之一.任何正式环境的数据库都必须有完整的备份计划和恢复测试,本章内容将主要介绍 MySQL数据库的备 ...

  8. MySQL 性能调优之存储引擎

    原文:http://bbs.landingbj.com/t-0-246222-1.html        http://bbs.landingbj.com/t-0-245851-1.html MySQ ...

  9. mysql性能监控 调优_MySQL管理之道:性能调优、高可用与监控(第2版)

    MySQL管理之道:性能调优.高可用与监控(第2版) 作者:贺春旸 著 出版日期:2016年08月 文件大小:71.36M 支持设备: ¥50.00在线试读 适用客户端: 言商书局 iPad/iPho ...

  10. 经典!《MySQL性能调优手册》高清电子版,限时 3 天免费下载

    点击上方"逆锋起笔",关注领取视频教程 ☞ 程序员进阶必备资源免费送「各种技术!」 ☜ 作为最流行的开源数据库软件之一,MySQL数据库软件已经是广为人知的了,性能调优是MySQL ...

最新文章

  1. struts 2 标签之s:tree/和s:treenode/简单实例
  2. python中读取文件编码_[转载]python中使用文件的读取编码问题
  3. JS+PHP实现登录后自动执行之前的操作
  4. 学业水平考试b能上985吗_这是最好考的985高校,如今被“降级”到双一流B类,真让人惋惜...
  5. 关于Swift中的泛函数find的问题
  6. 一、用户画像是如何生成的
  7. 前端网页设计必逛的六个宝藏网站(非常值得收藏)
  8. web前端开发基础入门教程之HTML5 浏览器支持
  9. 次世代角色建模入门教学-人体比例和肌肉骨骼
  10. Linux——Ubuntu使用个给力的镜像,安装软件速度飞快
  11. 9步搞定:用迅雷等工具下载百度网盘资源
  12. SpringBoot集成Swagger文档及自定义访问路径
  13. Git如何合并分支到主干及合并主干到分支
  14. 用c语言程序判断谁是小偷
  15. 【运维面试】面试官: 你每天在公司都做啥?
  16. Unity 游戏脚本
  17. c# 计算圆锥的体积_用C#如何编写程序计算球,圆柱和圆锥的表面积和体积? 用C#编写方法并通过方法...
  18. opencv 图像填充
  19. SQL Server数据库参考书籍 完成总结
  20. html5光线传感器,基于一种可以测量光线强度的传感器电路设计

热门文章

  1. 1.openpyxl 打开工作簿
  2. IE浏览器下载APK变成zip的解决方案
  3. 用时间换空间 孤独创新的贝壳正在用技术引领产业可持续向前发展
  4. 用Python白嫖微信读书,你想学吗?
  5. ESP8266检测pm2.5 arduino 实现
  6. windows系统后渗透阶段权限维持方法小结
  7. html 冒泡事件拦截,JavaScript阻止事件冒泡与事件捕获
  8. 小米为什么要 3 亿美元入股爱奇艺?
  9. 解决微信域名检测关键问题
  10. 身为网络工程师,除了Wireshark还得会用这些