- 浏览: 73439 次
- 性别:
- 来自: 上海
文章分类
最新评论
转自http://www.yqshare.com/mysql-sql-show-profile.html
最近做的数据量上升了,部分表到了上千条的数据,那个速度真是惨不忍睹啊,一个字“慢”!
分析下SQL的问题吧!手动分析,只能看到网上说的那些优化方法。但是瓶颈在那里呢?可以使用explain 的方式解决,但是还是感觉explain 不够详细。
MySQL5.0.37版本以上支持了,profiling ,据说是Jeremy Cole捐献给MySQL社区版本,呵呵。就说说他的使用吧!
profiling 功能可以了解到sql语句消耗资源的更详细的信息。
show profile 的格式如下:
SHOW PROFILE [type [, type] … ]
[FOR QUERY n]
[LIMIT row_count [OFFSET offset]]
type:
ALL
| BLOCK IO
| CONTEXT SWITCHES
| CPU
| IPC
| MEMORY
| PAGE FAULTS
| SOURCE
| SWAPS
该方式默认是关闭的。
可以通过以下语句查看
mysql>select @@profiling;
+————-+
| @@profiling |
+————-+
| 0 |
+————-+
1 row in set (0.00 sec)
打开功能
mysql>set profiling=1;
执行需要测试的sql 语句:
select inet_ntoa(visit_net) visit_net,sum(totalbytes) as totalbytes,sum(inbytes) as inbytes,sum(totalbytes)-sum(inbytes) as outbytes from
( select * from businessflow where userid=9 ) aa
group by visit_net order by totalbytes DESC limit 0,3
mysql> show profiles\G;
通过指定的Query_ID 来查询指定的sql语句的执行信息:
mysql> show profile for query 1;
+——————————–+———-+
| Status | Duration |
+——————————–+———-+
| starting | 0.000021 |
| checking query cache for query | 0.000085 |
| Opening tables | 0.000036 |
| System lock | 0.000007 |
| Table lock | 0.000071 |
| optimizing | 0.000012 |
| statistics | 0.000013 |
| preparing | 0.000013 |
| executing | 0.000005 |
| Sending data | 0.592819 |
| converting HEAP to MyISAM | 0.026474 |
| Sending data | 0.215715 |
| init | 0.000029 |
| storing result in query cache | 0.000012 |
| optimizing | 0.000005 |
| statistics | 0.000011 |
| preparing | 0.000008 |
| Creating tmp table | 0.000038 |
| executing | 0.000004 |
| Copying to tmp table | 0.235759 |
| converting HEAP to MyISAM | 1.020230 |
| Copying to tmp table on disk | 0.166174 |
| Sorting result | 0.056304 |
| Sending data | 0.000053 |
| end | 0.000004 |
| removing tmp table | 0.003539 |
| end | 0.000008 |
| query end | 0.000004 |
| freeing items | 0.000036 |
| removing tmp table | 0.004107 |
| closing tables | 0.000009 |
| logging slow query | 0.000004 |
| cleaning up | 0.000004 |
+——————————–+———-+
33 rows in set (0.00 sec)
mysql> show profile cpu for query 1;
+——————————–+———-+———-+————+
| Status | Duration | CPU_user | CPU_system |
+——————————–+———-+———-+————+
| starting | 0.000021 | 0.000000 | 0.000000 |
| checking query cache for query | 0.000085 | 0.000000 | 0.000000 |
| Opening tables | 0.000036 | 0.000000 | 0.000000 |
| System lock | 0.000007 | 0.000000 | 0.000000 |
| Table lock | 0.000071 | 0.000000 | 0.000000 |
| optimizing | 0.000012 | 0.000000 | 0.000000 |
| statistics | 0.000013 | 0.000000 | 0.000000 |
| preparing | 0.000013 | 0.000000 | 0.000000 |
| executing | 0.000005 | 0.000000 | 0.000000 |
| Sending data | 0.592819 | 0.592037 | 0.000000 |
| converting HEAP to MyISAM | 0.026474 | 0.000000 | 0.020002 |
| Sending data | 0.215715 | 0.212014 | 0.008000 |
| init | 0.000029 | 0.000000 | 0.000000 |
| storing result in query cache | 0.000012 | 0.000000 | 0.000000 |
| optimizing | 0.000005 | 0.000000 | 0.000000 |
| statistics | 0.000011 | 0.000000 | 0.000000 |
| preparing | 0.000008 | 0.000000 | 0.000000 |
| Creating tmp table | 0.000038 | 0.000000 | 0.000000 |
| executing | 0.000004 | 0.000000 | 0.000000 |
| Copying to tmp table | 0.235759 | 0.240015 | 0.000000 |
| converting HEAP to MyISAM | 1.020230 | 0.988061 | 0.032002 |
| Copying to tmp table on disk | 0.166174 | 0.160010 | 0.000000 |
| Sorting result | 0.056304 | 0.052004 | 0.008001 |
| Sending data | 0.000053 | 0.000000 | 0.000000 |
| end | 0.000004 | 0.000000 | 0.000000 |
| removing tmp table | 0.003539 | 0.000000 | 0.000000 |
| end | 0.000008 | 0.000000 | 0.000000 |
| query end | 0.000004 | 0.000000 | 0.000000 |
| freeing items | 0.000036 | 0.000000 | 0.000000 |
| removing tmp table | 0.004107 | 0.000000 | 0.008000 |
| closing tables | 0.000009 | 0.000000 | 0.000000 |
| logging slow query | 0.000004 | 0.000000 | 0.000000 |
| cleaning up | 0.000004 | 0.000000 | 0.000000 |
+——————————–+———-+———-+————+
33 rows in set (0.00 sec)
从上上面可以看到,
| Sending data | 0.592819 |
| converting HEAP to MyISAM | 0.026474 |
| Sending data | 0.215715 |
| Copying to tmp table | 0.235759 |
| converting HEAP to MyISAM | 1.020230 |
| Copying to tmp table on disk | 0.166174 |
以上几项 耗时较长,所以考虑把该表转换为MyISAM 以供查询提高速度。并且提高的值
测试完毕以后 ,关闭参数:
mysql> set profiling=0
再次打开程序,发现等待速度降低。问题有所好转。OK!
参考:http://dev.mysql.com/doc/refman/5.0/en/show-profiles.html
最近做的数据量上升了,部分表到了上千条的数据,那个速度真是惨不忍睹啊,一个字“慢”!
分析下SQL的问题吧!手动分析,只能看到网上说的那些优化方法。但是瓶颈在那里呢?可以使用explain 的方式解决,但是还是感觉explain 不够详细。
MySQL5.0.37版本以上支持了,profiling ,据说是Jeremy Cole捐献给MySQL社区版本,呵呵。就说说他的使用吧!
profiling 功能可以了解到sql语句消耗资源的更详细的信息。
show profile 的格式如下:
SHOW PROFILE [type [, type] … ]
[FOR QUERY n]
[LIMIT row_count [OFFSET offset]]
type:
ALL
| BLOCK IO
| CONTEXT SWITCHES
| CPU
| IPC
| MEMORY
| PAGE FAULTS
| SOURCE
| SWAPS
该方式默认是关闭的。
可以通过以下语句查看
mysql>select @@profiling;
+————-+
| @@profiling |
+————-+
| 0 |
+————-+
1 row in set (0.00 sec)
打开功能
mysql>set profiling=1;
执行需要测试的sql 语句:
select inet_ntoa(visit_net) visit_net,sum(totalbytes) as totalbytes,sum(inbytes) as inbytes,sum(totalbytes)-sum(inbytes) as outbytes from
( select * from businessflow where userid=9 ) aa
group by visit_net order by totalbytes DESC limit 0,3
mysql> show profiles\G;
通过指定的Query_ID 来查询指定的sql语句的执行信息:
mysql> show profile for query 1;
+——————————–+———-+
| Status | Duration |
+——————————–+———-+
| starting | 0.000021 |
| checking query cache for query | 0.000085 |
| Opening tables | 0.000036 |
| System lock | 0.000007 |
| Table lock | 0.000071 |
| optimizing | 0.000012 |
| statistics | 0.000013 |
| preparing | 0.000013 |
| executing | 0.000005 |
| Sending data | 0.592819 |
| converting HEAP to MyISAM | 0.026474 |
| Sending data | 0.215715 |
| init | 0.000029 |
| storing result in query cache | 0.000012 |
| optimizing | 0.000005 |
| statistics | 0.000011 |
| preparing | 0.000008 |
| Creating tmp table | 0.000038 |
| executing | 0.000004 |
| Copying to tmp table | 0.235759 |
| converting HEAP to MyISAM | 1.020230 |
| Copying to tmp table on disk | 0.166174 |
| Sorting result | 0.056304 |
| Sending data | 0.000053 |
| end | 0.000004 |
| removing tmp table | 0.003539 |
| end | 0.000008 |
| query end | 0.000004 |
| freeing items | 0.000036 |
| removing tmp table | 0.004107 |
| closing tables | 0.000009 |
| logging slow query | 0.000004 |
| cleaning up | 0.000004 |
+——————————–+———-+
33 rows in set (0.00 sec)
mysql> show profile cpu for query 1;
+——————————–+———-+———-+————+
| Status | Duration | CPU_user | CPU_system |
+——————————–+———-+———-+————+
| starting | 0.000021 | 0.000000 | 0.000000 |
| checking query cache for query | 0.000085 | 0.000000 | 0.000000 |
| Opening tables | 0.000036 | 0.000000 | 0.000000 |
| System lock | 0.000007 | 0.000000 | 0.000000 |
| Table lock | 0.000071 | 0.000000 | 0.000000 |
| optimizing | 0.000012 | 0.000000 | 0.000000 |
| statistics | 0.000013 | 0.000000 | 0.000000 |
| preparing | 0.000013 | 0.000000 | 0.000000 |
| executing | 0.000005 | 0.000000 | 0.000000 |
| Sending data | 0.592819 | 0.592037 | 0.000000 |
| converting HEAP to MyISAM | 0.026474 | 0.000000 | 0.020002 |
| Sending data | 0.215715 | 0.212014 | 0.008000 |
| init | 0.000029 | 0.000000 | 0.000000 |
| storing result in query cache | 0.000012 | 0.000000 | 0.000000 |
| optimizing | 0.000005 | 0.000000 | 0.000000 |
| statistics | 0.000011 | 0.000000 | 0.000000 |
| preparing | 0.000008 | 0.000000 | 0.000000 |
| Creating tmp table | 0.000038 | 0.000000 | 0.000000 |
| executing | 0.000004 | 0.000000 | 0.000000 |
| Copying to tmp table | 0.235759 | 0.240015 | 0.000000 |
| converting HEAP to MyISAM | 1.020230 | 0.988061 | 0.032002 |
| Copying to tmp table on disk | 0.166174 | 0.160010 | 0.000000 |
| Sorting result | 0.056304 | 0.052004 | 0.008001 |
| Sending data | 0.000053 | 0.000000 | 0.000000 |
| end | 0.000004 | 0.000000 | 0.000000 |
| removing tmp table | 0.003539 | 0.000000 | 0.000000 |
| end | 0.000008 | 0.000000 | 0.000000 |
| query end | 0.000004 | 0.000000 | 0.000000 |
| freeing items | 0.000036 | 0.000000 | 0.000000 |
| removing tmp table | 0.004107 | 0.000000 | 0.008000 |
| closing tables | 0.000009 | 0.000000 | 0.000000 |
| logging slow query | 0.000004 | 0.000000 | 0.000000 |
| cleaning up | 0.000004 | 0.000000 | 0.000000 |
+——————————–+———-+———-+————+
33 rows in set (0.00 sec)
从上上面可以看到,
| Sending data | 0.592819 |
| converting HEAP to MyISAM | 0.026474 |
| Sending data | 0.215715 |
| Copying to tmp table | 0.235759 |
| converting HEAP to MyISAM | 1.020230 |
| Copying to tmp table on disk | 0.166174 |
以上几项 耗时较长,所以考虑把该表转换为MyISAM 以供查询提高速度。并且提高的值
测试完毕以后 ,关闭参数:
mysql> set profiling=0
再次打开程序,发现等待速度降低。问题有所好转。OK!
参考:http://dev.mysql.com/doc/refman/5.0/en/show-profiles.html
发表评论
-
千万级测试数据生成方法【转】
2010-07-13 13:31 2245http://blog.csai.cn/user1/16350 ... -
数据库中使用自增量字段与Guid字段作主键的性能对比
2010-07-13 11:06 1054http://www.cnblogs.com/houleixx ... -
MySQL: MyISAM和InnoDB的区别
2010-07-12 15:58 822InnoDB和MyISAM是在使用MySQL最常用的两个表类型 ... -
查看mysql的一些小命令
2010-07-12 15:31 725mysql> \s查看版本信息 -
mysql性能跟踪器
2010-07-12 15:24 920MYSQL5.0家族提供的性能跟踪器确实很爽。 要注意两点。 ... -
MySQL数据库优化脚本Tuning-primer.sh
2010-07-12 15:14 1697很好用的mysql数据库优化脚本,相对mysqltuner.p ... -
mysql在linux下的my.cnf文件在哪里!
2010-07-12 14:01 2184用rpm包安装的MySQL是不会安装/etc/my.cnf文件 ... -
MySQL密码丢失的找回方法(win/*inx)
2010-07-12 11:43 752破解本地密码: Windows: 1.用系统管理员登陆系统。 ... -
SELECT COUNT使用优化
2010-07-12 11:38 1483SQL 语句的COUNT有两种用途 1. 用来计算行数——Co ... -
MySQL数据的导出和导入工具
2010-07-12 11:11 609导出要用到MySQL的mysqldump工具,基本用法是: ... -
MySQL慢查询分析mysqldumpslow
2010-07-12 11:08 1685一直以来积累了很多对MySQL优化的心得和经验,计划通过写日志 ... -
打开MySQL的慢查询记录
2010-07-12 11:02 698转自http://www.ccvita.com/326.htm ... -
查看MySQL运行状况
2010-07-12 10:48 793列举了几种查看MySQL运行状况的方法,总结一下。 转自htt ... -
什么是mysql的慢查询
2010-07-12 10:31 1373MySQL有一个功能就是可以log下来运行的比较慢的sql语句 ... -
用MYSQLADMIN改用户密码
2010-07-12 09:55 967转自http://yueliangdao0608.blog.5 ... -
Mysql数据导入导出命令
2010-07-07 11:09 720many of us may only need to use ...
相关推荐
标题和描述中提到的主要知识点集中在两个方面:一是安森美半导体(ON Semiconductor)与丹佛斯(Danfoss)在新能源汽车市场的合作,二是合康新能(Hiconics)剥离亏损的新能源汽车租赁资产。 首先,安森美半导体与丹佛斯...
金融科技赋新能 数字化转型奏新章.pdf
【厦门厦钨新能源材料股份有限公司首次公开发行股票并在科创板上市】这一事件标志着厦钨新能正式进入资本市场,旨在利用科创板的平台提升公司的竞争力和影响力。科创板是上海证券交易所设立的板块,主要服务于科技...
1. 首次公开发行股票:浙江新能首次公开发行股票,即IPO(Initial Public Offering),意味着该公司将其股份向公众出售,以筹集资金并成为上市公司。 2. 股票类型:人民币普通股(A股)是浙江新能发行的股票类型,A...
卓越新能是一家专门利用废油脂(包括地沟油和酸化油)为原料生产生物柴油的公司,并通过副产物提炼出工业甘油等产品,延伸产业链至生物酯增塑剂、水性醇酸树脂等深加工领域。报告指出,该公司现有24万吨的生物柴油...
这种能源管理系统可以进行智能发电、调度和用电管理,利用人工智能算法优化发电效益,帮助客户充分利用能源互联网功能,提升了整个产业链的效率。 飞跃新能的团队构成以研发人员为核心,成员来自世界500强企业和...
20210510-申万宏源-电力设备及新能源行业碳中和投资策略报告:风电光伏推动能源结构转型,新能车助力消费侧减碳.pdf
北京合康新能科技股份有限公司,是一家专注于电力电子设备制造及新能源技术的企业。2018年的年度报告详尽地展示了公司在当年的运营状况、财务表现和未来发展规划。 在报告的第一节,公司董事会、监事会以及管理层...
拓日新能是一家专注于新能源领域的公司,计划在2008年2月13日发行4,000万股人民币普通股,每股面值1.00元,发行价格为10.79元。此次发行后,公司的总股本将达到16,000万股,预计在深圳证券交易所上市。 在发行前,...
康达新能:2018年年度报告.PDF
【山东新能泰山发电股份有限公司2019年年度报告】是该公司对于过去一年运营状况、财务表现和未来规划的全面总结。以下是报告中的关键知识点: 1. **董事会与管理层责任**:董事会、监事会以及公司的董事、监事和...
【标题】"企业-江苏新能-江苏新能2020年年终总结.rar" 提供的文件主要是关于江苏新能源公司在2020年度的工作总结,这是一个重要的文档,通常会包含公司的业务发展、业绩表现、战略规划以及面临的挑战等多个方面的...
标题中的“江苏新能:江苏新能2021年半年度报告”表明这是一份关于江苏新能源股份有限公司(简称“江苏新能”)在2021年上半年的业务运营、财务状况和业绩表现的综合报告。这类报告通常包含公司的战略规划、经营业绩...
合康新能:2021年半年度报告.PDF
3. **运营分析**:卓越新能的半年度报告会深入到业务运营层面,如项目进展、产能利用率、销售网络扩展、研发投入等,这有助于理解公司的核心竞争力和业务驱动因素。 4. **市场环境与竞争态势**:报告可能会讨论行业...
“第二节 公司简介和主要财务指标”部分,可能包括了拓日新能在2018年的收入、利润、资产状况等关键财务数据,这些数据对于理解公司的经济状况和盈利能力至关重要。 “第三节 公司业务概要”将概述拓日新能的核心...
【金开新能2021年半年度报告】揭示了公司在该年度上半年的运营状况、财务健康状况以及风险管理策略。以下是对报告中关键知识点的详细解析: 1. **董事会和管理层责任**:董事会和监事会对报告内容的真实性、准确性...
标题中的“浙江新能2021年半年度报告”是指浙江省新能源投资集团股份有限公司(简称“浙江新能”)在2021年上半年度的业绩报告。这份报告通常会涵盖公司的经营状况、财务数据、市场分析以及未来发展规划等多个方面,...
- 卓越新能(股票代码688196)作为国内生物柴油行业的龙头企业,拥有稳定的市场地位和增长速度。 - 生物柴油是一种清洁的可再生能源,主要以废油脂为原料生产,对环境保护具有积极影响。 - 生物柴油行业受政策...
"官方显卡新能介绍"可能是指AMD公司对于其显卡性能的展示,这通常与图形渲染和WebGL技术有关,而“星系滚动代码”则暗示了一个动态的、视觉效果丰富的滚动效果,可能是利用JavaScript和CSS3实现的星空或宇宙主题的...