`

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性能优化和高可用架构实践.pptx

    "MySQL性能优化和高可用架构实践" 本书《MySQL性能优化和高可用架构实践》是一本详细介绍MySQL性能优化和高可用架构实践的书籍,旨在帮助读者提升MySQL数据库的性能和可靠性。本书的内容涵盖了查询优化的基本原则和...

    MySQL数据库优化实践

    MySQL数据库优化实践主要涵盖硬件配置、操作系统层面的调整以及文件系统的优化等方面,这些优化措施能够显著提高MySQL数据库的性能和响应速度。 首先,硬件优化是基础。开启BBWC(Battery Backed Write Cache)能...

    mysql5优化实践文档

    【MySQL5优化实践文档】 1. 概述 在数据库管理中,MySQL5是一个广泛使用的开源关系型数据库管理系统。随着业务的增长,数据库性能优化成为关键的一环,以确保系统的高效运行。本文档由Xi'an App of Rayhov tech Co...

    千金良方:MySQL性能优化金字塔法则.docx

    MySQL性能优化是指通过调整MySQL数据库的配置、优化数据库结构和查询语句等方式,提高MySQL数据库的性能和响应速度,以满足应用程序的需求。MySQL作为最流行的开源数据库之一,被广泛应用于各种规模的企业和应用程序...

    MySQL性能优化实践.docx

    MySQL性能优化实践主要涉及到多个方面,包括选择合适的存储引擎、索引优化、SQL查询优化以及系统配置等。本文将深入探讨这些关键知识点。 首先,MySQL适用于多种场景,如Web网站系统、日志记录系统、数据仓库系统和...

    Mysql性能优化教程

    总之,MySQL性能优化是一个综合性的过程,需要结合理论知识和实践经验,通过对查询优化、索引设计、系统配置等方面的调整,以达到提升系统性能的目标。在高并发环境下,合理的优化策略可以显著提高系统的响应速度和...

    MySQL参数优化辅助工具

    总的来说,使用“MySQL参数优化辅助工具”能够帮助数据库管理员更高效、更准确地调整MySQL配置,提升系统的整体性能。对于没有足够经验的团队来说,这是一个非常有价值的资源,能够减少摸索的时间,快速达到理想的...

    MySQL性能优化中文手册

    总的来说,MySQL性能优化是一个综合性的过程,涵盖了SQL语句设计、存储过程优化、函数使用、索引管理以及服务器配置等多个层面。通过深入学习和实践,你可以提升MySQL系统的响应速度,满足高并发、大数据量的业务...

    百度mysql性能优化ppt

    【标题】:“百度mysql性能优化ppt”所涉及的知识点涵盖了MySQL数据库在性能调优方面的多个重要环节。在MySQL性能优化中,我们关注的核心是提升数据处理速度,减少资源消耗,从而提高系统的整体效率。 【描述】:...

    caoz的mysql性能优化教程

    caoz会讲解主从复制的配置和优化,以及MySQL集群的实现方式。 八、硬件与服务器优化 硬件配置和操作系统设置也会影响MySQL的性能。教程会讨论如何选择适当的硬件、磁盘I/O优化、CPU和内存资源分配,以及网络配置对...

    MySQL高级优化文档

    本高级优化文档主要针对在Linux环境下运行的MySQL,涵盖了安装、配置以及系统优化等多个方面。以下是相关的知识点详解: 1. **MySQL安装与配置** - **源码编译安装**:为了获取最佳性能和定制化选项,可以选择源码...

    淘宝商品库MySQL优化实践

    在“淘宝商品库MySQL优化实践”这一主题中,我们探讨的是如何针对大型电商平台的商品数据库进行高效、安全且稳定的优化,以提升系统性能并确保服务的持续性。这涉及到多个方面,包括项目背景、技术要求与方案、性能...

    Mysql优化 PPT

    资源调优包括调整MySQL配置参数,如缓冲池大小、连接数限制、查询缓存等。PPT会介绍如何监控MySQL运行状态,识别瓶颈,并根据负载进行相应调整。 最后,SQL最佳实践是避免性能问题的关键。这可能包括遵循规范的SQL...

    mysql性能优化与架构设计

    总的来说,MySQL性能优化与架构设计是一个综合性的任务,需要深入理解MySQL的内部机制,并结合具体业务场景进行实践。通过学习本资料,读者将能够掌握如何有效地提升MySQL的运行效率,为应用程序提供更强大的数据...

    MySQL性能优化的21个最佳实践.zip

    以下是对"MySQL性能优化的21个最佳实践"的详细阐述: 1. **查询优化**:编写高效的SQL语句,避免全表扫描,使用JOIN操作时要谨慎,尽量减少子查询,利用EXPLAIN分析查询执行计划。 2. **索引优化**:为经常用于...

    MySQL性能优化的最佳21条经验

    10. **适当调整MySQL配置**:如增大innodb_buffer_pool_size,缓存更多数据和索引,提高读取效率。 11. **延迟写入策略**:使用innodb_flush_log_at_trx_commit=2,减少每次事务提交时的磁盘I/O。 12. **使用分区...

    MYSQL.rar_MYSQL_mysql 优化_mysql优化_mysql备份_sql优化

    3. 配置优化:调整MySQL服务器的配置参数,如innodb_buffer_pool_size、max_connections、query_cache_size等,以适应特定的工作负载。定期检查和调整这些设置,以保持数据库的最佳性能。 4. 硬件优化:考虑使用更...

    php之mysql优化

    综上所述,MySQL优化是一个多维度的过程,涉及了数据库设计、查询优化、内存配置、硬件升级等多个方面。通过分析提供的文件名,我们可以推测这些文档可能覆盖了这些关键领域,提供了深入的指导和实践建议。在实际...

Global site tag (gtag.js) - Google Analytics