11 SQL执行顺序
(7) SELECT (8) DISTINCT <select_list> (1) FROM <left_table> (3) <join_type> JOIN <right_table> (2) ON <join_condition> (4) WHERE <where_condition> (5) GROUP BY <group_by_list> (6) HAVING <having_condition> (9) ORDER BY <order_by_condition> (10) LIMIT <limit_number>
mysqlreport 查看数据库的执行情况
1 下载 mysqlreport
2 安装的时候报错,因为没有安装DBD
解决方式:
shell> perl -MCPAN -e shell
cpan> install DBI
cpan> install DBD::mysql 安装成功。
3 使用
http://blog.chinaunix.net/uid-24426415-id-77301.html
4连接数据库
perl mysqlreport --user=root --password=111111 --host=192.168.0.231
数据如下:
Use of uninitialized value $is in multiplication (*) at mysqlreport line 829. Use of uninitialized value in formline at mysqlreport line 1227. MySQL 5.1.46-community- uptime 7 2:5:41 Mon Aug 10 10:50:40 2015 __ Key _________________________________________________________________ Buffer used 13.07M of 25.00M %Used: 52.27 Current 4.68M %Usage: 18.72 Write hit 99.97% Read hit 99.97% __ Questions ___________________________________________________________ Total 2.19M 3.6/s DMS 2.45M 4.0/s %Total: 112.00 -Unknown 2.13M 3.5/s 97.07 Com_ 1.58M 2.6/s 72.05 COM_QUIT 232.59k 0.4/s 10.62 QC Hits 52.45k 0.1/s 2.39 Slow 3 s 669 0.0/s 0.03 %DMS: 0.03 Log: ON DMS 2.45M 4.0/s 112.00 INSERT 1.17M 1.9/s 53.30 47.59 DELETE 957.53k 1.6/s 43.72 39.04 SELECT 237.60k 0.4/s 10.85 9.69 UPDATE 65.82k 0.1/s 3.01 2.68 REPLACE 24.61k 0.0/s 1.12 1.00 Com_ 1.58M 2.6/s 72.05 set_option 911.78k 1.5/s 41.63 commit 362.44k 0.6/s 16.55 show_create 75.36k 0.1/s 3.44 __ SELECT and Sort _____________________________________________________ Scan 184.37k 0.3/s %SELECT: 77.60 Range 102.60k 0.2/s 43.18 Full join 123 0.0/s 0.05 Range check 0 0/s 0.00 Full rng join 0 0/s 0.00 Sort scan 1.76k 0.0/s Sort range 1.60k 0.0/s Sort mrg pass 10.06k 0.0/s __ Query Cache _________________________________________________________ Memory usage 15.53M of 18.00M %Used: 86.29 Block Fragmnt 11.79% Hits 52.45k 0.1/s Inserts 129.96k 0.2/s Insrt:Prune 24.78:1 0.2/s Hit:Insert 0.40:1 __ Table Locks _________________________________________________________ Waited 1 0.0/s %Total: 0.00 Immediate 441.17k 0.7/s __ Tables ______________________________________________________________ Open 12 of 669 %Cache: 1.79 Opened 132.09k 0.2/s __ Connections _________________________________________________________ Max used 115 of 700 %Max: 16.43 Total 232.95k 0.4/s __ Created Temp ________________________________________________________ Disk table 8.08k 0.0/s Table 144.33k 0.2/s Size: 16.0M File 1.25k 0.0/s __ Threads _____________________________________________________________ Running 1 of 32 Cached 8 of 34 %Hit: 99.90 Created 222 0.0/s Slow 0 0/s __ Aborted _____________________________________________________________ Clients 707 0.0/s Connects 2.05k 0.0/s __ Bytes _______________________________________________________________ Sent 2.46G 4.0k/s Received 146.85M 239.8/s __ InnoDB Buffer Pool __________________________________________________ Usage 46.00M of 46.00M %Used: 100.00 Read hit 99.47% Pages Free 0 %Total: 0.00 Data 2.94k 99.90 %Drty: 0.00 Misc 3 0.10 Latched 0.00 Reads 1.92G 3.1k/s From file 10.16M 16.6/s 0.53 Ahead Rnd 618194 1.0/s Ahead Sql 54258 0.1/s Writes 62.87M 102.7/s Flushes 2.00M 3.3/s Wait Free 0 0/s __ InnoDB Lock _________________________________________________________ Waits 26345 0.0/s Current 0 Time acquiring Total 743022 ms Average 28 ms Max 168 ms __ InnoDB Data, Pages, Rows ____________________________________________ Data Reads 44.94M 73.4/s Writes 2.12M 3.5/s fsync 124.44k 0.2/s Pending Reads 0 Writes 0 fsync 0 Pages Created 557.21k 0.9/s Read 44.94M 73.4/s Written 2.00M 3.3/s Rows Deleted 1.15M 1.9/s Inserted 9.48M 15.5/s Read 3.02G 4.9k/s Updated 114.56k 0.2/s
6 数据库索引使用:
1)解释查询,用explain来查看sql的执行情况
2)使用组合索引,优化多个查询条件 ,最左索引原则的使用,不要重复创建索引
7 开启数据库慢日志记录功能,及时监控sql的瓶颈
8 因为建立索引数据的插入和更新速度会变慢,需要估算表中 查询和删改查 各占比例
如果查询比例比较大,则建立索引是值得的
9 如果一个查询过慢,需要确定是否是表锁定,用:SHOW PROCESSLIST
10 查询数据库锁表: SHOW OPEN TABLES WHERE In_use > 0;
相关推荐
MySQL查询优化技术_索引
3. 进行基于规则的优化,这是一系列预定义的转换操作,用来优化查询语句。 4. 开展基于成本的优化,也称为统计式优化,这是最复杂且最有决定性的一步。优化器会考虑多种可能的执行计划,并为每个计划计算一个成本...
- **避免全表扫描**:通过优化查询语句,减少不必要的全表扫描,例如,避免在WHERE子句中使用NOT IN、!=、等操作符。 - **监控和分析**:定期检查EXPLAIN计划,分析索引的使用情况,使用MySQL的性能分析工具如pt-...
查询优化可以通过优化索引、优化查询语句和优化数据库结构来实现。OLTP 和 OLAP 是两种不同的查询优化方法,OLTP 适用于在线事务处理,而 OLAP 适用于在线分析处理。 OLTP 和 OLAP OLTP 和 OLAP 是两种不同的查询...
### MySQL查询优化技术详解 #### 引言:MySQL查询优化的重要性 在当今互联网时代,网站的速度直接影响用户体验和业务效果。数据库查询效率成为决定网站响应速度的关键因素之一。MySQL作为广泛使用的开源关系型...
接着,"MySQL查询优化系列讲座之数据类型与效率"强调了正确选择数据类型对于优化查询的重要性。不同数据类型占用的空间、存储效率以及参与计算的方式都不同,选择合适的数据类型可以减少存储需求,提高查询速度。这...
本文将深入分析MySQL查询优化的三个主要方向,包括硬件升级、MySQL进程调优以及查询操作优化,并详细介绍如何利用Memcached软件作为第三方缓存工具来进一步优化MySQL查询。 首先,硬件升级是直接提高数据库性能的...
MySQL查询优化器是数据库管理系统中的核心组件,负责解析SQL语句并制定出执行查询的最佳计划。这个过程涉及多个阶段,包括解析、预处理、优化和执行。本资料“Mysql查询优化器.rar”包含了对这一关键主题的深入探讨...
4. **减少临时表的使用**:尽量避免在复杂的查询中创建临时表,可以通过优化查询结构或者使用内存临时表来改善性能。 5. **合理使用GROUP BY和ORDER BY**:这两个操作可能导致排序,消耗大量资源。如果可能,应先...
### MySQL 查询优化的关键知识点 #### 1. 理解MySQL如何优化LEFT JOIN 在MySQL中,`A LEFT JOIN B` 的实现主要包括以下几个步骤: - **表B依赖于表A**:这意味着表B的处理顺序依赖于表A的存在,确保在处理B之前,A...
MySQL查询优化是数据库管理中至关重要的一个环节,其目的是通过找到执行SQL语句的最佳路径,以提高查询效率,减少资源消耗。在这个过程中,查询优化器起着核心作用,它会根据代价模型来评估不同的执行计划,并选择...
其次,优化查询语句结构是另一个关键环节。避免在WHERE子句中使用不等式或复杂的表达式,这可能导致无法利用索引。尽量使用JOIN操作替代子查询,因为JOIN的执行计划可能更高效。同时,避免使用SELECT *,明确指定...
在执行查询时,MySQL优化器会根据统计信息和查询条件选择最佳的索引。 对于复杂查询优化,比如涉及多个表连接的查询,应考虑使用连接顺序、索引覆盖和子查询优化等策略。连接顺序对查询性能影响很大,MySQL会选择...
7. **查询优化技巧**:除了索引,还可以通过其他方式优化查询,比如减少子查询、避免在WHERE子句中使用函数、使用EXPLAIN分析查询计划等。理解数据库查询执行的逻辑可以帮助找出性能瓶颈。 8. **存储引擎的选择**:...