热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

优化SQL的一般步骤

1,通过showstatus命令了解各种SQL的执行频率比如Com_select记录执行select查询的操作次数,一次查询只累加12,定位执行效率较低的SQL语句1通过慢查
1,通过show status 命令了解各种SQL的执行频率
    比如Com_select 记录执行select查询的操作次数,一次查询只累加1 2,定位执行效率较低的SQL语句       1通过慢查询日志定位,2慢查询在查询结束后才记录,使用show processlist查看 3,通过EXPLAIN分析低效SQL的执行计划     
4,通过show  profile 分析SQL(>mysql5.0.37)     mysql> select @@have_profiling; +------------------+ | @@have_profiling | +------------------+ | YES              | +------------------+ 1 row in set (0.00 sec)                 表示支持
mysql> select @@profiling;+-------------+| @@profiling | +-------------+|           0 |+-------------+1 row in set (0.00 sec)                默认关闭      可以set profiling=1;开启
mysql> show profiles;+----------+------------+--------------------------------------------+| Query_ID | Duration   | Query                                      |+----------+------------+--------------------------------------------+|        1 | 0.02342575 | select * from br_member where user_id<1000 |+----------+------------+--------------------------------------------+1 row in set (0.00 sec)
mysql> show profile for query 1;(这里的1 代表show profiles查出的query_id的值)+----------------------+----------+| Status               | Duration |+----------------------+----------+| starting             | 0.000115 || checking permissions | 0.000013 || Opening tables       | 0.000044 || System lock          | 0.000025 || init                 | 0.000097 || optimizing           | 0.000019 || statistics           | 0.000084 || preparing            | 0.000020 || executing            | 0.000005 || Sending data         | 0.022893 || end                  | 0.000012 || query end            | 0.000006 || closing tables       | 0.000013 || freeing items        | 0.000071 || logging slow query   | 0.000005 || cleaning up          | 0.000004 |+----------------------+----------+16 rows in set (0.00 sec) 在获取到最消耗时间的线程状态以后,mysql支持进一步选择all,cpu,block io,context,switch,page faults等明细类型来查看mysql在使用什么资源上耗费了过高的时间,如下选择查看cpu的消耗时间 mysql> show profile cpu for query 1;+----------------------+----------+----------+------------+| Status               | Duration | CPU_user | CPU_system |+----------------------+----------+----------+------------+| starting             | 0.000115 | 0.000000 |   0.000000 || checking permissions | 0.000013 | 0.000000 |   0.000000 || Opening tables       | 0.000044 | 0.000000 |   0.000000 || System lock          | 0.000025 | 0.000000 |   0.000000 || init                 | 0.000097 | 0.000000 |   0.000000 || optimizing           | 0.000019 | 0.000000 |   0.000000 || statistics           | 0.000084 | 0.000000 |   0.000000 || preparing            | 0.000020 | 0.000000 |   0.000000 || executing            | 0.000005 | 0.000000 |   0.000000 || Sending data         | 0.022893 | 0.015600 |   0.000000 || end                  | 0.000012 | 0.000000 |   0.000000 || query end            | 0.000006 | 0.000000 |   0.000000 || closing tables       | 0.000013 | 0.000000 |   0.000000 || freeing items        | 0.000071 | 0.000000 |   0.000000 || logging slow query   | 0.000005 | 0.000000 |   0.000000 || cleaning up          | 0.000004 | 0.000000 |   0.000000 |+----------------------+----------+----------+------------+16 rows in set (0.00 sec) 5、通过trace分析优化器如何选择执行计划
6、确定问题并采取相应的措施

show full processlist 

推荐阅读
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • javascript  – 概述在Firefox上无法正常工作
    我试图提出一些自定义大纲,以达到一些Web可访问性建议.但我不能用Firefox制作.这就是它在Chrome上的外观:而那个图标实际上是一个锚点.在Firefox上,它只概述了整个 ... [详细]
  • 本文讨论了在Spring 3.1中,数据源未能自动连接到@Configuration类的错误原因,并提供了解决方法。作者发现了错误的原因,并在代码中手动定义了PersistenceAnnotationBeanPostProcessor。作者删除了该定义后,问题得到解决。此外,作者还指出了默认的PersistenceAnnotationBeanPostProcessor的注册方式,并提供了自定义该bean定义的方法。 ... [详细]
author-avatar
壹起等绿灯
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有