跟事务相关的日志生成量的对比

原创 2004年07月04日 16:16:00

 

1: 插入相同数量记录的单条提交和成皮提交之间的对比
我们可以看出分别是 25112152 - 8024588 = 17087564
8024588 - 13384 = 8011204
对比相差达到9M


SQL> show parameters transaction_auditing

NAME TYPE VALUE
------------------------------------ ------- --------------------
transaction_auditing boolean TRUE
SQL>


SQL> select name,value from v$sysstat where name like 'redo size';

NAME VALUE
---------------------------------------------------------------- ----------
redo size 13384

SQL> begin
2 for i in 1..25835 loop
3 insert into rainy.t select * from dba_objects where rownum = 1;
4 end loop;
5 end;
6 /

PL/SQL procedure successfully completed.

SQL> commit;

Commit complete.

SQL> select name,value from v$sysstat where name like 'redo size';

NAME VALUE
---------------------------------------------------------------- ----------
redo size 8024588

SQL> begin
2 for i in 1..25835 loop
3 insert into rainy.t select * from dba_objects where rownum = 1;
4 commit;
5 end loop;
6 end;
7 /

PL/SQL procedure successfully completed.

SQL> select name,value from v$sysstat where name like 'redo size';

NAME VALUE
---------------------------------------------------------------- ----------
redo size 25112152


2 : 关于设置 transaction_auditing = false/true 前后的对比
13892572 - 12332 = 13880240

对比 1 中相同状况下的结果 17087564 ,可以看出体制生成两相差了大约3M

SQL> show parameters transaction_auditing

NAME TYPE VALUE
------------------------------------ ------- --------------------
transaction_auditing boolean FALSE
SQL>

SQL> select name,value from v$sysstat where name like 'redo size';

NAME VALUE
---------------------------------------------------------------- ----------
redo size 12332

SQL> begin
2 for i in 1..25835 loop
3 insert into rainy.t select * from dba_objects where rownum = 1;
4 commit;
5 end loop;
6 end;
7 /

PL/SQL procedure successfully completed.

SQL> select name,value from v$sysstat where name like 'redo size';

NAME VALUE
---------------------------------------------------------------- ----------
redo size 13892572



结论:
成批提交和但条提交所产生的日志量差异巨大,成批提交通常远小于单条提交

关于transaction_auditing ,我们先看oracle的解释
If TRANSACTION_AUDITING is true, Oracle generates a special redo record that contains the user logon name, username, the session ID, some operating system information, and client information. For each successive transaction, Oracle generates a record that contains only the session ID. These subsequent records link back to the first record, which also contains the session ID.

These records might be useful if you are using a redo log analysis tool. You can access the records by dumping the redo log.

If TRANSACTION_AUDITING is false, no redo record will be generated

      这个意思是,如果设置为true,则oracle将对事务进行审计,也就是日志里面为事务产生一几乎固定大小的信息,包括用户名、session is、一些操作信息、client信等(通过dump logfile可以看到),这些信息在使用logmnr等工具分析的时候可以有用的。如果设置该参数为false,则在大量的短小事务的情况下将产生不可忽略的日志生成量的差异

oracle 统计redo统计当天日志生成和最近日期日志生成统计

某日全天的日志生成统计: select trunc(completion_time),sum(Mb)/1024 day_gb  from (select name,completion_time,...
  • sustwct
  • sustwct
  • 2013年12月05日 15:43
  • 744

MySQL读书笔记-事务日志,MySQL中的事务

WLA(Write-Ahead Logging) 事务日志,可以帮助提高事务的效率。使用事务日志,存储引擎在修改表的数据时,只需要修改其内存拷贝,再把该修改行为记录到硬盘上的事务日志中,而不用每次都...
  • delphiwcdj
  • delphiwcdj
  • 2016年07月13日 23:42
  • 2039

mysql 整理之mysql INNODB的事务和日志

5.1redo undo Redo用于前滚 undo用于回滚和一致性读 redo:在页修改的时候,先写到redo log buffer 里面,然后写到redo log 的文件系统缓存里面(fwrite...
  • mysql_lover
  • mysql_lover
  • 2017年02月08日 13:48
  • 1399

数据库 'tempdb' 的事务日志已满。若要查明无法重用日志中的空间的原因

最常的做法: --1.清空日志 DUMP TRANSACTION tempdb WITH NO_LOG --2.截断事务日志: BACKUP LOG tempdb WITH NO_LOG --3.收缩...
  • yenange
  • yenange
  • 2014年02月27日 11:24
  • 11774

Mysql 的事务与日志

事务: 事务就是一组原子性的SQL查询,或者说一个独立的工作单元。如果数据库引擎能够成功对数据库应用该组的全部语句,那么就执行该组查询。 事务的ACID的概念: 原子性:一个事务必须被视为一个不可...
  • saga_gallon
  • saga_gallon
  • 2016年07月07日 00:08
  • 706

sql server2008 事务日志满的解决办法

sql server2008 事务日志满的解决办法收缩MDF和LDF文件:--收缩MDF: DBCC SHRINKFILE ('IVMS8100v3',1)--收缩LDF: USE [master] ...
  • xuejianhui
  • xuejianhui
  • 2015年09月18日 21:15
  • 2916

sqlserver数据库事物日志已满的问题解决办法

sqlserver数据库事物日志已满的问题解决办法 把日志清掉:     USE [master]     GO     ALTER DATABASE wf_db SE...
  • hsg77
  • hsg77
  • 2015年05月04日 16:39
  • 2269

innodb事务日志详解

Mysql会最大程度的使用缓存机制来提高数据库的访问效率,但是万一数据库方式断电,因为缓存的数据没有写入磁盘,导致缓存在内存中的数据丢失而导致数据不一致怎么办?  Innodb主要是通过事务日志实现A...
  • jerry____wang
  • jerry____wang
  • 2016年06月22日 15:35
  • 4960

关于事务日志的再学习理解~!!!!

如下定义: 1,日志中的每条记录都由一个唯一的日志序号 (LSN) 标识。事务的所有日志记录都链接在一起。 2,包含尚未写入磁盘的修改的缓冲区页称为脏页 3,将脏缓冲区页写入磁盘称为刷新页 4,对修改...
  • wisdomone
  • wisdomone
  • 2006年09月14日 21:21
  • 643

SQLServer中事务日志已满的原因以及解决办法

SQLServer中事务日志已满的原因以及解决办法 错误描述:数据库的事务日志已满。若要查明无法重用日志中的空间的原因 ,请参阅sys.databases 中的 log_reuse_wait_des...
  • sxty0220
  • sxty0220
  • 2015年07月27日 18:26
  • 5977
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:跟事务相关的日志生成量的对比
举报原因:
原因补充:

(最多只允许输入30个字)