社区
Oracle 高级技术
帖子详情
ORACLE中索引会产生重做日志么
flzhang
2009-12-16 05:51:13
问下大家,ORACLE 11G在做有索引的字段上做insert或update或delete操作时,除了操作本身产生的重做日志外,索引会产生重做日志么?为什么有的书上总说减少nologging index的开销呢? 请大家帮忙回答下, 谢谢了!
...全文
341
14
打赏
收藏
ORACLE中索引会产生重做日志么
问下大家,ORACLE 11G在做有索引的字段上做insert或update或delete操作时,除了操作本身产生的重做日志外,索引会产生重做日志么?为什么有的书上总说减少nologging index的开销呢? 请大家帮忙回答下, 谢谢了!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
flzhang
2009-12-18
打赏
举报
回复
呵呵,涨见识了,多谢各位,发分了!
flzhang
2009-12-17
打赏
举报
回复
楼上的,你是说如果执行这样的语句
select * from author where a_id='1'
或 insert into author(a_id) value('2');
在a_id上如果有索引 不管是select还是insert操作ORACLE都会产生重做日志么?
wh62592855
2009-12-17
打赏
举报
回复
select一般情况下是不会产生REDO的 除非需要延迟块清除的时候
至于延迟块清除这个概念有些深入了 如果你想了解的可以参考下面的链接
http://blog.csdn.net/wh62592855/archive/2009/10/26/4730623.aspx
还有 你的对select、insert和索引的关系肯能有些不太清楚
select和insert执行的过程中都会牵扯到索引
select只是通过索引更快的找到需要的数据而已 不会对索引进行修改 因此不会产生索引相关的REDO 就算产生了REDO 那么就是前面所说的延迟块清除导致的
而insert是往表里插入一条数据 这个时候在索引中也要相应的插入一条数据
不然你下次如何通过索引找到这条新插入的数据呢? 对吧 呵呵
liuyi8903
2009-12-17
打赏
举报
回复
如果有大批量的加载,而没有分段提交的话就有可能有这个情况的。
flzhang
2009-12-17
打赏
举报
回复
请问wh62592855
select * from author where a_id='1'
COMMIT
我在SQLPLUS里执行了这两句话,查看他的执行计划发现 REDO SIZE=0
那是不是说select中用到了索引,就不会产生redo,但insert中用到索引,索引还会产生额外的redo呢?
还有liuyi8903您说的select时块延迟清除时是什么时候啊?不知是什么意思?压力测试中会块延迟清除么
liuyi8903
2009-12-17
打赏
举报
回复
[Quote=引用 7 楼 flzhang 的回复:]
楼上的,你是说如果执行这样的语句
select * from author where a_id='1'
或 insert into author(a_id) value('2');
在a_id上如果有索引 不管是select还是insert操作ORACLE都会产生重做日志么?
[/Quote]
inserto当然会啊,但select 就不一定了,如果涉及到块延迟清除的话第一次也会产生redo
wh62592855
2009-12-17
打赏
举报
回复
[Quote=引用楼主 flzhang 的回复:]
问下大家,ORACLE 11G在做有索引的字段上做insert或update或delete操作时,除了操作本身产生的重做日志外,索引会产生重做日志么?为什么有的书上总说减少nologging index的开销呢? 请大家帮忙回答下, 谢谢了!
[/Quote]
1
索引也会产生相应的重做日志的
这样才能保证在应用日志恢复的时候相应的索引也会被更改
2
nologging并不代表就完全不产生重做日志
和其他很多因素有关
比如说数据库的模式(归档或者非归档)
表的创建模式 NOLOGGING或者LOGGING
插入数据的模式 APPEND或者NOAPPEND
zhangivan
2009-12-17
打赏
举报
回复
关注。up
liuyi8903
2009-12-16
打赏
举报
回复
另外,index也是要产生redo的。
liuyi8903
2009-12-16
打赏
举报
回复
nologgiing是不一定不产生redo的,建议楼主好好实验一下。是减少而不是不产生。
archivelog和noarchivelog下又不一样。
Dave
2009-12-16
打赏
举报
回复
[Quote=引用楼主 flzhang 的回复:]
问下大家,ORACLE 11G在做有索引的字段上做insert或update或delete操作时,除了操作本身产生的重做日志外,索引会产生重做日志么?为什么有的书上总说减少nologging index的开销呢? 请大家帮忙回答下, 谢谢了!
[/Quote]
个人觉得不会, 当对有索引的字段做更新时,表会产生undo前镜像,并对索引进行相应的更新。所以对有索引的表做插入的时候,如果是写日志的情况下,表需要写redo log, 如果是大量的插入会很耗时。
如果表是在nologing 的模式下, 就不会写redo log日志,这样插入的速度会块很多。
------------------------------------------------------------------------------
Blog
: http://blog.csdn.net/tianlesoftware
网上资源
: http://tianlesoftware.download.csdn.net
相关视频
:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx
Q Q 群:62697716
huangyunzeng2008
2009-12-16
打赏
举报
回复
我觉得应该不会有吧!而且也没这个必要吧!难道恢复时还要用到索引不成!
bzcnc
2009-12-16
打赏
举报
回复
帮楼主顶一下,我不是很了解
crazylaa
2009-12-16
打赏
举报
回复
似乎delete整个表的数据以后,索引数据还在,所以要经常reorg 索引。
我也想知道答案,关注。
oracle
视频教程 下载地址
Oracle
重做
日志
管理1
Oracle
重做
日志
管理2
Oracle
PL复合类型
Oracle
PL变量
Oracle
序列
索引
管理
Oracle
PL-DM操作
Oracle
PL循环
Oracle
sql_tune 因为视频太大 不能提供直接提供视频 具体的下载地址见我上传的TXT
Oracle
.9i数据库管理员指南(PDF)
9,使用Logminer来分析
重做
日志
文件 10,管理作业队列 11,管理表空间 12,管理数据文件 13,管理撤消空间 第3部分,模式对象 14,管理模式对象空间 15,管理表 16,管理
索引
17,管理分区表和分区
索引
18,管理簇 ...
Oracle
12数据库管理/DBA/数据库工程师培训
以
Oracle
12.2数据库为主要...内容包括:
Oracle
数据库安装,
Oracle
常用工具,
Oracle
数据库体系结构,
Oracle
网络管理,
Oracle
实例管理,
Oracle
控制文件管理,
Oracle
重做
日志
管理,
Oracle
数据存储,
Oracle
重做
日志
管理等。
Oracle
9i数据库系统概述.pdf
存储了 数据库名、数据库的数据文件和联机
重做
日志
文件的名称和位置、数据库建立日期、数据库 的当前序列号、数据库检查点、数据库
中
表空 间名等信息。每个
Oracle
数据库要求至少有两 个或两个以上的控制文件。 7 ...
ORACLE
+DBA必备技能详解.pdf
控制文件和
重做
日志
第四章:表空间 第五章:表 第六章:
索引
第七章:视图 第八章:集群 第十章:用户,资源文件,角色喝授权 第十一章:其他管理特性 第十二章:优化器 第十三张:其他命令 第十四章:内置函数 第十...
Oracle 高级技术
3,491
社区成员
18,714
社区内容
发帖
与我相关
我的任务
Oracle 高级技术
Oracle 高级技术相关讨论专区
复制链接
扫一扫
分享
社区描述
Oracle 高级技术相关讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章