`
wangdei
  • 浏览: 374548 次
社区版块
存档分类
最新评论

MySQL的性能调优工具:比mysqlreport更方便的tuning-primer.sh

阅读更多

年初的时候收藏过一篇关于mysqlreport的报表解读,和内置的show status,show variables相比mysqlreport输出一个可读性更好的报表;但Sundry MySQL提供的脚本相比mysqlreport更进一步:除了报表还进一步提供了修改建议。安装和使用非常简单:

wget http://www.day32.com/MySQL/tuning-primer.sh
chmod +x tuning-primer.sh
./tuning-primer.sh


和mysqlreport一样,tuning-primer.sh也支持.my.cnf

[client]
user = USERNAME
password = PASSWORD
socket = /tmp/mysql.sock

 

样例输出:在终端上按照问题重要程度分别用黄色/红色字符标记问题

-- MYSQL PERFORMANCE TUNING PRIMER --
- By: Matthew Montgomery -

 

MySQL Version 5.0.45 i686

Uptime = 19 days 8 hrs 32 min 54 sec
Avg. qps = 0
Total Questions = 264260
Threads Connected = 1

Server has been running for over 48hrs.
It should be safe to follow these recommendations

To find out more information on how each of these
runtime variables effects performance visit:
http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html
Visit http://www.mysql.com/products/enterprise/advisors.html
for info about MySQL's Enterprise Monitoring and Advisory Service

SLOW QUERIES
The slow query log is NOT enabled.
Current long_query_time = 10 sec.
You have 0 out of 264274 that take longer than 10 sec. to complete
Your long_query_time may be too high, I typically set this under 5 sec.

BINARY UPDATE LOG
The binary update log is NOT enabled.
You will not be able to do point in time recovery
See http://dev.mysql.com/doc/refman/5.0/en/point-in-time-recovery.html

WORKER THREADS
Current thread_cache_size = 0
Current threads_cached = 0
Current threads_per_sec = 1
Historic threads_per_sec = 0
Your thread_cache_size is fine

MAX CONNECTIONS
Current max_connections = 100
Current threads_connected = 1
Historic max_used_connections = 33
The number of used connections is 33% of the configured maximum.
Your max_connections variable seems to be fine.

MEMORY USAGE
Max Memory Ever Allocated : 96 M
Configured Max Per-thread Buffers : 268 M
Configured Max Global Buffers : 7 M
Configured Max Memory Limit : 276 M
Physical Memory : 1.97 G
Max memory limit seem to be within acceptable norms

KEY BUFFER
Current MyISAM index space = 8 M
Current key_buffer_size = 7 M
Key cache miss rate is 1 : 1817
Key buffer fill ratio = 6.00 %
Your key_buffer_size seems to be too high.
Perhaps you can use these resources elsewhere

QUERY CACHE
Query cache is supported but not enabled
Perhaps you should set the query_cache_size

SORT OPERATIONS
Current sort_buffer_size = 2 M
Current read_rnd_buffer_size = 256 K
Sort buffer seems to be fine

JOINS
Current join_buffer_size = 132.00 K
You have had 0 queries where a join could not use an index properly
Your joins seem to be using indexes properly

OPEN FILES LIMIT
Current open_files_limit = 1024 files
The open_files_limit should typically be set to at least 2x-3x
that of table_cache if you have heavy MyISAM usage.
Your open_files_limit value seems to be fine

TABLE CACHE
Current table_cache value = 64 tables
You have a total of 125 tables
You have 64 open tables.
Current table_cache hit rate is 9%, while 100% of your table cache is in use
You should probably increase your table_cache

TEMP TABLES
Current max_heap_table_size = 16 M
Current tmp_table_size = 32 M
Of 564 temp tables, 6% were created on disk
Effective in-memory tmp_table_size is limited to max_heap_table_size.
Created disk tmp tables ratio seems fine

TABLE SCANS
Current read_buffer_size = 128 K
Current table scan ratio = 1 : 1
read_buffer_size seems to be fine

TABLE LOCKING
Current Lock Wait ratio = 0 : 264392
Your table locking seems to be fine

更有用是作者总结的处理MySQL性能问题处理的优先级:尤其是头3条,基本上可以解决大部分瓶颈问题的原因。
# Slow Query Log 慢查询 尤其是like操作,性能杀手,轻易不要使用,让全文索引交给Lucene或者利用Tag机制减少like操作;
# Max Connections 并发连接数:一个MySQL deamon缺省最大连接数是100,调到更高只是为了出现问题是给我们更多的缓冲时间而不是任其一直处于那么高的状态,并发连接数类似于等候大厅:当等候人数过多的时候,一味扩大等候厅不是根本解决问题的办法,提高业务的处理速度,多开几个窗口才是更好的解决方法;我的经验就是超过100: 数据就要想办法(镜像或者分片)分布到更多Deamon上
# Worker Threads: Jeremy Zawondy 曾在部落格上說到:Thread caching 並不是我們最需要關心的問題,但當你解決了所有其他更嚴重的問題之後,它就會是最嚴重的問題。(thread caching really wasn't the worst of our problems. But it became the worst after we had fixed all the bigger ones.)
# Key Buffer
# Query Cache
# Sort Buffer
# Joins
# Temp Tables 临时表
# Table (Open & Definition) Cache 表缓存;
# Table Locking 表锁定
# Table Scans (read_buffer)
# Innodb Status

分享到:
评论

相关推荐

    mysqlreport-3.5.rar

    在使用“mysqlreport-3.5.zip”之前,请确保您的环境已经正确配置了 MySQL 服务器,并遵循提供的文档来正确安装和使用这个工具。这样,您就能充分利用它的功能,为 MySQL 数据库的管理和维护带来极大的便利。

    mysqlreport-3.5.tar.gz

    5. **慢查询日志**:MySQL的慢查询日志记录了执行时间超过预设阈值的查询,是诊断性能问题的重要来源。MySQLreport会汇总这些信息,指出可能需要优化的查询。 6. **InnoDB引擎**:如果使用InnoDB存储引擎,...

    使用开源工具mysqlreport监控Mysql数据库-简易使用方法分享.pdf

    MySQLreport 是一个基于命令行的开源工具,用于监控 MySQL 数据库的状态和性能。它通过收集并格式化 MySQL 的系统变量和状态信息,提供了一个简洁的报告,帮助管理员了解数据库的运行情况。虽然不支持实时刷新,但...

    使用开源工具mysqlreport监控Mysql数据库-简易使用方法.pdf

    MySQLreport 是一个基于命令行的开源工具,用于监控 MySQL 数据库的状态和性能。它通过收集和格式化 MySQL 的系统变量和状态信息,提供了一个简洁的报告,帮助管理员了解数据库的健康状况、性能瓶颈以及资源使用情况...

    mysqlreport-3.5

    总的来说,MySQLreport 是一款强大的 MySQL 监控和分析工具,结合 DBI 和 DBD::mysql,为管理员提供了灵活且全面的数据库性能洞察。通过深入理解这些工具的使用,你可以更好地管理和优化你的 MySQL 环境,提高系统的...

    mysql性能分析工具mysqlreport)

    mysqlreport是由hackmysql.com 的站长所撰写的 Perl Scritps,旨在协助 MySQL DBA 搜集与分析 MySQL 的运作状况。用着感觉不错。 官方网站: http://hackmysql.com/ 软件下载: http://hackmysql.com/mysqlreport

    Linux下的MySQL调优.ppt

    MySQL调优是提升数据库性能的关键步骤,尤其在Linux环境下,由于其开源、灵活性和广泛的应用,MySQL的优化显得尤为重要。调优的目的多种多样,包括满足老板的要求、解决客户投诉、应对服务器性能问题,以及开发者...

    MySQL 效能监控工具

    mysqlreport是一款用于简化MySQL性能监控过程的工具,它能够自动搜集并分析MySQL的关键指标,形成易于阅读和理解的报告。通过该工具,管理员可以快速了解MySQL当前的状态及潜在的问题所在。 **官方网站**: ...

    Linux下的MySQL调优

    MySQL调优是在Linux环境中优化数据库性能的过程,这通常是由于业务需求、用户反馈或系统性能问题而进行的。调优的目标是提高数据库服务的响应速度,减少资源消耗,确保系统的稳定性和可靠性。 **为什么需要调优?**...

    mysqlreport源码安装包三件套

    通过对mysqlreport的源码安装和使用,我们可以更深入地理解MySQL的工作原理,以及如何利用工具进行诊断和调优。同时,这也是对Perl编程语言和数据库接口技术的实践应用,有助于提升开发和运维技能。

    2009系统架构师大会PPT:叶金荣:MySQL优化

    - **其他工具**:如mysqlreport等,提供更详细的性能指标分析。 - **微秒级慢查询分析**: - **microslow补丁**:支持更精细的时间粒度,可精确到微秒级别。 - **主要配置项**:long_query_time, log_slow_filter...

    mysql数据库性能优化

    - **实现方式**:利用MySQL自带的监控工具或者第三方工具如mysqlreport等,定期获取和分析数据库的状态信息。 ##### 2. 正确使用索引 - **索引的概念**:索引是一种特殊的数据结构,用于提高数据检索的速度。 - **...

    MySQL监控工具小集合[归纳].pdf

    3. **phpMyAdmin**:虽然主要作为一个Web模式的MySQL数据库管理工具,phpMyAdmin的“状态”页面提供了MySQL的详细状态信息,包括连接数、查询速率等,方便管理员了解数据库的健康状况。然而,它的监控功能相对较弱,...

    mysqlreport报告分析记录

    MySQLreport 是一个强大的工具,它能提供 MySQL 服务器的详细状态报告,包括各种性能指标、配置参数以及系统资源使用情况。对于数据库管理员来说,理解并分析这些报告是优化数据库性能的关键步骤。本篇文章将深入...

    mysqlreport安装三件套

    mysqlreport安装三件套mysqlreport安装三件套mysqlreport安装三件套mysqlreport安装三件套mysqlreport安装三件套mysqlreport安装三件套mysqlreport安装三件套

    mysqlreport

    mysqlreport 可将重要的 MySQL 系统资讯整理为具有较高可读性的报表,使你更容易阅读与深入理解目前 MySQL 的实际运作状况。除了手动执行 SHOW STATUS 指令并以人眼去过滤与判断目前的系统状态以外,mysqlreport ...

    LAMP源码包

    - **监控与备份**: 使用工具如 mysqlreport 分析 MySQL 性能;定期备份数据库以防止数据丢失。 综上所述,LAMP 源码包提供的组件构成了一套完整的Web开发环境,从服务器到数据库再到编程语言,为开发者提供了强大...

    mysqlreport.tar

    mysqlReport

    javaeye Robbin 论缓存技术

    - 对于数据库缓存,可以通过MySQL的`show status`命令、mysqlreport脚本、MySQL Administrator工具或者专门的innotop工具来监控和分析缓存的使用情况,进行性能调优。 总结来说,缓存技术在现代软件系统中扮演着至...

    mysqlreport显示Com_中change_db占用比例高的问题的解决方法

    标题中的“mysqlreport显示Com_中change_db占用比例高的问题的解决方法”指的是在使用mysqlreport工具分析MySQL服务器性能时,发现`Com_change_db`操作的频率异常高,这可能是导致服务器频繁出现阻塞和重启的原因之...

Global site tag (gtag.js) - Google Analytics