Home  >  Article  >  Database  >  Oracle Nologging and Append 经典总结

Oracle Nologging and Append 经典总结

WBOY
WBOYOriginal
2016-06-07 17:02:401634browse

对于logging的理解总是以为表的日志设置为NO它就不会去产生日志了,其实不是的下面是对于logging的一些解释和试验。Logging介绍可

对于logging的理解总是以为表的日志设置为NO它就不会去产生日志了,其实不是的下面是对于logging的一些解释和试验。 

Logging介绍 

可以采用nologging模式执行以下操作:

1.索引的创建和ALTER(重建)。
2.表的批量INSERT(通过/*+append */提示使用“直接路径插入“。或采用SQL*Loader直接路径加载)。表数据生成少量redo,但是所有索引修改会生成大量redo(尽管表不生成日志,但这个表上的索引却会生成redo!)。
3.Lob操作(对大对象的更新不必生成日志)。
4.通过create table as select创建表。
5.各种alter table操作,如move和split。

在一个archivelog模式的数据库上,如果nologging使用得当,可以加快许多操作的速度,因为它能显著减少生成的重做日志量。假设你有一个表,需要从一个表空间移到另一个表空间,原先需要N小时才能完成的操作可能只需要N/2小时。要想适当地使用这个特性,需要DBA的参与,或者必须与负责数据库备份和恢复(或任何备用数据库)的人沟通。如果这个人不知道使用了这个特性,一旦出现介质失败,,就可能丢失数据,或者备用数据库的完整性可能遭到破坏,对此一定要三思。 

对象Logging状态查询

通过此查询SQL语句查询表的logging状态

SELECT T.TABLE_NAME, T.LOGGING
  FROM USER_TABLES T
 WHERE T.TABLE_NAME LIKE '%TEST_FUTUFARES%'; 

Create和Insert的Logging测试
Create table …. as select ….及 insert into …..select ….测试 

改变logging状态值的方法:

ALTER TABLE table_name NOLOGGING/logging; 

下面的例子是源数据在1万条左右,Create table …as select …测试发现相差2秒钟左右,特别是在大数据量带有nologging的Create速度上确实会快很多。 


 

下面是INSERT语句的测试数据量在2百万左右,TEST_FUTUFARES2的logging不管是在YES还是NO的状态下其实插入都是一样的速度


 


 

linux

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Previous article:Oracle 10g 闪回Next article:Oracle 内存管理PGA