CREATE TABLE TEST_A AS SELECT * FROM TEST_B

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 查看数据库模式:   SQL> connect /as sysdba Connected. SQL> select name,log_mode from v$database;   N...

查看数据库模式:

 

SQL> connect /as sysdba

Connected.

SQL> select name,log_mode from v$database;

 

NAME               LOG_MODE

------------------ ------------------------

ORCL10G            NOARCHIVELOG

可知:非归档模式

 

确认表的大小

SQL> connect sjzyk/sjzyk

Connected.

SQL> select t.segment_name,t.BYTES/1024/1024||'mb' from user_segments t ;

 

SEGMENT_NAME

--------------------------------------------------------------------------------

T.BYTES/1024/1024||'MB'

--------------------------------------------------------------------------------

SJ_TEST1

256mb

 

SQL> set autotrace traceonly statistics;

SQL> insert into sj_test2 as select * from sj_test1;

insert into sj_test2 as select * from sj_test1

                     *

ERROR at line 1:

ORA-00926: missing VALUES keyword

 

 

SQL> insert into sj_test2 select * from sj_test1;

 

1000000 rows created.

 

 

Statistics

----------------------------------------------------------

       5291  recursive calls

     283525  db block gets

     119170  consistent gets

      32033  physical reads

  262035336  redo size

        665  bytes sent via SQL*Net to client

        579  bytes received via SQL*Net from client

          4  SQL*Net roundtrips to/from client

          7  sorts (memory)

          0  sorts (disk)

    1000000  rows processed

 

从上面记录中,insert普通语句产生redo大小约为260M左右

 

SQL> set autotrace traceonly statistics;

SQL> insert /*+ APPEND */ into sj_test2 select * from sj_test1;

 

1000000 rows created.

 

 

Statistics

----------------------------------------------------------

       5093  recursive calls

      36678  db block gets

      34225  consistent gets

      31611  physical reads

     371512  redo size

        663  bytes sent via SQL*Net to client

        593  bytes received via SQL*Net from client

          4  SQL*Net roundtrips to/from client

          2  sorts (memory)

          0  sorts (disk)

    1000000  rows processed

 

SQL> commit;

 

添加/*+ APPEND */直插后redo产生日志大约为300kb

SQL> set autotrace traceonly statistics;                                 

SQL> insert /*+ APPEND */ into sj_test2 nologging select * from sj_test1;

 

1000000 rows created.

 

 

Statistics

----------------------------------------------------------

       5222  recursive calls

      36678  db block gets

      34238  consistent gets

      20265  physical reads

     372068  redo size

        663  bytes sent via SQL*Net to client

        606  bytes received via SQL*Net from client

          4  SQL*Net roundtrips to/from client

          6  sorts (memory)

          0  sorts (disk)

    1000000  rows processed

 

采用/*+ APPEND */nologging的日志与直插区别不是很大,

SQL> set autotrace traceonly statistics; 

SQL> insert  into sj_test2 nologging select * from sj_test1;

 

1000000 rows created.

 

 

Statistics

----------------------------------------------------------

       5098  recursive calls

     283651  db block gets

      85806  consistent gets

      20922  physical reads

  260028080  redo size

        680  bytes sent via SQL*Net to client

        590  bytes received via SQL*Net from client

          4  SQL*Net roundtrips to/from client

          2  sorts (memory)

          0  sorts (disk)

    1000000  rows processed

采用nologging模式下redo日志差不多也是260m,至少在非归档模式下,nologging的左右不是很大

 

在SYS用户下创建视图和公共映射

create or replace view redo_size as

  select value

   from v$mystat, v$statname

    where v$mystat.statistic# = v$statname.statistic#

  and v$statname.name = 'redo size';

CREATE PUBLIC synonym REDO_SIZE FOR REDO_SIZE;

 

SQL> select * from redo_size;

 

     VALUE

----------

   3154424

 

SQL> create table sj_test2 as select * from sj_test1;

 

Table created.

 

SQL> select * from redo_size;

 

     VALUE

----------

   3568676

对比CREATE TABLE 创建前后值减去之前的redo500kb左右

 

 

初步测试:create table 语句对于抽取历史数据(大批量数据)产生的redo日志较少,插入数据较快。网上百度说是CREATE TABLE 为数据定义语言,产生少量的redo,undo

应用资料:http://www.2cto.com/database/201303/193306.html

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
2月前
|
SQL 数据库 索引
SQL CREATE INDEX
【11月更文挑战第16天】
82 3
|
5月前
|
存储 关系型数据库 数据管理
在 Postgres 中使用 Create Table
【8月更文挑战第11天】
564 0
在 Postgres 中使用 Create Table
|
5月前
|
存储 关系型数据库 数据库
在 Postgres 中使用 Insert Into Select
【8月更文挑战第11天】
169 0
在 Postgres 中使用 Insert Into Select
|
SQL 数据库
INSERT DESC UPDATE SELECT
INSERT DESC UPDATE SELECT
111 0
|
8月前
|
存储 SQL 关系型数据库
CREATE TABLE语句
在MySQL中,使用CREATE TABLE语句来创建表。你需要指定表名和列的定义,包括列名、数据类型以及约束等,结合实际存储和上一课学习的数据类型选取合适的。创建一个book_types表
235 0
|
数据库 OceanBase
使用 `INSERT INTO table_name SELECT * FROM table_name` 这种方式
使用 `INSERT INTO table_name SELECT * FROM table_name` 这种方式
86 1
|
数据库 OceanBase
INSERT INTO table_name SELECT * FROM table_name
INSERT INTO table_name SELECT * FROM table_name
87 1
|
SQL 数据库
CREATE TABLE 语句
CREATE TABLE 语句
135 1
|
SQL 数据库
CREATE TABLE
CREATE TABLE
165 0
|
SQL Go
sql server 带有OUTPUT的INSERT,DELETE,UPDATE
原文:sql server 带有OUTPUT的INSERT,DELETE,UPDATE OUTPUT是SQL SERVER2005的新特性.
1236 0

热门文章

最新文章