Welcome 微信登录

首页 / 数据库 / MySQL / Oracle Nologging and Append 经典总结

对于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的状态下其实插入都是一样的速度
 
 
  • 1
  • 2
  • 下一页
Oracle预编译的SQL语句处理Oracle dbms_utility.get_time相关资讯      Oracle教程 
  • Oracle中纯数字的varchar2类型和  (07/29/2015 07:20:43)
  • Oracle教程:Oracle中查看DBLink密  (07/29/2015 07:16:55)
  • [Oracle] SQL*Loader 详细使用教程  (08/11/2013 21:30:36)
  • Oracle教程:Oracle中kill死锁进程  (07/29/2015 07:18:28)
  • Oracle教程:ORA-25153 临时表空间  (07/29/2015 07:13:37)
  • Oracle教程之管理安全和资源  (04/08/2013 11:39:32)
本文评论 查看全部评论 (0)
表情: 姓名: 字数