redo文件大小与insert速度
来源:互联网 发布:赵薇事件 知乎 编辑:程序博客网 时间:2024/05/18 02:23
SQL> set serverout ON;
DROSQL> SQL> P TABLE TEST PURGE;
CREATE TABLE TEST AS SELECT * FROM scott.test WHERE 1=2;
DECLARE
V_VALUE1 V$SYSSTAT.VALUE%TYPE;
V_VALUE2 V$SYSSTAT.VALUE%TYPE;
V_M NUMBER;
BEGIN
SELECT VALUE INTO V_VALUE1 FROM V$SYSSTAT WHERE NAME = 'redo size';
INSERT INTO TEST SELECT TEST.* FROM SCOTT.TEST, T10;
COMMIT;
SELECT VALUE INTO V_VALUE2 FROM V$SYSSTAT WHERE NAME = 'redo size';
V_M := ROUND((V_VALUE2 - V_VALUE1) / 1024 / 1024, 2);
DBMS_OUTPUT.PUT(V_M);
DBMS_OUTPUT.PUT_LINE('M');
END;
表已删除。
SQL>
表已创建。
SQL> 2 3 4 5 6 7 8 9 10 11 12 13 14 /
81.36M
PL/SQL 过程已成功完成。
SQL>
DROPSQL> TABLE TEST PURGE;
CREATE TABLE TEST AS SELECT * FROM scott.test WHERE 1=2;
ALTER TABLE TEST NOLOGGING;
DECLARE
V_VALUE1 V$SYSSTAT.VALUE%TYPE;
V_VALUE2 V$SYSSTAT.VALUE%TYPE;
V_M NUMBER;
BEGIN
SELECT VALUE INTO V_VALUE1 FROM V$SYSSTAT WHERE NAME = 'redo size';
INSERT INTO TEST SELECT TEST.* FROM SCOTT.TEST, T10;
COMMIT;
SELECT VALUE INTO V_VALUE2 FROM V$SYSSTAT WHERE NAME = 'redo size';
V_M := ROUND((V_VALUE2 - V_VALUE1) / 1024 / 1024, 2);
DBMS_OUTPUT.PUT(V_M);
DBMS_OUTPUT.PUT_LINE('M');
END;
/
表已删除。
SQL>
表已创建。
SQL>
表已更改。
SQL> 2 3 4 5 6 7 8 9 10 11 12 13 14 80.53M
结论1,归档模式下NOLOGGING效果不大
PL/SQL 过程已成功完成。
SQL> set serverout ON
SET timing ON
DROP TABLE TEST PURGE;
CREATE TABLE TEST AS SELECT * FROM scott.test WHERE 1=2;
ALTER TABLE TEST NOLOGGING;
DECLARE
V_VALUE1 V$SYSSTAT.VALUE%TYPE;
V_VALUE2 V$SYSSTAT.VALUE%TYPE;
SQL> V_M SQL> NUMBER;
SQL> BEGIN
SQL> SELECT VALUE INTO V_VALUE1 FROM V$SYSSTAT WHERE NAME = 'redo size';
INSERT INTO TEST SELECT TEST.* FROM SCOTT.TEST, T100 WHERE t100.id <=30;
COMMIT;
SELECT VALUE INTO V_VALUE2 FROM V$SYSSTAT WHERE NAME = 'redo size';
V_M := ROUND((V_VALUE2 - V_VALUE1) / 1024 / 1024, 2);
DBMS_OUTPUT.PUT(V_M);
DBMS_OUTPUT.PUT_LINE('M');
END;
/
表已删除。
已用时间: 00: 00: 08.26
SQL>
表已创建。
已用时间: 00: 00: 00.03
SQL>
表已更改。
已用时间: 00: 00: 00.03
244.2M
PL/SQL 过程已成功完成。
已用时间: 00: 00: 41.50
SQL> select bytes/1024/1024 from v$log;
BYTES/1024/1024
---------------
50
50
50
系统已更改。
已用时间: 00: 00: 00.11
SQL> select group#,status,bytes/1024/1024 M from v$log;
GROUP# STATUS M
---------- ---------------- ----------
1 INACTIVE 50
2 INACTIVE 50
3 CURRENT 50
已用时间: 00: 00: 00.03
SQL> ALTER DATABASE DROP LOGFILE GROUP 1;
数据库已更改。
已用时间: 00: 00: 00.06
SQL> ALTER DATABASE DROP LOGFILE GROUP 2;
ALTER DATABASE DROP LOGFILE GROUP 2
*
第 1 行出现错误:
ORA-01567: 删除日志 2 时将为实例 orcl (线程 1) 保留两个以下的日志文件
ORA-00312: 联机日志 2 线程 1: 'J:\ORCL\REDO02.LOG'
已用时间: 00: 00: 00.14
SQL> alter database add logfile group 1 'J:\ORCL\REDO01.LOG' size 500m;
数据库已更改。
已用时间: 00: 00: 10.60
SQL> ALTER DATABASE DROP LOGFILE GROUP 2;
数据库已更改。
已用时间: 00: 00: 00.04
SQL> alter database add logfile group 2 'J:\ORCL\REDO02.LOG' size 500m;
数据库已更改。
已用时间: 00: 00: 10.84
SQL> ALTER SYSTEM SWITCH LOGFILE
2 /
系统已更改。
已用时间: 00: 00: 00.09
SQL> alter system checkpoint;
系统已更改。
已用时间: 00: 00: 00.17
SQL> select group#,status,bytes/1024/1024 M from v$log;
GROUP# STATUS M
---------- ---------------- ----------
1 CURRENT 500
2 UNUSED 500
3 INACTIVE 50
已用时间: 00: 00: 00.03
SQL> ALTER DATABASE DROP LOGFILE GROUP 3;
数据库已更改。
已用时间: 00: 00: 00.07
SQL> alter database add logfile group 3 'J:\ORCL\REDO03.LOG' size 500m;
数据库已更改。
已用时间: 00: 00: 10.85
SQL> select group#,status,bytes/1024/1024 M from v$log;
GROUP# STATUS M
---------- ---------------- ----------
1 CURRENT 500
2 UNUSED 500
3 UNUSED 500
已用时间: 00: 00: 00.03
SQL>
DROP TABLE TSQL> EST PURGE;
CREATE TABLE TEST AS SELECT * FROM scott.test WHERE 1=2;
ALTER TABLE TEST NOLOGGING;
DECLARE
V_VALUE1 V$SYSSTAT.VALUE%TYPE;
V_VALUE2 V$SYSSTAT.VALUE%TYPE;
V_M NUMBER;
BEGIN
SELECT VALUE INTO V_VALUE1 FROM V$SYSSTAT WHERE NAME = 'redo size';
INSERT INTO TEST SELECT TEST.* FROM SCOTT.TEST, T100 WHERE t100.id <=30;
COMMIT;
SELECT VALUE INTO V_VALUE2 FROM V$SYSSTAT WHERE NAME = 'redo size';
V_M := ROUND((V_VALUE2 - V_VALUE1) / 1024 / 1024, 2);
DBMS_OUTPUT.PUT(V_M);
DBMS_OUTPUT.PUT_LINE('M');
END;
/
表已删除。
已用时间: 00: 00: 05.09
SQL>
表已创建。
已用时间: 00: 00: 00.01
SQL>
表已更改。
已用时间: 00: 00: 00.03
SQL> 2 3 4 5 6 7 8 9 10 11 12 13 14 240.54M
PL/SQL 过程已成功完成。
已用时间: 00: 00: 06.54
DROSQL> SQL> P TABLE TEST PURGE;
CREATE TABLE TEST AS SELECT * FROM scott.test WHERE 1=2;
DECLARE
V_VALUE1 V$SYSSTAT.VALUE%TYPE;
V_VALUE2 V$SYSSTAT.VALUE%TYPE;
V_M NUMBER;
BEGIN
SELECT VALUE INTO V_VALUE1 FROM V$SYSSTAT WHERE NAME = 'redo size';
INSERT INTO TEST SELECT TEST.* FROM SCOTT.TEST, T10;
COMMIT;
SELECT VALUE INTO V_VALUE2 FROM V$SYSSTAT WHERE NAME = 'redo size';
V_M := ROUND((V_VALUE2 - V_VALUE1) / 1024 / 1024, 2);
DBMS_OUTPUT.PUT(V_M);
DBMS_OUTPUT.PUT_LINE('M');
END;
表已删除。
SQL>
表已创建。
SQL> 2 3 4 5 6 7 8 9 10 11 12 13 14 /
81.36M
PL/SQL 过程已成功完成。
SQL>
DROPSQL> TABLE TEST PURGE;
CREATE TABLE TEST AS SELECT * FROM scott.test WHERE 1=2;
ALTER TABLE TEST NOLOGGING;
DECLARE
V_VALUE1 V$SYSSTAT.VALUE%TYPE;
V_VALUE2 V$SYSSTAT.VALUE%TYPE;
V_M NUMBER;
BEGIN
SELECT VALUE INTO V_VALUE1 FROM V$SYSSTAT WHERE NAME = 'redo size';
INSERT INTO TEST SELECT TEST.* FROM SCOTT.TEST, T10;
COMMIT;
SELECT VALUE INTO V_VALUE2 FROM V$SYSSTAT WHERE NAME = 'redo size';
V_M := ROUND((V_VALUE2 - V_VALUE1) / 1024 / 1024, 2);
DBMS_OUTPUT.PUT(V_M);
DBMS_OUTPUT.PUT_LINE('M');
END;
/
表已删除。
SQL>
表已创建。
SQL>
表已更改。
SQL> 2 3 4 5 6 7 8 9 10 11 12 13 14 80.53M
结论1,归档模式下NOLOGGING效果不大
PL/SQL 过程已成功完成。
SQL> set serverout ON
SET timing ON
DROP TABLE TEST PURGE;
CREATE TABLE TEST AS SELECT * FROM scott.test WHERE 1=2;
ALTER TABLE TEST NOLOGGING;
DECLARE
V_VALUE1 V$SYSSTAT.VALUE%TYPE;
V_VALUE2 V$SYSSTAT.VALUE%TYPE;
SQL> V_M SQL> NUMBER;
SQL> BEGIN
SQL> SELECT VALUE INTO V_VALUE1 FROM V$SYSSTAT WHERE NAME = 'redo size';
INSERT INTO TEST SELECT TEST.* FROM SCOTT.TEST, T100 WHERE t100.id <=30;
COMMIT;
SELECT VALUE INTO V_VALUE2 FROM V$SYSSTAT WHERE NAME = 'redo size';
V_M := ROUND((V_VALUE2 - V_VALUE1) / 1024 / 1024, 2);
DBMS_OUTPUT.PUT(V_M);
DBMS_OUTPUT.PUT_LINE('M');
END;
/
表已删除。
已用时间: 00: 00: 08.26
SQL>
表已创建。
已用时间: 00: 00: 00.03
SQL>
表已更改。
已用时间: 00: 00: 00.03
244.2M
PL/SQL 过程已成功完成。
已用时间: 00: 00: 41.50
SQL> select bytes/1024/1024 from v$log;
BYTES/1024/1024
---------------
50
50
50
已用时间: 00: 00: 00.01
此时查看alert_orcl.log会发现
Thread 1 cannot allocate new log, sequence 27
Checkpoint not complete
我们来改变redolog文件的大小
SQL> alter system checkpoint;系统已更改。
已用时间: 00: 00: 00.11
SQL> select group#,status,bytes/1024/1024 M from v$log;
GROUP# STATUS M
---------- ---------------- ----------
1 INACTIVE 50
2 INACTIVE 50
3 CURRENT 50
已用时间: 00: 00: 00.03
SQL> ALTER DATABASE DROP LOGFILE GROUP 1;
数据库已更改。
已用时间: 00: 00: 00.06
SQL> ALTER DATABASE DROP LOGFILE GROUP 2;
ALTER DATABASE DROP LOGFILE GROUP 2
*
第 1 行出现错误:
ORA-01567: 删除日志 2 时将为实例 orcl (线程 1) 保留两个以下的日志文件
ORA-00312: 联机日志 2 线程 1: 'J:\ORCL\REDO02.LOG'
已用时间: 00: 00: 00.14
SQL> alter database add logfile group 1 'J:\ORCL\REDO01.LOG' size 500m;
数据库已更改。
已用时间: 00: 00: 10.60
SQL> ALTER DATABASE DROP LOGFILE GROUP 2;
数据库已更改。
已用时间: 00: 00: 00.04
SQL> alter database add logfile group 2 'J:\ORCL\REDO02.LOG' size 500m;
数据库已更改。
已用时间: 00: 00: 10.84
SQL> ALTER SYSTEM SWITCH LOGFILE
2 /
系统已更改。
已用时间: 00: 00: 00.09
SQL> alter system checkpoint;
系统已更改。
已用时间: 00: 00: 00.17
SQL> select group#,status,bytes/1024/1024 M from v$log;
GROUP# STATUS M
---------- ---------------- ----------
1 CURRENT 500
2 UNUSED 500
3 INACTIVE 50
已用时间: 00: 00: 00.03
SQL> ALTER DATABASE DROP LOGFILE GROUP 3;
数据库已更改。
已用时间: 00: 00: 00.07
SQL> alter database add logfile group 3 'J:\ORCL\REDO03.LOG' size 500m;
数据库已更改。
已用时间: 00: 00: 10.85
SQL> select group#,status,bytes/1024/1024 M from v$log;
GROUP# STATUS M
---------- ---------------- ----------
1 CURRENT 500
2 UNUSED 500
3 UNUSED 500
已用时间: 00: 00: 00.03
SQL>
DROP TABLE TSQL> EST PURGE;
CREATE TABLE TEST AS SELECT * FROM scott.test WHERE 1=2;
ALTER TABLE TEST NOLOGGING;
DECLARE
V_VALUE1 V$SYSSTAT.VALUE%TYPE;
V_VALUE2 V$SYSSTAT.VALUE%TYPE;
V_M NUMBER;
BEGIN
SELECT VALUE INTO V_VALUE1 FROM V$SYSSTAT WHERE NAME = 'redo size';
INSERT INTO TEST SELECT TEST.* FROM SCOTT.TEST, T100 WHERE t100.id <=30;
COMMIT;
SELECT VALUE INTO V_VALUE2 FROM V$SYSSTAT WHERE NAME = 'redo size';
V_M := ROUND((V_VALUE2 - V_VALUE1) / 1024 / 1024, 2);
DBMS_OUTPUT.PUT(V_M);
DBMS_OUTPUT.PUT_LINE('M');
END;
/
表已删除。
已用时间: 00: 00: 05.09
SQL>
表已创建。
已用时间: 00: 00: 00.01
SQL>
表已更改。
已用时间: 00: 00: 00.03
SQL> 2 3 4 5 6 7 8 9 10 11 12 13 14 240.54M
PL/SQL 过程已成功完成。
已用时间: 00: 00: 06.54
时间由 00: 00: 41.50 变为 00: 00: 06.54
实验完毕
- redo文件大小与insert速度
- redo文件大小与insert速度
- archive log文件大小与redo log文件大小关系探究
- INSERT语句的速度
- INSERT语句的速度
- 控制redo日志的归档速度
- oracle rac下调节redo log file 文件大小
- 关于Redo与Undo
- redo与undo
- redo与undo
- redo与undo
- do 与 redo
- redo与undo
- Oracle_undo与redo
- Undo与Redo
- MySQL redo与undo
- redo与append关系
- mysql binlog与redo
- ALV的html表头
- hibernate各种条件查询汇总(对象、单字段、多字段等)
- 嵌入式系统程式设计重要抉择
- Markdown入门指北
- java.lang.VerifyError: Inconsistent stackmap frames at branch target
- redo文件大小与insert速度
- iOS开发之AVAudioPlayer 音频播放
- JS调用Webservice
- asp.net利用多线程执行长时间的任务,客户端显示出任务的执行进度
- MB_CHANGE_DOCUMENT使用方法
- STL之unique,思則得之,不思則不得--淺談移除重複元素
- 训练 第二季~
- oracle中 connect by prior 递归算法
- 基于Winodws CE的嵌入式网络监控系统的设计与实现