暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

达梦数据库学习笔记之-- 未提交事务的脏数据会落盘吗?

2284

在研究达梦数据库相关机制的过程中,突然发现一个点。在Oracle中,我们知道对于数据块的写入其实有很多讲究,比如延迟块清除之类。那么在达梦数据库中,如果一个大事务未提交的情况下,其修改的脏数据是否会落盘呢? 这个疑问其实是在前面做相关恢复测试的过程中想到的。这里进行一下验证。

首先创建测试表,并准备测试数据:

SQL> create tablespace roger datafile '/opt/dm/dmdbms/data/enmotech/roger01.dbf' size 32;
executed successfully
used time: 28.953(ms). Execute id is 34.
SQL> create table test0829(a varchar2(20),b number) tablespace roger;
executed successfully
used time: 9.220(ms). Execute id is 35.
SQL>  insert into test0829 values('enmotech.com',10);
affect rows 1

used time: 1.772(ms). Execute id is 36.
SQL> insert into test0829 values('baidu.com',11);
affect rows 1

used time: 1.322(ms). Execute id is 37.
SQL> insert into test0829 values('killdb.com',12);
affect rows 1

used time: 1.528(ms). Execute id is 38.
SQL> commit;
executed successfully
used time: 2.107(ms). Execute id is 39.
SQL> select id,path,STATUS$,TOTAL_SIZE,FREE_SIZE,PAGE_SIZE from v$datafile;

ID          PATH                                        STATUS$     TOTAL_SIZE           FREE_SIZE            PAGE_SIZE  
----------- ------------------------------------------- ----------- -------------------- -------------------- -----------
0           /opt/dm/dmdbms/data/enmotech/SYSTEM.DBF     1           3072                 2295                 8192
0           /opt/dm/dmdbms/data/enmotech/ROLL.DBF       1           59264                58979                8192
0           /opt/dm/dmdbms/data/enmotech/TEMP.DBF       1           131072               131064               8192
0           /opt/dm/dmdbms/data/enmotech/MAIN.DBF       1           552960               6706                 8192
0           /opt/dm/dmdbms/data/enmotech/enmotech01.dbf 1           521728               503931               8192
1           /opt/dm/dmdbms/data/enmotech/enmotech02.dbf 1           24704                24692                8192
0           /opt/dm/dmdbms/data/enmotech/roger01.dbf    1           4096                 4081                 8192

7 rows got

used time: 7.026(ms). Execute id is 40.
SQL> select HEADER_FILE,HEADER_BLOCK,BYTES,BLOCKS,EXTENTS,RELATIVE_FNO from DBA_SEGMENTS where segment_name=upper('test0829');

HEADER_FILE HEADER_BLOCK BYTES                BLOCKS               EXTENTS              RELATIVE_FNO
----------- ------------ -------------------- -------------------- -------------------- ------------
0           16           131072               16                   1                    0

used time: 122.130(ms). Execute id is 41.
SQL>    
SQL> select rowid,a,b,dump(a,16),dump(b,16) from  test0829 order by 1;

ROWID                A            B  DUMP(A,16)                                        DUMP(B,16)       
-------------------- ------------ -- ------------------------------------------------- -----------------
10753                enmotech.com 10 Typ=2 Len=12: 65,6e,6d,6f,74,65,63,68,2e,63,6f,6d Typ=9 Len=2: c1,b
10754                baidu.com    11 Typ=2 Len=9: 62,61,69,64,75,2e,63,6f,6d           Typ=9 Len=2: c1,c
10755                killdb.com   12 Typ=2 Len=10: 6b,69,6c,6c,64,62,2e,63,6f,6d       Typ=9 Len=2: c1,d

used time: 2.009(ms). Execute id is 44.
SQL> 
SQL> select dump(9,16),dump(10,16),dump(11,16),dump(12,16) from dual;

DUMP(9,16)           DUMP(10,16)          DUMP(11,16)          DUMP(12,16)         
-------------------- -------------------- -------------------- --------------------
Typ=7 Len=4: 9,0,0,0 Typ=7 Len=4: a,0,0,0 Typ=7 Len=4: b,0,0,0 Typ=7 Len=4: c,0,0,0

used time: 2.155(ms). Execute id is 45.
SQL> 

[dmdba@mogdb ~]$ dd if=/opt/dm/dmdbms/data/enmotech/roger01.dbf of=/tmp/dd1.dbf bs=8192 skip=16 count=18
18+0 records in
18+0 records out
147456 bytes (147 kB) copied, 0.00070668 s, 209 MB/s
[dmdba@mogdb ~]$ 
[dmdba@mogdb ~]$ od -x /tmp/dd1.dbf 
0000000 0007 0000 0010 0000 ffff ffff ffff ffff
0000020 ffff ffff 0014 0000 0000 0000 04b8 0530
0000040 0000 0000 0002 0062 0000 0000 0000 ffff
0000060 0052 005a ffff 006e 0001 0507 0200 ffff
0000100 ffff ffff ffff ffff 0007 0000 0008 0000
0000120 0034 0000 0000 0000 0000 ffff ffff ffff
0000140 ffff 0000 0001 0000 0012 0000 0000 0000
0000160 0000 0000 0014 0000 0000 0000 0000 0000
0000200 0000 0000 0000 0000 0000 0000 0000 0000
*
0017760 0000 0000 005a 0052 0000 0000 0000 0000
0020000 0007 0000 0011 0000 ffff ffff ffff ffff
0020020 ffff ffff 1a1a 1a1a 0000 0000 04cc 0530
0020040 0000 0000 0002 0062 0000 0000 0000 ffff
0020060 0052 005a ffff 006e 0000 0000 0000 0000
0020100 0000 0000 0000 0001 0000 0003 0000 0000
0020120 0000 ffff ffff ffff 7fff ffff ffff ffff
0020140 ffff 0000 0000 0000 0000 0000 0000 0000
0020160 0000 0000 0000 0000 0000 0000 0000 0000
*
0037760 0000 0000 005a 0052 0000 0000 0000 0000
0040000 0007 0000 0012 0000 ffff ffff ffff 0000
0040020 0013 0000 0014 0000 0000 0000 04b8 0530
0040040 0000 0000 0002 0062 0000 0000 0000 ffff
0040060 0052 005a ffff 006e 0000 0507 0200 0000
0040100 0000 0000 0000 0000 0000 0000 0000 0000
0040120 0000 0013 0000 0000 0000 ffff ffff ffff
0040140 ffff 0000 0000 0000 0000 0000 0000 0000
0040160 0000 0000 0000 0000 0000 0000 0000 0000
*
0057760 0000 0000 005a 0052 0000 0000 0000 0000
0060000 0007 0000 0013 0000 0000 0012 0000 ffff
0060020 ffff ffff 0014 0000 0000 0000 04b8 0530
0060040 0000 0000 0002 0062 0000 0000 0000 ffff
0060060 0052 005a ffff 006e 0000 0507 0200 0000
0060100 0000 0000 0000 0000 0000 0000 0000 0000
0060120 0000 0000 0000 0000 0000 ffff ffff ffff
0060140 ffff 0000 0000 0000 0000 0000 0000 0000
0060160 0000 0000 0000 0000 0000 0000 0000 0000
*
0077760 0000 0000 005a 0052 0000 0000 0000 0000
0100000 0007 0000 0014 0000 ffff ffff ffff 0000
0100020 0015 0000 0014 0000 0000 0000 04b8 0530
0100040 0000 0000 0002 0062 0000 0000 0000 ffff
0100060 0052 005a ffff 006e 0000 0507 0200 0000
0100100 0000 0000 0000 0000 0000 0000 0000 0000
0100120 0000 0015 0000 0000 0000 ffff ffff ffff
0100140 ffff 0000 0000 0000 0000 0000 0000 0000
0100160 0000 0000 0000 0000 0000 0000 0000 0000
*
0117760 0000 0000 005a 0052 0000 0000 0000 0000
0120000 0007 0000 0015 0000 0000 0014 0000 ffff
0120020 ffff ffff 0014 0000 0000 0000 04c9 0530
0120040 0000 0000 0005 00bd 0000 0000 0003 ffff
0120060 0052 005a ffff 00cf 0000 0507 0200 0000
0120100 0000 0000 0000 0000 0000 0000 0000 0000
0120120 0000 0000 0000 0000 0000 ffff ffff ffff
0120140 ffff 2000 8c00 6e65 6f6d 6574 6863 632e  --enmotech.com
0120160 6d6f c182 ff0b ffff 7fff ffff 4885 000d
0120200 0000 1d00 8900 6162 6469 2e75 6f63 826d  --baidu.com
0120220 0cc1 ffff ffff ff7f 85ff 0d48 0000 0000
0120240 001e 6b8a 6c69 646c 2e62 6f63 826d 0dc1  --roger.com
0120260 ffff ffff ff7f 85ff 0d48 0000 0000 0000
0120300 0000 0000 0000 0000 0000 0000 0000 0000
*
0137740 0000 0000 0000 0000 0000 0000 0000 005a
0137760 009f 0082 0062 0052 0000 0000 0000 0000
0140000 0000 0000 0000 0000 0000 0000 0000 0000
*
0440000
[dmdba@mogdb ~]$  


接下来我们新开2个session。

---session 1
SQL> insert into test0829 values('mogdb.com',66);
affect rows 1

used time: 2.582(ms). Execute id is 46.
SQL> select checkpoint(100);

CHECKPOINT(100)
---------------
0

used time: 6.470(ms). Execute id is 47.
SQL> alter system switch logfile;
executed successfully
used time: 7.887(ms). Execute id is 0.
SQL> alter system archive log current;
executed successfully
used time: 1.424(ms). Execute id is 0.
SQL> 
SQL> select dump('mogdb.com',16),dump(66,16) from dual;

DUMP('mogdb.com',16)                    DUMP(66,16)          
--------------------------------------- ---------------------
Typ=2 Len=9: 6d,6f,67,64,62,2e,63,6f,6d Typ=7 Len=4: 42,0,0,0

used time: 1.582(ms). Execute id is 48.
SQL> 

--session 2
[dmdba@mogdb ~]$ disql sysdba/roger007

Server[LOCALHOST:5236]:mode is normal, state is open
login used time : 7.446(ms)
disql V8
SQL> select * from test0829;

LINEID     A            B 
---------- ------------ --
1          enmotech.com 10
2          baidu.com    11
3          killdb.com   12

used time: 6.783(ms). Execute id is 204.
SQL> 


经过一番操作之后,我们再次dump 数据文件,看看数据是否有所变化:

--再次dump 表数据

[dmdba@mogdb ~]$ dd if=/opt/dm/dmdbms/data/enmotech/roger01.dbf of=/tmp/dd2.dbf bs=8192 skip=16 count=50
50+0 records in
50+0 records out
409600 bytes (410 kB) copied, 0.00091234 s, 449 MB/s
[dmdba@mogdb ~]$ od -x /tmp/dd2.dbf  
0000000 0007 0000 0010 0000 ffff ffff ffff ffff
0000020 ffff ffff 0014 0000 0000 0000 04b8 0530
0000040 0000 0000 0002 0062 0000 0000 0000 ffff
0000060 0052 005a ffff 006e 0001 0507 0200 ffff
0000100 ffff ffff ffff ffff 0007 0000 0008 0000
0000120 0034 0000 0000 0000 0000 ffff ffff ffff
0000140 ffff 0000 0001 0000 0012 0000 0000 0000
0000160 0000 0000 0014 0000 0000 0000 0000 0000
0000200 0000 0000 0000 0000 0000 0000 0000 0000
*
0017760 0000 0000 005a 0052 0000 0000 0000 0000
0020000 0007 0000 0011 0000 ffff ffff ffff ffff
0020020 ffff ffff 1a1a 1a1a 0000 0000 04cc 0530
0020040 0000 0000 0002 0062 0000 0000 0000 ffff
0020060 0052 005a ffff 006e 0000 0000 0000 0000
0020100 0000 0000 0000 0001 0000 0003 0000 0000
0020120 0000 ffff ffff ffff 7fff ffff ffff ffff
0020140 ffff 0000 0000 0000 0000 0000 0000 0000
0020160 0000 0000 0000 0000 0000 0000 0000 0000
*
0037760 0000 0000 005a 0052 0000 0000 0000 0000
0040000 0007 0000 0012 0000 ffff ffff ffff 0000
0040020 0013 0000 0014 0000 0000 0000 04b8 0530
0040040 0000 0000 0002 0062 0000 0000 0000 ffff
0040060 0052 005a ffff 006e 0000 0507 0200 0000
0040100 0000 0000 0000 0000 0000 0000 0000 0000
0040120 0000 0013 0000 0000 0000 ffff ffff ffff
0040140 ffff 0000 0000 0000 0000 0000 0000 0000
0040160 0000 0000 0000 0000 0000 0000 0000 0000
*
0057760 0000 0000 005a 0052 0000 0000 0000 0000
0060000 0007 0000 0013 0000 0000 0012 0000 ffff
0060020 ffff ffff 0014 0000 0000 0000 04b8 0530
0060040 0000 0000 0002 0062 0000 0000 0000 ffff
0060060 0052 005a ffff 006e 0000 0507 0200 0000
0060100 0000 0000 0000 0000 0000 0000 0000 0000
0060120 0000 0000 0000 0000 0000 ffff ffff ffff
0060140 ffff 0000 0000 0000 0000 0000 0000 0000
0060160 0000 0000 0000 0000 0000 0000 0000 0000
*
0077760 0000 0000 005a 0052 0000 0000 0000 0000
0100000 0007 0000 0014 0000 ffff ffff ffff 0000
0100020 0015 0000 0014 0000 0000 0000 04b8 0530
0100040 0000 0000 0002 0062 0000 0000 0000 ffff
0100060 0052 005a ffff 006e 0000 0507 0200 0000
0100100 0000 0000 0000 0000 0000 0000 0000 0000
0100120 0000 0015 0000 0000 0000 ffff ffff ffff
0100140 ffff 0000 0000 0000 0000 0000 0000 0000
0100160 0000 0000 0000 0000 0000 0000 0000 0000
*
0117760 0000 0000 005a 0052 0000 0000 0000 0000
0120000 0007 0000 0015 0000 0000 0014 0000 ffff
0120020 ffff ffff 0014 0000 0000 0000 04d0 0530
0120040 0000 0000 0006 00da 0000 0000 0004 ffff
0120060 0052 005a ffff 00ee 0000 0507 0200 0000
0120100 0000 0000 0000 0000 0000 0000 0000 0000
0120120 0000 0000 0000 0000 0000 ffff ffff ffff
0120140 ffff 2000 8c00 6e65 6f6d 6574 6863 632e
0120160 6d6f c182 ff0b ffff 7fff ffff 4885 000d
0120200 0000 1d00 8900 6162 6469 2e75 6f63 826d
0120220 0cc1 ffff ffff ff7f 85ff 0d48 0000 0000
0120240 001e 6b8a 6c69 646c 2e62 6f63 826d 0dc1
0120260 ffff ffff ff7f 85ff 0d48 0000 0000 001d
0120300 6d89 676f 6264 632e 6d6f c182 ff43 ffff ---6d 6f 67 64 62 2e 63 6f 6d  (mogdb.com)
0120320 7fff ffff 4886 000d 0000 0000 0000 0000
0120340 0000 0000 0000 0000 0000 0000 0000 0000
*
0137740 0000 0000 0000 0000 0000 0000 005a 00bd
0137760 009f 0082 0062 0052 0000 0000 0000 0000
0140000 0000 0000 0000 0000 0000 0000 0000 0000
*
1440000
[dmdba@mogdb ~]$ 

通过测试来看,触发检查点之后,新写入的脏数据是成功落盘了。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论