`

mysql配置优化实践

阅读更多

我们游戏采用了mysql作为数据库软件,几经优化,已经相对稳定,有连续几个月稳定运行的记录,不过最近发生了比较诡异的现象,数据库有100多个进程突然锁住,用show processlist命令查看,几分钟之内一直是这些进程在执行相同的sql,没有任何结束的迹象,导致tomcat应用服务器飙升到线程池的最大线程,500个线程,然后停止响应。

 

show processlist看到的lock现象很多都是memery engine的表或者myisam engine的表,偶尔会有innodb engine的表,这些lock都是死死的lock,没有一点缓解的现象,由于当时情况比较紧急,游戏内玩家都无法操作,因此运维一般都保留show processlist的记录,然后重启db,重启要花费20分钟左右。一般一个小时左右能恢复正常,玩家可以继续游戏。

 

这样的情况在某个服发生比较频繁,甚至一个礼拜发生一次,非常困扰,老大要求必须解决这个问题,因此用了不少工具去查询mysql的运行情况,包括 mysqlreportmysql-turner等工具,这些在 <<high performance msyql 2ed>>中有推荐。这两个工具用下来,发现mysql-turner比较傻瓜式,会提供优化的建议,但是内容比较少,而mysqlreport提供了比较详细的mysql运行信息,大约有100行,而且对这些信息做了完善的注释。

 

在mysql运行正常的情况下,这两个工具看到的mysql状态都是正常的,只是一些小地方引起了我的注意: mysql query cache的配置,我们开启了mysql 的query cache,但是根据这篇文档, mysql query cache,query cache是一把双刃剑,用得不好反而对系统性能有影响,不少文章指出,innodb为主的数据库,不需要开启query cache,因为innodb有自己的buffer pool等机制,而且我们游戏中有大量的insert操作,会导致cache频繁失效。mysqlreport的报告显示,Qcache hit : insert = 0.4 :1 ,可见cache的命中率非常低,详细可见 http://hackmysql.com/mysqlreportguide#qc_report:ratios

 

后来主程又发了一个mysql query cache的bug过来,http://bugs.mysql.com/bug.php?id=43758 ,开启query cache可能导致thread驻留在'freeing items'状态,而我们采用的mysql版本正好在5.1.36版本之前,因此可能是这个问题导致的。因为每次死锁发生的时候,查看运维的系统负载日志发现,系统的load并不高。也有同事说是因为执行排行等比较耗时的存储过程导致的,我想如果是这个原因的话,最多是部分table被锁住,而且这个innodb的锁可以自行解锁,只是时间问题,从mysql的status看,一直有innodb-lock存在,之前战场的部分table发生锁的现象,也是会自行解锁,或者kill掉一些mysql进程之后可以解锁。

 

之后将mysql query cache关闭了,现在运行两天下来没有发现大的异常,一个明显改进的现象是,mysql的slow log数量减少了很多,从之前的几千降低到了几十,我们slow-log的最少时间是2s,另外inndodb-lock的平均时间减少到1/2,

 

Innodb_row_lock_time_avg 13ms

继续观察一下mysql的运行状态,希望能够在其他参数上做出优化,并且杜绝死锁的发生。

分享到:
评论

相关推荐

    MySQL的安装配置 及 配置,服务管理,基本使用,性能优化,安全性,监控与日志管理,扩展与高可用,备份与恢复,版本升级与迁移

    MySQL配置 MySQL服务管理 MySQL基本使用 MySQL性能优化 MySQL安全性 MySQL监控与日志管理 MySQL扩展与高可用 MySQL备份与恢复 MySQL版本升级与迁移 MySQL数据库的管理和优化是一个持续的过程,需要不断地学习和实践...

    MySQL性能优化的21个最佳实践 - 面试题

    MySQL性能优化的21个最佳实践 | MySQL性能优化需要从多个方面综合考虑,包括数据库设计、索引优化、查询优化、并发控制、缓存配置和服务器硬件配置等。通过综合运用这些优化策略,可以有效提升MySQL数据库的性能和...

    Effective MySQL之SQL语句最优化

    《Effective MySQL之SQL语句最优化》是由MySQL专家Ronald Bradford撰著,书 中提供了很多可以用于改进数据库和应用程序性能的最佳实践技巧,并对这些技巧 做了详细的解释。本书希望能够通过一步步详细介绍SQL优化...

    跟老男孩学Linux运维:MySQL入门与提高实践.txt

    从第5章开始,着手讲解MYSQL的基础命令操作方法、备份和恢复实践、日志、字符集、常用引擎、复制等内容,接着给出读写分离、高可用性方案的企业实践,以及优化方案,帮助读者将所学知识点运用到实际工作中,最后会...

    Effective MySQL之SQL语句最优化(高清)

    《Effective MySQL之SQL语句最优化》提供了很多可以用于改进数据库和应用程序性能的最佳实践技巧,并对这些技巧做了详细的解释。《Effective MySQL之SQL语句最优化》希望能够通过一步步详细介绍SQL优化的方法,帮助...

    2017最新老男孩MySQL高级专业DBA实战课程全套【清晰不加密】,看完教程月入40万没毛病

    第十五部 MySQL数据库优化思想与优化实战(9节) 1-网站打开慢mysql问题多解决方案企业案例.avi 2-MySQL索引优化要点精讲01 3-MySQL索引优化生产案例讲解02 4-linux运维人员必须掌握的核心经验案例.avi MySQL数据库...

    【MySQL】SQL优化(九).pdf

    内容涵盖了MySQL的安装与配置、SQL语言基础、数据库设计、性能优化、安全配置、备份与恢复等多个方面。此外,还包含了一些高级话题,如分区表、复制与集群、存储引擎选择等。资源包形式多样,包括文字教程、案例分析...

    2024最强MySQL安装配置教程(一篇就够了).zip

    【2024最强MySQL安装配置教程(一篇就够了)简介】 ...此外,博客还提供了关于数据库安全和性能优化的最佳实践,帮助读者建立起良好的数据库管理习惯。最后,博客推荐了一些学习资源,供读者进一步学习和提高。

    MySQL-进阶.pdf

    安全配置:掌握 MySQL 的安全配置方法和最佳实践,确保数据库系统的数据安全和访问控制。 扩展与集群:了解 MySQL 的扩展方案、高可用集群配置以及读写分离等高级技术,提升系统的可扩展性和可用性。

    MySQL进阶学习-笔记整理

    1.5、索引优化最佳实践 2、事务隔离 2.1、事务隔离级别及琐机制 2.2、MVCC多版本并发控制机制 3、Mysql日志 3.1、总体架构 3.2、INNODB日志 4、全局优化 4.1、全局参数配置 5、8.0新特性 5.1、Mysql8.0.17新特性 6、...

    【MySQL】MySQL管理 (十四).pdf

    内容涵盖了MySQL的安装与配置、SQL语言基础、数据库设计、性能优化、安全配置、备份与恢复等多个方面。此外,还包含了一些高级话题,如分区表、复制与集群、存储引擎选择等。资源包形式多样,包括文字教程、案例分析...

    老男孩Mysql高级DBA 实战新浪首席DBA 老男孩教育杨海朝老师全程主讲 老男孩Mysql视频.txt

    │ 601-SQL优化最佳实践_rec.mp4 │ 602-存储过程_rec.mp4 │ 603-触发器_rec.mp4 │ 604-自定义函数_rec.mp4 │ 605-视图_rec.mp4 │ 606-外键与缓存_rec.mp4 │ 607-缓冲应用方案_rec.mp4 │ 608-事务_rec.mp4 │ ...

    MySql零基础入门到精通(资料集)SQL语句+触发器+存储过程+安装卸载+导入导出+性能优化

    学习路线已为你标好,初学者不必走弯路浪费时间,一步到位实践精通 第一阶段---MySql入门教程,pdf 第一阶段---MySQL卸载手册.doc 第一阶段---MySQL基本操作教程PPT.ppt 第一阶段---MySQL安装图解.doc 第二阶段---...

    MySQL学习笔记5-数据库性能优化与扩展.md

    重点学习性能优化部分的各种技术方案,逐一对应示例代码进行理解和拓展实践。高可用性和负载均衡部分也需要着重掌握,并结合实例练习配置。本课件内容丰富全面,是数据库优化和可扩展性方面的很好教材。

    MySQL面试题50道

    2、实践中如何优化MySQL? 答: 最好是按照以下顺序优化: 1、SQL 语句及索引的优化 2、数据库表结构的优化 3、系统配置的优化 4、硬件的优化 3、MySQL中有哪些不同的表格? 答: 共有5种类型的表格: 1、MyISAM 2...

    MySQL 5.5.x my.cnf参数配置优化详解

    虽然还没经过我自己的实践检验,但从文章内容来说已经写的很详细了(当然,事实上下面这篇文章很多地方只是翻译了my.cnf原始配置文件的说明,呵呵),所以特地转载收藏一下,大家在对mysql服务器进行优化的时候可以...

    Oracle数据库性能优化的艺术 (文平) 高清PDF扫描版

    《oracle数据库性能优化的艺术》重在“授人以渔”,虽然主要内容是围绕oracle数据库系统展开的,但是书中的观点同样适用于db2、sql server、mysql、postgresql等数据库系统。 oracle数据库性能优化的艺术 目录 ...

    【MySQL】视图(十).pdf

    内容涵盖了MySQL的安装与配置、SQL语言基础、数据库设计、性能优化、安全配置、备份与恢复等多个方面。此外,还包含了一些高级话题,如分区表、复制与集群、存储引擎选择等。资源包形式多样,包括文字教程、案例分析...

    【MySQL】索引 (八).pdf

    内容涵盖了MySQL的安装与配置、SQL语言基础、数据库设计、性能优化、安全配置、备份与恢复等多个方面。此外,还包含了一些高级话题,如分区表、复制与集群、存储引擎选择等。资源包形式多样,包括文字教程、案例分析...

    【MySQL】触发器 (十二).pdf

    内容涵盖了MySQL的安装与配置、SQL语言基础、数据库设计、性能优化、安全配置、备份与恢复等多个方面。此外,还包含了一些高级话题,如分区表、复制与集群、存储引擎选择等。资源包形式多样,包括文字教程、案例分析...

Global site tag (gtag.js) - Google Analytics