DB2建立不记录日志的表
CREATE TABLE TB_6(ID INT, NAME VARCHAR(100));
INSERT INTO TB_6 VALUES(1,'JACK');
INSERT INTO TB_6 VALUES(1,'Timo');
-----建立无日日志表
--方法一:(表存在)
CREATE TABLE TB_7 LIKE TB_6 NOT LOGGED INITIALLY; --方法二:表不存在
CREATE TABLE TB_8(ID INT) NOT LOGGED INITIALLY; --方法三:先建表,后设置
CREATE TABLE TB_9(ID INT) ; ALTER TABLE TB_9 ACTIVATE NOT LOGGED INITIALLY
但是,当你在数据库中执行UPDATE语句的时候,上述表还是记录日志的,如果想不记录日志,请参照
https://www.cnblogs.com/OliverQin/p/10219108.html
1. DB2大数据处理不记录事务日志步骤:
建表需要添加属性“NOT LOGGED INITIALLY”
在大批量更改操作的同一个事务开始时执行:“ALTER TABLE tabname ACTIVATE NOT LOGGED INITIALLY”
执行更新sql
提交,一个事务完成,后续sql为下一个事务,默认记录事务日志
但是根据IBM的官方文档及测试,建表的时候不加参数“NOT LOGGED INITIALLY”,直接进行“ALTER TABLE tabname ACTIVATE NOT LOGGED INITIALLY”也是可以的。
2. IBM官方文档:
使用 NOT LOGGED INITIALLY 参数减少日志记录
如果应用程序根据主表创建并填充工作表,并且您不担心这些工作表的可恢复性(因为可以根据主表方便地重新创建它们),
那么创建工作表时可以在 CREATE TABLE 语句上指定 NOT LOGGED INITIALLY 参数。这样可以减少日志记录并提高性能。
使用 NOT LOGGED INITIALLY 参数的优点是,不记录在创建表的同一个工作单元中对该表所作的任何更改(包括插入、删除、更新或创建索引操作)。
这不仅降低了日志记录工作量,还能提高应用程序性能。还可以对现有表使用带 NOT LOGGED INITIALLY 参数的 ALTER TABLE 语句,来获得同样的结果。
3. 理解
上述描述说了两个意思:
1.创建并填充工作表create table A as select * from B 时加NOT LOGGED INITIALLY不记录日志。
2.在表创建后(无论在建表时有无NOT LOGGED INITIALLY),对于一个事务不记录日志时,用“ALTER TABLE tabname ACTIVATE NOT LOGGED INITIALLY”。
可以看出不记录日志只是对事务而言,当事务提交后not logged intially选项同时被关闭。
因为该事务没有记录日志,导致对应的表出现异常后不能被恢复(发生SQL1477N异常,只能将表删除重建),最好在not logged intially后对表执行备份。
not logged intially方法不被推荐使用,如果要导入大量数据,还是使用Load,Import好一些; 想要在程序中写也是可以的,DB2提供了API,你可以参考API Reference。
4. sql举例
DB2 CREATE TABLE A ...... NOT LOGGED INITIALLY;
db2 ALTER TABLE A ACTIVATE NOT LOGGED INITIALLY;
db2 Insert into a select * from b;
db2 commit;
commit之前由于打开了not logged intially选项,后面的Sql语句不计日志;
commit之后not logged intially选项同时被关闭; 这个时候最好执行备份,因为你这一段数据操作是没有日志的,不利于以后恢复。
来自:http://www.cnblogs.com/BradMiller/archive/2013/07/18/3198622.html
DB2建立不记录日志的表的更多相关文章
- Ideal Forms – 帮助你建立响应式 HTML5 表单
Ideal Forms 是建立和验证响应式 HTML5 表单的终极框架.它刚刚发布 V3 版本,更小,更快,更具可扩展性.它支持实时验证,完全自适应(适应容器,没有 CSS 媒体查询需要),键盘支持, ...
- DB2支持的三种表空间SMS、DMS、DMS的自动存储
DB2支持的三种表空间SMS.DMS.DMS的自动存储 DB2中,表空间是数据库与这个数据库中存储的表之间的逻辑层.表空间在数据库中创建,表在表空间中创建.容器是一个物理存储设备.它可以由目录名.设备 ...
- db2数据库中查找数据库表
模糊查找db2数据库中的数据库表: select tabname,remarks from syscat.tables where TABNAME like 'DM%' select 'DROP T ...
- 第三百七十七节,Django+Xadmin打造上线标准的在线教育平台—apps目录建立,以及数据表生成
第三百七十七节,Django+Xadmin打造上线标准的在线教育平台—apps目录建立,以及数据表生成 apps目录建立 我们创建一个apps目录,将所有的app放到apps目录里去,这样方便管理,也 ...
- db2 中 SQL判断物理表是否存在、修改表名
1.db2 中 SQL判断物理表是否存在 SELECT * FROM SYSIBM.SYSTABLES WHERE TID <> 0 AND Name = 'TABLE_NAME' AND ...
- 一次作业过程及其问题的记录:mysql建立数据库、建表、查询和插入等
前言 这次的作业需要我建立一个小的数据库. 这次作业我使用了mysql,进行了建库.建表.查询.插入等操作. 以下是对本次作业相关的mysql操作过程及过程中出现的问题的记录. 正文 作业中对数据库的 ...
- db2建立表空间
--缓冲池 CREATE BUFFERPOOL EMP_BUF_POOL IMMEDIATE ALL DBPARTITIONNUMS SIZE 250 NUMBLOCKPAGES 0 PAG ...
- db2 reorg到底需要多少表空间(转)
脱机reorg需要一定的空间,这个空间与目标所在的数据表空间.索引表空间.以及临时表空间均有关,各空间需求的大小与表和索引所占用的数据页和索引页相关. (1)对表执行reorg操作如:db2 reor ...
- db2实例、数据库、表空间
创建数据数据库之前必须创建实例,数据库是运行在实例之上的.实例在本质上是由一些后台进程和共享内存组成.实例相当于是数据库的一个容器,可以包含多个数据库,但是一个数据库只能由一个实例进行管理.相当于Wi ...
随机推荐
- 华为OJ平台——整形数组合并
题目描述: 将两个整型数组按照升序合并,并且过滤掉重复数组元素 输入: 输入说明,按下列顺序输入: 1 输入第一个数组的个数 2 输入第一个数组的数值 3 输入第二个数组的个数 4 输入第二个数组的数 ...
- Discussing the scenery in the program of 863 with Doctor Zhang!
今天,下午去了NEC找章丰博士师兄交流了一下863项目关于SDN场景的设置问题,通过交流感觉师兄的水平和层次完全在另一个层次,以及人家的谈吐. 主要的结论有以下几个:(1)移动性管理场景 (2)特殊 ...
- 【MySQl】MyISAM和InnoDB索引对比
部分内容转自:http://www.2cto.com/database/201211/172380.html 比较好的文章:http://www.cnblogs.com/hustcat/archive ...
- 关于原生js的一些研究
搬砖,原文地址:http://segmentfault.com/a/1190000002911253 callee和caller function inner(){ console.log(argum ...
- 设计模式-工厂方法模式(FactoryMethod)
简介: 简单工厂模式将类的示例化放在工厂对象中. 工厂方法模式是简单工厂模式的延伸,不同的是其将子类的实例化延迟到子类工厂中实现,本身仅定义一个创建对象的接口. 工厂方法模式主要由四部分组成: 1.抽 ...
- jquery 入门之-------jquery 简介
什么是jquery? Jquery是一个Javascript库,通过封装原生的Javascript函数得到一套定义好的方法.它可以用个少的代码完成更多更强大更复杂的功能,从而得到开发者的青睐. So! ...
- Spring事务:传播行为与隔离级别
文章主要来源:https://github.com/dengdaiyemanren/onetopiconeday/wiki/spring%E4%BA%8B%E5%8A%A1%E9%85%8D%E7%B ...
- c#自定义进度条
有些时候我们做的程序需要进度条,而vs提供的控件不是我们想要的.先看效果图: 进度条闪烁动画,当然背景可设为Transparent 之前想手绘进度条线条的,结果控件运行时会闪烁,所以直接用 ...
- 记一下ajax里get与post的异同
以下均为个人笔记,如有错误,欢迎指正 get与post在写法上来讲基本上差不多 $.ajax({ type:"get",//get data:data, success:funct ...
- 关于MongoDb Replica Set的故障转移集群——实战篇
如果你还不了解Replica Set的相关理论,请猛戳传送门阅读笔者的上一篇博文. 因为Replica Set已经属于MongoDb的进阶应用,下文中关于MongoDb的基础知识笔者就不再赘述了,请参 ...