前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >【Oracle】-【COMMIT对索引的影响】-从trace看COMMIT对索引的影响

【Oracle】-【COMMIT对索引的影响】-从trace看COMMIT对索引的影响

作者头像
bisal
发布于 2019-01-29 02:43:59
发布于 2019-01-29 02:43:59
7160
举报

之前看过老杨http://yangtingkun.itpub.net/post/468/231000的一篇文章,讲述了INSERT操作对全文索引无操作,但DELETE时为了防止删除的数据仍能通过索引的ROWID访问产生的错误,此时会进行索引的删除操作,因此大批量的DELETE-COMMIT就会耗时,甚至导致数据库挂起。

最近因为工作上的需求,有个任务涉及到数据迁移,因此一直关注COMMIT耗时的问题,就想按照老杨的方法,看看对于普通索引,上述所说的COMMIT是否有影响。

测试环境:Oracle 10.2.0.4+Linux x86_64

用例1:INSERT后COMMIT操作。

SQL> create table t as select * from dba_objects; Table created.

SQL> create index t_idx on t(object_id); Index created.

SQL> insert into t(object_id) values(1); 1 row created. SQL> alter session set sql_trace=true; Session altered. SQL> commit; Commit complete. SQL> alter session set sql_trace=false; Session altered.

用例2:DELETE后COMMIT操作。

重登陆

SQL> delete from t where object_id=1; 1 row deleted. SQL> alter session set sql_trace=true; Session altered. SQL> commit; Commit complete. SQL> alter session set sql_trace=false; Session altered.

这里重登陆再trace是为了防止重用会话缓存的游标,从而使结果更清晰。

用例1的trace文件:

*** 2013-07-31 08:56:57.328 *** ACTION NAME:() 2013-07-31 08:56:57.328 *** MODULE NAME:(sqlplus@vm-vmw4131-t (TNS V1-V3)) 2013-07-31 08:56:57.328 *** SERVICE NAME:(SYS$USERS) 2013-07-31 08:56:57.328 *** SESSION ID:(508.20733) 2013-07-31 08:56:57.327 ===================== PARSING IN CURSOR #1 len=6 dep=0 uid=0 oct=44 lid=0 tim=1343000212234337 hv=3480936638 ad='0' commit END OF STMT PARSE #1:c=0,e=54,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=0,tim=1343000212234330 XCTEND rlbk=0, rd_only=0 EXEC #1:c=0,e=374,p=0,cr=0,cu=1,mis=0,r=0,dep=0,og=0,tim=1343000212235249 ===================== PARSING IN CURSOR #2 len=33 dep=0 uid=0 oct=42 lid=0 tim=1343000219675725 hv=525901419 ad='0' alter session set sql_trace=false END OF STMT PARSE #2:c=0,e=47,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=0,tim=1343000219675717 EXEC #2:c=0,e=28,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=0,tim=1343000219675914

用例2的trace文件:

*** 2013-07-31 08:57:43.829 *** ACTION NAME:() 2013-07-31 08:57:43.828 *** MODULE NAME:(sqlplus@vm-vmw4131-t (TNS V1-V3)) 2013-07-31 08:57:43.828 *** SERVICE NAME:(SYS$USERS) 2013-07-31 08:57:43.828  *** SESSION ID:(508.20743) 2013-07-31 08:57:43.828 ===================== PARSING IN CURSOR #3 len=6 dep=0 uid=0 oct=44 lid=0 tim=1343000257645312 hv=3480936638 ad='0' commit END OF STMT PARSE #3:c=0,e=130,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=0,tim=1343000257645304 XCTEND rlbk=0, rd_only=0 EXEC #3:c=0,e=424,p=0,cr=0,cu=1,mis=0,r=0,dep=0,og=0,tim=1343000257646177 ===================== PARSING IN CURSOR #1 len=33 dep=0 uid=0 oct=42 lid=0 tim=1343000265207698 hv=525901419 ad='0' alter session set sql_trace=false END OF STMT      PARSE #1:c=0,e=50,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=0,tim=1343000265207690 EXEC #1:c=0,e=31,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=0,tim=1343000265207917

由此可见,两种操作后的trace显示仅仅包含COMMIT操作,并没有类似文章中提到的对全文索引那样的维护操作。换句话说,我理解COMMIT操作自身除触发LGWR外,没有其它的耗时。如果COMMIT的时间长,一方面可能是LGWR的问题,另一方面可能是COMMIT之前的操作问题,需要具体问题具体分析。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2013年07月31日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
php的随机数的安全性分析
php的随机数的安全性分析 在php中,产生随机数的方法有 rand()函数和mt_rand()函数,官方说mt_rand()函数要比rand()函数的速度快四倍,至于到底是不是这样的?他们两个的区别
用户1879329
2023/02/27
2.1K0
php的随机数的安全性分析
php随机数生成漏洞函数,php随机数生成函数[通俗易懂]
$chars=’ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789′;
全栈程序员站长
2022/11/17
3.5K0
PHP实现文件上传
PHP文件上传功能由俩个部分组成,HTML页面和PHP处理部分,HTML页面主要让用户选中要上传的文件,PHP部分让我们可以把文件存储到服务器的指定目录。
岳泽以
2023/04/24
2.9K0
PHP生成随机密码的4种方法及性能对比
方法一: 1、在 33 – 126 中生成一个随机整数,如 35, 2、将 35 转换成对应的ASCII码字符,如 35 对应 # 3、重复以上 1、2 步骤 n 次,连接成 n 位的密码 该算法主要用到了两个函数,mt_rand ( int $min , int $max )函数用于生成随机整数,其中 $min – $max 为 ASCII 码的范围,这里取 33 -126 ,可以根据需要调整范围,如ASCII码表中 97 – 122 位对应 a – z 的英文字母,具体可参考 ASCII码表; chr
wangxl
2018/03/07
1.4K0
PHP伪随机数问题
个人理解: mt_srand(seed)这个函数的意思,是通过分发seed种子,然后种子有了后,靠mt_rand()生成随机数。
字节脉搏实验室
2020/04/21
3.3K0
PHP 生成随机码探索
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011415782/article/details/78298111
泥豆芽儿 MT
2018/09/11
8990
记一次PHP伪随机数漏洞
​ 日常水群时看到的题目,刚看到的时候在写实验报告,所以大致看了一下,是php伪随机数漏洞,
ly0n
2020/11/04
1.8K0
记一次PHP伪随机数漏洞
PHP项目中最常用的函数
<?php //alert提示 function alert($msg){ echo "<script>alert('$msg');</script>"; } //把一些预定义的字符转换为
php007
2019/08/05
4480
审计思路学习笔记
比如有函数名 move_uploaded_file() ,接着看调用这个函数的代码是否存在为限制上传格式或者可以绕过
红客突击队
2022/09/28
1.3K0
审计思路学习笔记
深入理解PHP中mt_rand()随机数的安全
前言 在前段时间挖了不少跟mt_rand()相关的安全漏洞,基本上都是错误理解随机数用法导致的。这里又要提一下php官网manual的一个坑,看下关于mt_rand()的介绍:中文版^cn 英文版^en,可以看到英文版多了一块黄色的 Caution 警告
用户2323866
2021/07/09
1.1K0
DEDECMS伪随机漏洞分析
根据第二篇,我们有信心去遍历root key的所有可能, 但是我们还需要一个碰撞点, 才能真正得到root key的值, 本篇找到了两个碰撞点, 并编写了简单的POC来获取root key。
FB客服
2020/07/09
24.2K0
DEDECMS伪随机漏洞分析
Cookie算法与Rootkey随机强度分析
本篇为《DEDECMS伪随机漏洞 (一) :PHP下随机函数的研究》的续篇,研究DEDECMS的cookie生成的算法, 以及rootkey生成的算法, 确认rootkey使用的随机算法的强度, 计算攻击耗时。
FB客服
2020/06/16
9990
Cookie算法与Rootkey随机强度分析
md5(unix)原理分析
看到t00ls上有同学在问这个问题: https://www.t00ls.net/thread-31914-1-1.html
phith0n
2020/10/15
1.5K0
php生成随机字符串
1,A 2,D 3,C 4,C 5,D 6,A 7,A 8,B 9,A 10,C 11,C 12,A 13,A 14,C 15,A 16,A 17,D 18,D 19,C 20,C
py3study
2018/08/02
1.5K0
PHP方法总结
编程时间长了,大家见过很多函数功能吧,比如获取用户IP等等,现在我将常用的PHP函数做个总结,方便大家COPY和使用。
老高的技术博客
2022/12/27
5460
Discuz_X authkey安全性漏洞分析
2017年8月1日,Discuz!发布了X3.4版本,此次更新中修复了authkey生成算法的安全性漏洞,通过authkey安全性漏洞,我们可以获得authkey。系统中逻辑大量使用authkey以及authcode算法,通过该漏洞可导致一系列安全问题:邮箱校验的hash参数被破解,导致任意用户绑定邮箱可被修改等… 2017年8月22日,360cert团队发布了对该补丁的分析,我们对整个漏洞进行了进一步分析,对漏洞的部分利用方式进行了探究。
LoRexxar
2023/02/21
8770
Discuz_X authkey安全性漏洞分析
[Golang] 生成随机字符串
这样生成的随机字符串是永久的同样的字符串。 下面,我演进了一个方案,同样是用的math/rand包里的方法来实现的
用户2353021
2020/05/12
8.2K0
6种php加密解密方法
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/166656.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/19
1.6K0
PHP 生成时间种子 批量 随机数
HP时间种子批量随机数。本文说明PHP如何用时间种子批量生成随机数。 PHP函数mt_rand()和rand()会在批量生成的时候是会有几率出现重复的随机数。srand()和mt_srand()在PHP4.1开始已经不在显式调用了,在mt_rand和rand的时候会自动生成种子。因为,在批量随机的时候,我们自己显式条用生成种子,就可以避免重复。为什么呢?因为种子不一样了呀。种子为什么不一样了呢?因为他是时间种子。
用户1448800
2021/08/16
1.2K0
PHP 常用功能函数
1. 生成指定长度的随机英文数字字符串 2. 生成24位随机订单号, 年月日时分秒(14位) + 10位随机数 3. 根据时间戳出计算到现在的文字时间 4. 格式化数字(将一个整数进行单位转换: 万、亿) 5. 构建 TP6 模型搜索器数据 6. 路径中的目录如果不存在就执行创建目录 7. 给文件生成新的随机文件名 1. 生成指定长度的随机英文数字字符串 ---- /** * 生成指定长度的随机英文数字字符串 * @param int $length 字符串长度 * @return string 成的随机
很酷的站长
2023/01/16
7420
相关推荐
php的随机数的安全性分析
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文