问题一:存储过程放在查询分析器中执行,大概耗时5秒左右即可成功执行,但是在网站中执行却会超时
1. 将该存储过程放到查询分析器中执行,大概耗时5秒左右即可成功执行,但是在网站中执行却会超时;
2. 经查阅资料,这里存储过程的执行计划是被缓存了,参数不同,还是按照老的执行计划查询,效率也会不同
3. 解决办法:
在存储过程的定义上,加上 WITH RECOMPILE ,这样针对不同的类型查询,可以强制重新编译执行过程
这样每次执行存储过程的时候就会重新分析执行计划,提高效率;
问题二:直接在查询分析器中执行存储过程很慢,但是把存储过程中的内容拿出来执行很快
1. 原因:存储过程的参数嗅探
2. 解决办法:
把存储过程的参数赋值给了存储过程中自定义的变量,整个存储过程中使用这个变量来代替参数,并且在参数赋值的地方加上OPTION (OPTIMIZE FOR UNKNOWN)
经过测试,存储过程执行时间和sql单独拿出执行时间一致;
1.
存储过程
只在创造时进行编译即可,以后每次
执行
存储过程
都不需再重新编译,而我们通常
使用
的
SQL
语句每
执行
一次就编译一次,所以
使用
存储过程
可提高数据库
执行
速度。
2. 经常会遇到复杂的业务逻辑和对数据库的操作,这个时候就会用SP来封装数据库操作。当对数据库进行复杂操作时(如对多个表进行 Update,Insert,Query,Delete时),可将此复杂操作用
存储过程
封装起来与数据库提供的事务处理结合一起
使用
。可以极大的提高数据 库的
使用
效率,减少程序的
执行
时间,这一点在较大数据量的数据库的操作中是非常重要的。在代码上看,
SQL
语句和程序代码语句的分离,可以提高程序代码的 可读性。
源博客地址https://blog.csdn.net/pgbiao/article/details/22388945
其他参考:参数探测(Parameter Sniffing)影响
存储过程
执行
效率解决方案
这篇文章对参数嗅探
问题
作了很详细的研究https://www.cnblogs.com/lyhabc/articles/3222179.html
这两天遇到一个
问题
令人比较郁闷,一个大概120行左右的
存储过程
在
SQL
Server的查询
分析
器里面
执行
,
速度非常理想,1秒不到,即可筛选抓取到大概...
My
sql
详解:MariaDB介绍:ubuntu
直接
安装ubuntu源码安装数据库初始操作1.修改密码:2.增删改查:1.insert into2.delete3.update4.select3.数据库备份:数据库集群操作:
MariaDB介绍:
ubuntu
直接
安装
执行
以下命令:
apt install mariadb-server
ubuntu源码安装
https://downloads.mariadb.org/mariadb下载最新版本的软件包放到需要安装的目录:例子opt
安装依赖环境:
此内容均来自互联网
存储过程
(Stored Procedure)是一组为了完成特定功能的
SQL
语句集,经编译后存储在数据库。中用户通过指定
存储过程
的名字并给出参数(如果该
存储过程
带有参数)来
执行
它。
存储过程
是
SQL
语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理。
存储过程
存储在数据库内,可由应用程序通过一个调用
执行
,而且允许用户声明变量、有条件
执行
...
1、
执行
计划情况
当
存储过程
挂住的时候,看看V$SESSION里面的
SQL
_ID,
SQL
_CHILD_NUMBER
再根据这两个信息用DBMS_XPLAN.DISPLAY_CURSOR把计划拿出来看看。
2、锁表情况
Oracle:
一个大概几十行左右的
存储过程
在
SQL
Server的查询
分析
器里面
执行
,
速度非常理想,1秒不到,即可筛选抓取到所需要的数据记录。
但在C#程序代码里调用,需要1分钟左右时间才能显示出来。
网上查
问题
发现一个大佬的博客发现
问题
是 “计划任务过期” 并给出了解决方案。
立即在查询
分析
器上
执行
:
exec sp_recompile @objname=‘
存储过程
名称’
再次测...
利用国庆假期,将数据库从8i升级到10G,测试人员发现有一个
存储过程
运行的非常
慢
,在8i下需要不到1秒的时间,10G下几分钟竟然跑不出来.而这个
存储过程
非常长,有两千行,经过几代人的修改,已经很难改了.着急!!!
修改Optimizer_mode由all_rows到rule后,请测试人员再试,恢复之前的速度,虚惊一场.
转载于:https://www.cnblo...
Hive是一个基于Hadoop的数据仓库工具,它的主要特点是能够对大规模数据进行高效地处理和
分析
。然而,与传统的关系型数据库相比,Hive的
执行
速度可能会变
慢
。
造成Hive
使用
JDBC调用时
慢
的原因可能有以下几点:
1. 数据存储和处理方式不同:Hive将数据存储在Hadoop集群的分布式文件系统中,而关系型数据库则
使用
表结构进行存储。这意味着Hive需要在查询之前将查询转化为MapReduce任务,而这个转化过程可能会导致额外的开销和延迟。
2. 数据转化和序列化:Hive在
执行
查询时需要将查询语句转化为MapReduce任务,并对数据进行序列化和反序列化。这些过程都会消耗一定的时间和计算资源,从而降低了
执行
速度。
3. 数据规模的影响:Hive通常用于处理大规模的数据集,而关系型数据库一般更适合小规模的数据查询。因此,在处理大规模数据时,Hive的
执行
速度相对较
慢
,而关系型数据库则能够更快地
执行
查询。
除了上述因素外,还有一些其他的影响因素可能导致Hive在
使用
JDBC调用时变得
慢
。例如,网络传输延迟、数据压缩和解压缩等方面的开销都可能对
执行
速度产生影响。
总之,Hive相对于关系型数据库而言,在
使用
JDBC调用时可能会变
慢
,主要是因为数据存储和处理方式不同、数据转化和序列化过程以及大规模数据对
执行
速度的影响。