通过show status和应用特点了解各种SQL的执行频率
通过SHOW STATUS可以提供服务器状态信息,也可以使用mysqladmin extended-status命令获得。SHOW STATUS可以根据需要显示session级别的统计结果和global级别的统计结果。
以下几个参数对Myisam和Innodb存储引擎都计数:
Com_select 执行select操作的次数,一次查询只累加1;
Com_insert 执行insert操作的次数,对于批量插入的insert操作,只累加一次;
Com_update 执行update操作的次数;
Com_delete 执行delete操作的次数。
以下几个参数是针对Innodb存储引擎计数的,累加的算法也略有不同:
Innodb_rows_read select查询返回的行数;
Innodb_rows_inserted执行Insert操作插入的行数;
Innodb_rows_updated 执行update操作更新的行数;
Innodb_rows_deleted 执行delete操作删除的行数。
通过以上几个参数,可以很容易的了解当前数据库的应用是以插入更新为主还是以查询操作为主,以及各种类型的SQL大致的执行比例是多少。对于更新操作的计数,是对执行次数的计数,不论提交还是回滚都会累加。
对于事务型的应用,通过Com_commit和Com_rollback可以了解事务提交和回滚的情况,对于回滚操作非常频繁的数据库,可能意味着应用编写存在问题。
此外,以下几个参数便于我们了解数据库的基本情况:
Connections 试图连接Mysql服务器的次数
Uptime 服务器工作时间
Slow_queries 慢查询的次数
定位执行效率较低的SQL语句
可以通过以下两种方式定位执行效率较低的SQL语句:
可以通过慢查询日志定位那些执行效率较低的sql语句,用--log-slow-queries[=file_name]选项启动时,mysqld写一个包含所有执行时间超过long_query_time秒的SQL语句的日志文件。可以链接到管理维护中的相关章节。
慢查询日志在查询结束以后才纪录,所以在应用反映执行效率出现问题的时候查询慢查询日志并不能定位问题,可以使用show processlist命令查看当前MySQL在进行的线程,包括线程的状态,是否锁表等等,可以实时的查看SQL执行情况,同时对一些锁表操作进行优化。
通过EXPLAIN分析低效SQL的执行计划
通过以上步骤查询到效率低的SQL后,我们可以通过explain或者desc 获取MySQL如何执行SELECT语句的信息,包括select语句执行过程表如何连接和连接的次序。
explain可以知道什么时候必须为表加入索引以得到一个使用索引来寻找记录的更快的SELECT。
mysql> explain select sum(moneys) from sales a,companys b where a.company_id = b.id and a.year = 2006;
+----------------+----------+-----------+----------------+----------------+----------+-----------+----------------+
| select_type | table | type | possible_keys| key | key_len | rows | Extra |
+----------------+----------+-----------+----------------+----------------+----------+-----------+----------------+
| SIMPLE | b | index | PRIMARY | PRIMARY | 4 | 1 | Using index |
| SIMPLE | a | ALL | NULL | NULL | NULL | 12 | Using where |
+----------------+----------+-----------+----------------+----------------+----------+-----------+----------------+
2 rows in set (0.02 sec)
说明:
select_type:select 类型
table:输出结果集的表
type:表示表的连接类型
①当表中仅有一行是type的值为system是最佳的连接类型;
②当select操作中使用索引进行表连接时type的值为ref;
③当select的表连接没有使用索引时,经常会看到type的值为ALL,表示对该表进行了全表扫描,这时需要考虑通过创建索引来提高表连接的效率。
possible_keys:表示查询时,可以使用的索引列.
key:表示使用的索引
key_len:索引长度
rows:扫描范围
Extra:执行情况的说明和描述
确定问题,并采取相应的优化措施
经过以上步骤,基本可以确认问题出现的原因,可以根据情况采取相应的措施,进行优化提高执行的效率。
例如上面的例子,我们确认是对a表的全表扫描导致效率的不理想,我们对a表的year字段创建了索引,查询需要扫描的行数明显较少。
mysql> explain select sum(moneys) from sales a,companys b where a.company_id = b.id and a.year = 2006;
+----------------+----------+-----------+----------------+----------------+----------+-----------+----------------+
| select_type | table | type | possible_keys| key | key_len | rows | Extra |
+----------------+----------+-----------+----------------+----------------+----------+-----------+----------------+
| SIMPLE | b | index | PRIMARY | PRIMARY | 4 | 1 | Using index |
| SIMPLE | a | ref | year | year | 4 | 3 | Using where |
+----------------+----------+-----------+----------------+----------------+----------+-----------+----------------+
2 rows in set (0.02 sec)
分享到:
相关推荐
MySQL 优化方法主要涵盖存储引擎的选择、字段类型的设计、索引的应用及操作,以及SQL语句的优化。这些方面对于提升数据库性能至关重要。 首先,存储引擎是MySQL中数据存储的关键技术,不同引擎有不同的特性和优势。...
MySQL 优化是一个涵盖广泛的主题,涉及到许多层面,包括查询优化、服务器配置、索引策略、存储引擎选择等。本文将深入探讨其中的一些关键点,帮助你理解如何有效地优化你的 MySQL 数据库。 首先,理解 MySQL 的逻辑...
MySQL是世界上最受欢迎的关系型数据库管理系统之一,其性能优化对于维持高效的数据处理至关重要。本文将从五个关键角度深入探讨MySQL的优化策略。 1. **查询优化**:查询优化是MySQL性能提升的核心。首先,应避免...
本文将深入探讨这些方面的优化方法,帮助你掌握全面而实用的MySQL优化技巧。 首先,定位问题是优化的第一步。当数据库运行缓慢时,我们需要通过系统层的检查来确定问题所在。例如,使用`top`命令可以查看MySQL服务...
1、选择最合适的字段属性 2、尽量把字段设置为NOT NULL 3、使用连接(JOIN)来代替子查询(Sub-Queries) 4、使用联合(UNION)来代替手动创建的临时表 5、事务 6、使用外键 7、锁定表 ...9、优化sql的查询语句
以下是一份详细的MySQL优化笔记,涵盖了多个方面: 一、查询优化 1. 使用索引:为经常用于搜索的列创建索引可以显著加快查询速度。B树和哈希索引是最常见的类型,适用于不同的查询场景。 2. 避免全表扫描:尽量使用...
以下是一些常见的MySQL优化方法和技巧的描述: 优化数据库结构:设计良好的数据库结构可以提高查询效率。包括正确选择数据类型、合理设置索引、避免冗余字段等。 优化查询语句:编写高效的查询语句可以减少数据库...
mysql慢可能是配置不对,阅读一下这个可能对你有帮助 ...对于Discuz!... 下面我们了解一下MySQL优化的一些基础,MySQL的优化我分为两个部分,一是服务器物理硬件的优化,二是MySQL自身(my.cnf)的优化。
### MySQL性能优化与SQL优化方法技巧 #### 一、引言 MySQL作为一款广泛使用的开源关系型数据库管理系统,其性能优化对于确保应用系统的稳定性和高效运行至关重要。通过对MySQL的优化,不仅能提升系统的响应速度,还...
MySQL数据库优化SQL篇PPT课件.pptx ...本PPT课件对MySQL数据库优化的重要知识点进行了详细的讲解,并提供了许多实用的优化技巧和方法。通过学习本PPT课件,可以提高数据库的性能和效率,提高开发效率和质量。
21. MYSQL扩展/优化-提供更快的速度 22. MYSQL何时使用索引 23. MYSQL何时不使用索引 24. 学会使用EXPLAIN 25. 学会使用SHOW PROCESSLIST 26. 如何知晓MYSQL解决一条查询 27. MYSQL非常不错 28. MYSQL应避免...
教程名称:大型门户网站核心技术-Mysql优化 课程目录:【】Mysql优化 资料【】Mysql优化01关键技术【】Mysql优化02表的设计【】Mysql优化03慢查询(一)【】Mysql优化04慢查询(二)【】Mysql优化05慢查询(三)【】Mysql...
【MySQL 优化方法】 在开发和部署MySQL数据库系统时,优化是提高性能的关键步骤。从编译阶段到服务器配置,每个环节都可能对系统的效率产生显著影响。以下是一些关于如何从编译到工具优化MySQL的策略: 1. **编译...
MySQL性能优化是一个涵盖广泛的主题,涉及多个层面,包括SQL语句优化、索引优化、数据库表结构优化、系统级配置优化以及服务器硬件优化。以下是对这些方面进行详细说明: 1. **SQL语句优化** - **慢查询日志**:...
以下将详细介绍MySQL优化的各个方面,并结合提供的文件名进行推测,尽管没有实际内容,但我们可以根据文件名来讨论可能涉及的主题。 1. **索引优化**:`mysql_rel.sql`可能包含SQL脚本,其中创建表结构和数据的关系...
MySQL性能优化金字塔法则为开发人员和数据库管理员提供了实用的指导和方法论,帮助他们更好地掌握MySQL性能优化的方法和技巧。通过阅读本书,大家将深入了解MySQL性能优化的各个方面,掌握实用的优化技巧,提高应用...
在"MySQL优化.rar"这个压缩包中,我们很显然会接触到关于MySQL数据库优化的详细内容,这包括但不限于查询优化、索引优化、存储引擎选择、架构设计等多个方面。 首先,查询优化是MySQL性能提升的关键步骤。通过对SQL...
韩顺平MYSQL优化文档,该文档里列举了常用MYSQL优化方法,并举出了合理和不合理的逆范式案例