在很多时候,我们需要通过SQL语句来查看MySQL执行SQL的情况,例如查看SQL执行队列,是否存在慢查询等等。...先看下基础配置,监控mysql执行的sql语句需要先开启相关日志 linux系统 可以在/etc/mysqld中添加如下: 指定日志路径 log =/usr/local/mysql/mysql.log...long_query_time = 1 windows系统 修改my.ini,在mysqld下添加log一行, [mysqld] log = "D:/tmp/mysql_log/mysql_log.sql...常用的SQL,用于诊断排查问题 注:下列SQL在执行时,可能还需要你开启MySQL相应的配置项,请根据提示进行配置 1....查看某条sql各阶段执行时间,可开启profiling功能 set global profiling=on; 其他的,大家可以去搜索下,更多的SQL性能分析、调优方面的常用语句 大家可以自己动手去试试上面的语句
本文不涉及复杂的底层数据结构,通过explain解释SQL,并根据可能出现的情况,来做具体的优化,使百万级、千万级数据表关联查询第一页结果能在2秒内完成(真实业务告警系统优化结果)。...希望读者能够理解SQL的执行过程,并根据过程优化,走上自己的"成金之路" 需要优化的查询:使用explain 出现了Using temporary; 有分页时出现了Using filesort...1.使用explain语法,对SQL进行解释,根据其结果进行调优: MySQL 表关联的算法是 Nest Loop Join,是通过驱动表的结果集作为循环基础数据,然后一条一条地通过该结果集中的数据作为过滤条件到下一个表中查询数据
在生产环境通过sql monitor监控到有一条sql执行效率很差。...执行了大约5个小时,得到的sql monitor报告如下: Global Information: EXECUTING image.png --》对应的sql语句如下: select document.period_key...document.doc_seq_no 可以通过执行计划看到,性能的瓶颈主要在两个地方,一个是做了全表扫描的部分 表CYC_PAYER_POP,另外一个就是CPU资源的过度消耗,表DOCUMENT SQL...p.cycle_seq_no = c.cycle_seq_no and p.db_status = 'BL' ) cyc_payer_pop 然后在这个基础上,再和两个大表做关联, 优化后的sql...SQL Plan Monitoring Details (Plan Hash Value=1573871804) image.png 当然了关键的还是查取速度。
今天在生产环境中发现一条sql语句尽管走了主键索引,但是查询还是很慢。...*Net to client 520 bytes received via SQL*Net from client 2 SQL*Net roundtrips to...*Net to client 520 bytes received via SQL*Net from client 2 SQL*Net roundtrips to...对于这个Hint的细节需要和客户做更多的确认,毕竟对于调优不能越调越差,稳定和高效才是关键。...*Net to client 553 bytes received via SQL*Net from client 5 SQL*Net roundtrips to
生产环境有一条sql语句执行比较频繁,占用了大量的cpu资源。原本执行需要花费11秒。在一次排查中引起了我的注意,决定看看cpu消耗到底在哪儿?...sql语句是比较简单的,通过查询SUBSCRIBER_FA_V是一个视图。在视图中关联了几个和业务核心表。...检查,对于sql中传入的变量,sql monitor提供了很方便的功能。...所以尝试把视图的内容直接转换成直接的sql,标黄的部分是做的相应改动。...*Net to client 520 bytes received via SQL*Net from client 2 SQL*Net roundtrips to
生产环境中的sql语句执行时间是很关键的性能指标,如果某个sql语句执行几个小时,优化以后几分钟,几十秒的话。...会有很大的成就感,同时如果某个sql语句执行10秒,能够优化到1秒,感觉提升的幅度不是很大,但是如果这条语句执行极为频繁的话,那这种调优还是更有成就感的。...执行时间是sql调优的一把标尺,但是同时也需要考虑到系统资源的平衡。 今天在系统中发现一条sql语句执行时间很长。平均一个查询要执行一个半小时左右,而且系统的资源消耗极大。...查看执行计划,倒看不出有明显的异常,这也就是执行计划的一个误区了,我们不能总是参考执行计划来进行调优,很多时候发现执行计划几乎是完美的,但是执行效率却很长。 sql语句如下所示。...我先把这个问题发给一个性能调优的哥们,他在不改动sql语句的前提下,加了几个Hint,执行时间就从1个半小时降低到4分钟左右,猛一看这是一个极大的提升,看似不用修改sql语句了。
生产环境中有一些sql语句是不定时炸弹,不声不响的运行着,可能相关的表很大,运行时间达数小时,甚至数天。 上周在生产环境中发现一条sql语句,运行时间几乎是按照天来计算的。...看到这种sql语句,就希望能够马上能够找到立竿见影的效果,不过欲速则不达,需要做不少工作。一定要反复验证可行。...sql语句的运行情况如下: SQL Execution ID : 16777217 Execution Started : 10/18/2014 11:46:30 First Refresh Time...根据统计信息来看,这个sql语句运行需要持续了大概3天。 首先来看看这条sql语句。...所以很明显存在sql语句的问题。 image.png 所以要调优这条sql语句,还得结合业务入手。要不盲目加hint,加并行不是长久之计。
在数据迁移完成之后,开始了例行的后期数据库维护,早上一来就发现了一个sql执行时间很长了。达到了37279秒。最后在改进调优之后执行速度在1分钟以内。...显示了同样的sql语句在7月份至今的执行情况,还真是奇怪,昨天以前一直正常,期间也进行过两次数据迁移,昨天的数据迁移完成以后,性能就出奇的差。 ?...通过sql_monitor得到了执行计划和对应的sql语句。 可以看到执行时间是昨天的下午,一直执行到今天的凌晨。...Instance ID : xxxxxx (6839:20499) SQL ID : 16777216 Execution Started : 09/17/2014 13:44:24 Last Refresh...对应的sql语句如下: select /*+ index(s SERVICE_DETAILS_2FK) index(d CHARGE_DISTRIBUTE_1IX) */ DISTINCT t.L9_
生产环境中有大量的sql语句在运行,尽管有awr,ash做数据的收集统计,但是dba的调优工作大多数情况都是在问题已经发生后做排查的,有些sql语句可能执行的时间有1,2分钟左右,但是sql语句本身有潜在的性能问题...今天想做数据迁移也有些日子了,看看生产环境中有哪些sql语句出现频繁,而且有明显的性能问题。...关于通过shell和sql查找性能sql的部分,可以参考如下的帖子,基本原理就是后台做sql_monitor的监控,然后由shell进行性能数据的统计。...http://blog.itpub.net/23718752/viewspace-1253426/ 通过如下的sql语句定位到目前有如下的几个sql语句出现频繁,执行时间较长。...select *from (select sql_id,count(*)cnt from issue_sql where sql_date like '1408%' group by sql_id)
生产中有一条sql语句消耗了大量的cpu资源,执行时间在18秒左右, Session : PRODBUSER (1560:61133) SQL ID : 1hg2wcuapy3y3 SQL Execution...18s Module/Action : JDBC Thin Client/- Service : PRODB Program : JDBC Thin Client Fetch Calls : 771 sql
陆陆续续写了九篇关于生产环境sql语句的调优案例,发现了不少问题,可能有些问题回头来看是比较低级的错误,稍加改动就能够运行在秒级,有些可能是在秒级到毫秒级的小步提升等等,不管调优的改进多大,从dba的角度来看...,好多问题都是基于资源来调优的,比如添加索引,降低IO,降低CPU消耗,提高CPU利用率等等。...如果有时候从业务角度来下下功夫,可能某种程度上效果要更好于基于资源/代价的调优。 最近客户反馈有几条sql语句IO消耗很高,希望我们能够给提点建议。 sql语句很短,但是运行时间在9秒左右。...看着sql语句比较简单,但是还没有立竿见影的效果也有些让人着急。数据库的角度的一些调整可能奏效不大,自己就想看看从业务角度能做点什么。 静下心来看看sql语句。...所以有些时候业务的角度来调优可能会有意向不到的收获。还有几个类似的语句,执行时间在分钟级,调整成类似的形式之后,都在毫秒级就完成了数据查询。
继续昨天的部分,上一篇的链接为: http://blog.itpub.net/23718752/viewspace-1217012/ 对这条大sql的性能瓶颈进行了分析。...可以看到sql语句中存在着很多重复的过滤条件,需要考虑在不改变业务的情况下保证语句的简单易读。...如果通过sql monitor来监控sql语句的性能,可以发现在最后的查取中,对三个表又走了全表扫描。...SQL Plan Monitoring Details (Plan Hash Value=1239783398) image.png 如果对于这部分有所疑惑,可以参见最后select中的这段sql。.../*+ leading(MO MOT SS CU CHD CPC CA ) */ 最后修正后的sql语句如下: with LO as (select logical_date from (select
完整的SQL调优系统目录 调优 Oracle SQL系列文章共有以下几部分: SQL性能基础知识 SQL调优简介 SQL性能方法论 查询优化工具基础知识 SQL处理 查询优化器概念 查询转换 查询执行计划...自动SQL调整 管理SQL调优集 使用SQL调优顾问分析SQL 使用SQL访问顾问优化访问路径 SQL管理对象 管理SQL Profile SQL计划管理概述 管理SQL计划基准 1 SQL调优简介...1.1 关于SQL调优 SQL调优是提高SQL语句性能以满足特定、可衡量和可实现目标的迭代过程。 SQL调优意味着修复已部署正在运行的应用程序中的问题。...1.4.1 SQL调优任务 调优会话的细节取决于许多因素,包括您是主动调优还是被动调优。 在主动SQL调优中,您经常使用SQL Tuning Advisor来确定是否可以使SQL语句更好地执行。...所有自动SQL调优工具都可以使用SQL调优集作为输入。 SQL调优集(STS)是一个数据库对象,包括一个或多个SQL语句及其执行统计信息和执行上下文。
一般规则 这一部分,将看一下一些在书写简单查询语时需要注意的通用的规则。 根据权值来优化查询条件 最好的查询语句是将简单的比较操作作用于最少的行上。...Sargability 理想的 SQL 表达式应该采用下面这种通用的格式: 早些时候,IBM 研究人员将这种查询条件语名命名为”sargable predicates”,因为 SARG 是 Search...针对专门操作符的调优 前面,讲的是关于查询条件的一般规则,在这一节中,将讨论如何使用专门的操作符来改进 SQL 代码的性能。...AND OR 查询 Row# Colmun1 Column21 3 A2 2 B3 1 C 当数据库系统按照查询语进行搜索时,它按照下面的步骤执行: 索引查找...本文总结的是一些 SQL 性能调优的比较初级的方面,SQL 调优还包括 Order by,Group by 以及 Index 等等。
今天看到一篇非常适合本人这种数据库调优小白级别的人学的文章,做个笔记,学习之。 首先建一个用户表: CREATE TABLE [dbo]....在客户端代码中,我们使用拼接SQL语句方式实现数据写入,由于SQL语句是动态执行的,所以恶意用户可以通过拼接SQL的方式实施SQL注入攻击。 ...对于SQL注入攻击,我们可以通过以下方式防御: 正则表达校验用户输入 参数化存储过程 参数化SQL语句 添加数据库新架构 LINQ to SQL 下面参数化SQL语句: using (var conn...解析器的开销 当我们向SQL Server传递SQL语句INSERT INTO …时,它需要对SQL语句进行解析,由于SQL Server解析器执行速度很快,所以解析时间往往是可以忽略不计,但我们仍然可以通过使用存储过程...SQL Server保证每条语句执行时,数据库是完全可预测的(例如:预测SQL执行方式和管理锁都需要耗费一定的时间)。
我们要做到不但会写SQL,还要做到写出性能优良的SQL,以下为笔者学习、摘录、并汇总部分资料与大家分享!...语句, 估算索引的利用率, 绑定变量 , 读数据块等; (5)在SQL*Plus , SQL*Forms和Pro*C中重新设置ARRAYSIZE参数, 可以增加每次数据库访问的检索数据量 ,建议值为...效率 复杂的SQL往往牺牲了执行效率....语句 虽然目前各种关于SQL优化的图形化工具层出不穷,但是写出自己的SQL工具来解决问题始终是一个最好的方法: SELECT EXECUTIONS , DISK_READS, BUFFER_GETS...(33) 避免使用耗费资源的操作 带有DISTINCT,UNION,MINUS,INTERSECT,ORDER BY的SQL语句会启动SQL引擎 执行耗费资源的排序(SORT)功能.
SDOUG线下技术分享活动PPT连载,本期为SDOUG核心成员张记的《聊聊SQL调优》
SQL成本计算=读取IO数据量*SQL复杂度 所以,SQL调优可以从两方面入手:①减少数据量;②降低SQL复杂度 一、减少数据量 1.表分区优化 (1)创建分区表 (2)分区裁剪、避免全表扫描。...2.列裁剪、条件过滤 (1)避免使用select * ,查询需要的列 (2)使用Limit N (3)使用条件过滤,pushdown. 3.源表合并 (1)合并不同SQL,一读多计算 (2)子查询合并...二、优化SQL复杂度 1.JOIN连接,MapJoin优化(SELECT /* + MAPJOIN(b) */) 运行原理: ①小表数据全部加载内存; ②读取大表的每个...④普通join连接可能发生数据倾斜(原因:null值、缺省值、大Key值;数据分发不合理等),可以显示指定mapjoin: 增加源表作为大表的并发度:set odps.sql.mapper.split.size...= 128; 增加子查询作为大表并发度:set odps.sql.joiner.instances = 1111; 2.Full outer join 全连接优化 (1)使用限制
前言SQL调优是数据库管理和开发中的关键环节,它涉及到对数据库查询语句的精细调整,以及整个数据库结构的优化。...SQL调优的目的是多方面的,不仅包括提升查询的响应速度,还包括减少服务器的资源消耗,提高系统的稳定性和可靠性。这通常涉及到对查询计划的分析,以找出可能导致性能瓶颈的环节,并进行相应的优化措施。...注意: 建立索引后, 查询速度不一定会变快,例如, 你在teacher表中建立了关于id的索引, 如果你按照name查询, 那么查询速度也不会变快,查询得用到你建立的索引sql语句优化避免开头模糊查询:
替换DISTINCT (19) sql语句用大写的;因为oracle总是先解析sql语句,把小写的字母转换成大写的再执行 (20) 在java代码中尽量少用连接符“+”连接字符串!...语句, 估算索引的利用率, 绑定变量 , 读数据块等; 回到顶部 (5)在SQL*Plus , SQL*Forms和Pro*C中重新设置ARRAYSIZE参数, 可以增加每次数据库访问的检索数据量 ,建议值为...效率 复杂的SQL往往牺牲了执行效率....语句 虽然目前各种关于SQL优化的图形化工具层出不穷,但是写出自己的SQL工具来解决问题始终是一个最好的方法: SELECT EXECUTIONS , DISK_READS, BUFFER_GETS,...回到顶部 (33) 避免使用耗费资源的操作 带有DISTINCT,UNION,MINUS,INTERSECT,ORDER BY的SQL语句会启动SQL引擎 执行耗费资源的排序(SORT)功能.
领取专属 10元无门槛券
手把手带您无忧上云