- 浏览: 495559 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (271)
- json (6)
- hibernate (12)
- javascript (25)
- session cookie (2)
- struts2 (12)
- 数据库 (23)
- spring (25)
- freemarker (2)
- 其它 (17)
- ibatis (5)
- Web Service (5)
- java基础 (54)
- hessian (2)
- lucene (7)
- DWR (1)
- 导出excel (1)
- CSS (1)
- java 邮件 (5)
- SSH转载 (5)
- 文件断点 上传 (8)
- jQuery (7)
- ant (2)
- tuscany (5)
- maven (7)
- rsa (2)
- tomcat (2)
- svn (3)
- comet (2)
- log4j (2)
- linux (4)
- hadoop (1)
- 设计模式 (4)
- ssh (2)
- git (3)
- quartz (1)
- dubbo (2)
- mysql (2)
- 注解 (1)
- easyui (1)
- tree (1)
- 堆栈 (1)
- 泛型 (1)
- eclipse (1)
- annotation (1)
- mvc (3)
- shiro (1)
- Nexus (1)
- jackson (1)
- itext (1)
- mina (1)
- nio (1)
- ehcache (2)
- memcached (1)
- restful (2)
- mongodb (1)
- solr (1)
- zookeeper (1)
- redis (1)
- vpn (0)
- elastic (2)
- xxl-job (1)
最新评论
-
g_tao:
作者你好,你这个例子中服务端是跑在tomcat中吗
阿里巴巴dubbo处理文件上传下载 -
g_tao:
作者你好,能把整个项目给我发一份吗?guotao114@126 ...
阿里巴巴dubbo处理文件上传下载 -
tanmingjuntan:
楼上 本文提供的代码样例 和 你之前提供的例子有出入好多都没 ...
使用HttpURLConnection.setChunkedStreamingMode(10*1024);的时候,不同的参数导致文件上传损坏 -
dreamoftch:
dannielhome 写道请问下这个upload.exe是什 ...
断点文件上传流程 -
dannielhome:
请问下这个upload.exe是什么东西呢
断点文件上传流程
一段SQL代码写好以后,可以通过查看SQL的执行计划,初步预测该SQL在运行时的性能好坏,尤其是在发现某个SQL语句的效率较差时,我们可以通过查看执行计划,分析出该SQL代码的问题所在。
那么,作为开发人员,怎么样比较简单的利用执行计划评估SQL语句的性能呢?总结如下步骤供大家参考:
1、 打开熟悉的查看工具:PL/SQL Developer。
在PL/SQL Developer中写好一段SQL代码后,按F5,PL/SQL Developer会自动打开执行计划窗口,显示该SQL的执行计划。
2、 查看总COST,获得资源耗费的总体印象
一般而言,执行计划第一行所对应的COST(即成本耗费)值,反应了运行这段SQL的总体估计成本,单看这个总成本没有实际意义,但可以拿它与相同逻辑不同执行计划的SQL的总体COST进行比较,通常COST低的执行计划要好一些。 www.2cto.com
3、 按照从左至右,从上至下的方法,了解执行计划的执行步骤
执行计划按照层次逐步缩进,从左至右看,缩进最多的那一步,最先执行,如果缩进量相同,则按照从上而下的方法判断执行顺序,可粗略认为上面的步骤优先执行。每一个执行步骤都有对应的COST,可从单步COST的高低,以及单步的估计结果集(对应ROWS/基数),来分析表的访问方式,连接顺序以及连接方式是否合理。
4、 分析表的访问方式
表的访问方式主要是两种:全表扫描(TABLE ACCESS FULL)和索引扫描(INDEX SCAN),如果表上存在选择性很好的索引,却走了全表扫描,而且是大表的全表扫描,就说明表的访问方式可能存在问题;若大表上没有合适的索引而走了全表扫描,就需要分析能否建立索引,或者是否能选择更合适的表连接方式和连接顺序以提高效率。
5、 分析表的连接方式和连接顺序
表的连接顺序:就是以哪张表作为驱动表来连接其他表的先后访问顺序。
表的连接方式:简单来讲,就是两个表获得满足条件的数据时的连接过程。主要有三种表连接方式,嵌套循环(NESTED LOOPS)、哈希连接(HASH JOIN)和排序-合并连接(SORT MERGE JOIN)。我们常见得是嵌套循环和哈希连接。
嵌套循环:最适用也是最简单的连接方式。类似于用两层循环处理两个游标,外层游标称作驱动表,Oracle检索驱动表的数据,一条一条的代入内层游标,查找满足WHERE条件的所有数据,因此内层游标表中可用索引的选择性越好,嵌套循环连接的性能就越高。
哈希连接:先将驱动表的数据按照条件字段以散列的方式放入内存,然后在内存中匹配满足条件的行。哈希连接需要有合适的内存,而且必须在CBO优化模式下,连接两表的WHERE条件有等号的情况下才可以使用。哈希连接在表的数据量较大,表中没有合适的索引可用时比嵌套循环的效率要高。
6、 请核心技术组协助分析 www.2cto.com
以上步骤可以协助我们初步分析SQL性能问题,如果遇到连接表太多,执行计划过于复杂,可联系核心技术组共同讨论,一起寻找更合适的SQL写法或更恰当的索引建立方法
总结两点:
1、这里看到的执行计划,只是SQL运行前可能的执行方式,实际运行时可能因为软硬件环境的不同,而有所改变,而且cost高的执行计划,不一定在实际运行起来,速度就一定差,我们平时需要结合执行计划,和实际测试的运行时间,来确定一个执行计划的好坏。
2、对于表的连接顺序,多数情况下使用的是嵌套循环,尤其是在索引可用性好的情况下,使用嵌套循环式最好的,但当ORACLE发现需要访问的数据表较大,索引的成本较高或者没有合适的索引可用时,会考虑使用哈希连接,以提高效率。排序合并连接的性能最差,但在存在排序需求,或者存在非等值连接无法使用哈希连接的情况下,排序合并的效率,也可能比哈希连接或嵌套循环要好。
附I:几种主要表连接的比较
作者 jadethao
发表评论
-
查询每一组的前N条记录
2018-07-05 10:10 508参考链接 比如要查询每个人创建的前10条公 ... -
jdbc获取数据库所有表名以及表字段
2017-07-17 16:58 4652fun connectDb() { Class.f ... -
CentOS安装MySQL
2015-03-31 14:30 623转载:Installing MySQL Server ... -
sybase日期函数
2014-05-21 11:27 1062http://www.2cto.com/databas ... -
sybase日期函数
2014-05-21 11:27 744http://www.2cto.com/databas ... -
角色权限学习
2013-09-24 14:06 0user <--多对多--> ... -
使用PowerDesigner创建mysql数据库表图文并茂版
2013-09-10 14:48 1392使用PowerDesigner创建mysql数据库表图 ... -
mysql入门教程
2013-08-29 09:37 1059mysql 删除的时候使用别名要注意: 原始sql ... -
标准JDBC步骤以及jdbc batch 批处理
2013-08-08 14:39 1802jdbc batch jdbc包含ba ... -
Mysql执行计划
2013-08-01 15:01 1303链接:http://www.xifenfei.c ... -
mysql 非空约束 基础
2013-04-17 12:25 4048Mysql和SQL的语法差不多是一样的,分为以下几 ... -
ORACLE日期时间函数大全
2013-02-19 16:14 1009ORACLE日期时间函数大全 ... -
Oracle存储过程基本语法
2013-02-18 22:22 942转自:Oracle存储过程基本语法 存储过程 1 ... -
plsql 分析 执行计划
2013-02-17 10:32 5929基于oracle的应用系统很多性能问题,是由应用系统sql ... -
聚集索引 非聚集索引
2013-01-30 09:59 1004聚集索引与非聚集索引 聚集索引的区别 ... -
oracle 函数 和 优化
2013-01-15 10:44 1077sql语句中,如果where条件里面含有not, !=, ... -
oracle 触发器详解
2013-01-07 19:59 805http://www.cnblogs.com/huyong/ ... -
Oracle trunc()函数的用法
2012-12-25 15:42 983http://www.cnblogs.com/xiaoyudz ... -
oracle 取得sequence值
2012-12-17 12:56 1148取得Company_SEQ下一个值: select Compa ... -
plsql 执行计划 优化(转自百度文库)
2012-12-11 10:29 1014http://wenku.baidu.com/view/ac4 ...
相关推荐
在Oracle数据库中,执行计划是决定SQL语句如何高效运行的关键步骤。在处理复杂的查询时,优化器(Optimizer)会根据一系列策略选择最优的执行路径。本篇文章将深入探讨如何使用PL/SQL来查看和理解Oracle的执行计划,...
PLSQL程序性能分析及优化 经验总结 实施过程中,经常会使用 PL/SQL Developer 工具进行数据转换和处理业务数据。通过性能 优化来提高程序执行效率是必须掌握的一份技能。性能问题中绝大部分都是由于程序编写的 不合理...
plsql创建存储过程并创建job定时任务执行详细笔记文档总结 在 Oracle 中,plsql 是一种强大的编程语言,可以用来创建存储过程和定时任务执行。在本文中,我们将详细介绍如何使用 plsql 创建存储过程并创建 job 定时...
当你在文件夹里有很多很多很多的SQL文件需要执行时候,一个一个复制路径文件名出来执行肯定很慢很烦。 而且你不关心他们的执行顺序的时候,这时我们可以简单的利用Dos把文件夹里所有SQL文件的路径与文件名统一导成一...
### PLSQL隔断时间再执行SQL的时候卡死未响应(要等很久才有结果)解决办法 在使用PL/SQL Developer或其他Oracle数据库管理工具时,可能会遇到一个常见的问题:执行SQL语句或存储过程时,系统长时间无响应或者卡住...
在使用PLSQL Developer工具进行数据库开发的过程中,可能会遇到“表提示不能执行”的问题。这通常是因为用户对某些表或视图没有足够的权限所导致的。本文将详细介绍这一问题及其解决方案。 ### 一、问题背景 #### ...
8. **性能分析**:提供性能分析工具,如执行计划分析,帮助优化SQL语句,提升数据库性能。 9. **脚本执行**:用户可以编写和执行批处理脚本,进行数据库维护或自动化任务。 10. **连接管理**:支持多个数据库连接...
PLSQL Developer是一款强大的Oracle数据库开发工具,主要用于编写、调试、执行和管理PL/SQL程序。在中文环境下,对于不熟悉英文界面的用户来说,使用英文版可能会带来不便。"plsql11汉化包"正是为了解决这个问题,...
PLSQL Developer是一款强大的Oracle数据库开发工具,主要用于编写、调试、执行和管理PL/SQL代码。在许多情况下,用户可能需要PLSQL的免安装版本,这可能是出于便携性、节省系统资源或者避免系统冲突的考虑。标题...
PLSQL中的SQL语句可以直接执行DML(数据操纵语言)操作,如INSERT、UPDATE、DELETE,也可以执行DDL(数据定义语言)来创建或修改数据库对象。 2. **Oracle存储过程**: 存储过程是一组预先编译好的PLSQL语句,可以...
2. **调试器**:内置调试器允许设置断点、单步执行、查看变量值,便于定位和解决程序问题。 3. **数据库连接**:可以轻松连接到多个Oracle数据库实例,进行数据查询和管理。 4. **数据浏览**:直观展示表、视图、...
性能分析是指对 PLSQL 程序的执行过程进行监控和分析,以确定程序的执行效率和瓶颈所在。以下是 PLSQL 程序优化和性能分析方法的知识点: 1. 前言 PLSQL 程序优化的目的在于提高程序的执行效率和性能,减少资源占用...
使用plsql导出Excel、CSV、Txt文件,使你轻松安照自己的展示形式生成报表
PLSQL学习资料 PLSQL学习资料 PLSQL学习资料 PLSQL学习资料 PLSQL学习资料 PLSQL学习资料 PLSQL学习资料 PLSQL学习资料 PLSQL学习资料 PLSQL学习资料 PLSQL学习资料 PLSQL学习资料 PLSQL学习资料 PLSQL学习资料 ...
### PL/SQL批量执行多个SQL文件和存储过程 在日常的数据库管理与开发工作中,经常需要执行大量的SQL脚本或调用多个存储过程。对于Oracle数据库而言,PL/SQL是一种非常强大的工具,它不仅可以用于编写复杂的数据库...
执行部分是 PLSQL 块中的指令部分,由关键字 BEGIN 开始,所有的可执行语句都放在这一部分,其他的 PLSQL 块也可以放在这一部分。 ### 异常处理部分 (Exception section) 这一部分是可选的,在这一部分中处理异常...
PLSQL程序优化是指在编写PLSQL程序时,为了提高程序的执行效率和性能所采取的一系列措施和技术。这些措施和技术可以帮助开发者编写高效、可靠、可维护的PLSQL程序,从而提高系统的整体性能和响应速度。 在编写PLSQL...
- **Create tables**:用于在导入数据前新建表,适合已创建用户但需导入未执行建表脚本的情况。 - **Truncate tables**:导入前清空表数据,适用于恢复到初始状态,速度较快。 - **Delete tables**:与`Truncate ...
PL/SQL Developer(简称PLSQL)是一款由Allround Automations公司开发的专业Oracle数据库管理与开发工具,它为数据库管理员和开发人员提供了强大的功能,包括编写、调试、执行SQL和PL/SQL代码等。而CnPlugin是针对...