日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Insert插入不同的列数量,统计信息对比

發(fā)布時(shí)間:2025/3/15 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Insert插入不同的列数量,统计信息对比 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、實(shí)驗(yàn)?zāi)康?#xff1a;

Insert插入表中相同的行數(shù)量,不同的列數(shù)量,通過10046?和autotrace工具對(duì)比查看邏輯讀、物理讀、time數(shù)據(jù),并得出相應(yīng)結(jié)論

?

二、測(cè)試

2.1測(cè)試流程:

??? =>【為盡可能滿足測(cè)試數(shù)據(jù)可靠性,提前準(zhǔn)備好操作流程】

??? =>實(shí)驗(yàn)數(shù)據(jù)及環(huán)境的準(zhǔn)備:

???????????????#目標(biāo)端環(huán)境準(zhǔn)備:授予用戶yang表空間的使用權(quán)限、

????????????????????????????????????????????? 轉(zhuǎn)儲(chǔ)目錄的創(chuàng)建及讀寫權(quán)限授予給yang用戶

????????????????????????????????????????????? 及 開啟autotrace工具的權(quán)限

?????????????? #源庫(kù)使用數(shù)據(jù)泵導(dǎo)出一張表的測(cè)試數(shù)據(jù),操作系統(tǒng)命令scp遠(yuǎn)程傳輸至目標(biāo)端,目標(biāo)端使用Impdp導(dǎo)入測(cè)試環(huán)境中,得到測(cè)試源表及數(shù)據(jù)后,創(chuàng)建一個(gè)與源表結(jié)構(gòu)相同的測(cè)試表(結(jié)構(gòu)相同,沒有數(shù)據(jù))

????????????? #查詢驗(yàn)證源表,測(cè)試表是否滿足上述條件,測(cè)試表是否有約束,有則禁用約束????

??? =>會(huì)話監(jiān)控10046 level 1事件開啟、自動(dòng)追蹤 autotrace開啟

?????????????? 會(huì)話一、使用SYS用戶登錄:對(duì)會(huì)話二進(jìn)行10046 trace level 1事件追蹤

???????????????會(huì)話二、使用yang用戶登錄:開啟set autotrace traceonly 開啟自動(dòng)追蹤工具

??? =>insert操作執(zhí)行:

????????????? yang用戶:執(zhí)行第一個(gè)insert 操作,對(duì)測(cè)試表中所有的數(shù)據(jù)進(jìn)行插入

????????????? commit提交后,truncate 截?cái)嗲蹇諟y(cè)試表

????????????? yang用戶:執(zhí)行第二個(gè)insert操作,對(duì)測(cè)試表中的三個(gè)列數(shù)據(jù)進(jìn)行插入

????????????? commit提交后

??? =>autotrace工具收集信息對(duì)比:

?????????????邏輯讀、物理讀、執(zhí)行時(shí)間統(tǒng)計(jì)對(duì)比

??? =>結(jié)束會(huì)話追蹤,生成trace文件,10046事件收集信息對(duì)比:

???????????? 邏輯讀、物理讀、執(zhí)行時(shí)間統(tǒng)計(jì)對(duì)比

????=>對(duì)比結(jié)果進(jìn)行分析,得出相應(yīng)結(jié)論

?

2.2測(cè)試操作說明:

?????2.2.1工具說明:

????????=>10046事件:可以跟蹤應(yīng)用程序執(zhí)行的SQL語(yǔ)句,根據(jù)開啟的追蹤級(jí)別不同:查詢不同級(jí)別的信息

??????? Level ?1: 可以查看包含解析、執(zhí)行、提取、提交、回滾等信息記錄

??????? Level ?4: 可以查看包含解析、執(zhí)行、提取、提交、回滾的信息 + 變量詳細(xì)信息

????????Level ?8: 可以查看包含解析、執(zhí)行、提取、提交、回滾的信息 + 等待事件

??????? Level ?12:可以查看包含解析、執(zhí)行、提取、提交、回滾的信息 + 綁定變量+等待事件

???????

?????=>autotrace 自動(dòng)追蹤工具:可以查看SQL執(zhí)行結(jié)果、執(zhí)行計(jì)劃、統(tǒng)計(jì)信息的查看????

Set autotrace on?????????? 打開工具開關(guān),顯示SQL執(zhí)行結(jié)果+執(zhí)行計(jì)劃+統(tǒng)計(jì)信息 Set autotrace traceonly?顯示執(zhí)行計(jì)劃+統(tǒng)計(jì)信息 Set autotrace traceonly explain??顯示執(zhí)行計(jì)劃 Set autotrace traceonly statistics 顯示統(tǒng)計(jì)信息 2.2.2:操作說明 =>禁用測(cè)試表約束的考量:因?yàn)闇y(cè)試中,有Insert插入少量列的數(shù)據(jù)測(cè)試,如果有not null約束,則該列必須有值,為了簡(jiǎn)化操作過程,禁用約束 =>trace文件中如何唯一標(biāo)識(shí)SQL,如果測(cè)試過程中,由于誤操作等原因產(chǎn)生多個(gè)相同的Insert語(yǔ)句,如何獲取想要的SQL統(tǒng)計(jì)信息,每個(gè)Insert語(yǔ)句,通過大小寫不同(得到不同的SQL_ID),即使相同的操作,SQL_id不同,更精確查找實(shí)驗(yàn)結(jié)果????????? 2.3實(shí)際操作: =>目標(biāo)端準(zhǔn)備: #授予表空間存儲(chǔ)無限制權(quán)限 SQL> grant resource to yang; #授予yang用戶可以開啟autotrace權(quán)限 @?/sqlplus/admin/plustrce SQL> grant plustrace to yang;#創(chuàng)建轉(zhuǎn)儲(chǔ)目錄 SQL> create directory yy as '/home/oracle'; #轉(zhuǎn)儲(chǔ)目錄讀寫授予yang用戶 SQL> grant read,write on directory yy to yang; #查詢轉(zhuǎn)儲(chǔ)目錄 SQL> select directory_name,directory_path from dba_directories;DIRECTORY_NAME DIRECTORY_PATH --------------------------------------------------------YY /home/oracle


?

? =>源端數(shù)據(jù)導(dǎo)出,操作系統(tǒng)SCP命令遠(yuǎn)程傳輸文件至目標(biāo)端

#測(cè)試數(shù)據(jù)從源庫(kù)導(dǎo)出: expdp \'/ as sysdba\' DIRECTORY=DMPDIR logfile=G_BIL_C_DAT_LTE_206_T_20180414.log
DUMPFILE=G_BIL_C_DAT_LTE_206_T_20180414.dmp tables=
'gat.G_BIL_C_DAT_LTE_206_T_20180414'
query='"where rownum<12000"'

#操作系統(tǒng)SCP遠(yuǎn)程拷貝
$ scp G_BIL_C_DAT_LTE_206_T_20180414.dmp 192.168.20.67:/home/oracle/.

#源庫(kù)查詢信息:表的用戶名稱,表所在的表空間

SQL> select owner,tablespace_name from dba_segments where segment_name='G_BIL_C_DAT_LTE_206_T_20180414';

??????? OWNER????? TABLESPACE_NAME

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

??????? GAT????????TBSFSH_DATA21

????

=>目標(biāo)端:導(dǎo)入并創(chuàng)建測(cè)試表,查詢驗(yàn)證

?

#查詢目標(biāo)端測(cè)試用戶yang的默認(rèn)永久表空間 SQL> select username,DEFAULT_TABLESPACE from dba_users where username='YANG';USERNAME DEFAULT_TABLESPACE ------------------------------ ------------------------------ YANG USERS#導(dǎo)入源表 [oracle@bj ~]$ impdp yang/yang directory=yydumpfile=G_BIL_C_DAT_LTE_206_T_20180414.dmpremap_schema=GAT:yang remap_tablespace=TBSFSH_DATA21:users#查詢?cè)幢碛卸嗌傩袛?shù)據(jù)SQL> select count(*) from G_BIL_C_DAT_LTE_206_T_20180414; COUNT(*)---------- 23998 #創(chuàng)建測(cè)試表: CREATE TABLE "YANG"."G_BIL_C_DATA_LTE_20180414"( "TICKET_ID" NUMBER(12,0) NOT NULL ENABLE,"FILE_ID" NUMBER(18,0) NOT NULL ENABLE,"BATCH_ID" NUMBER(12,0) NOT NULL ENABLE,"SWITCH_ID" NUMBER(9,0) NOT NULL ENABLE,"SERVICE_TYPE" VARCHAR2(15) NOT NULL ENABLE,"BILLING_REGION_ID" NUMBER(10,0),---此處省略107個(gè)列---) SEGMENT CREATION IMMEDIATEPCTFREE 0 PCTUSED 40 INITRANS 1 MAXTRANS 255 COMPRESS BASIC NOLOGGINGSTORAGE(INITIAL 81920 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)TABLESPACE "USERS";

#查詢測(cè)試表的約束名稱:

SQL> select 'alter table '||table_name||' disable constraint '||CONSTRAINT_NAME||';'? "Script" from user_constraints where table_name='G_BIL_C_DATA_LTE_20180414' and status='ENABLED';

Script

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

alter table G_BIL_C_DATA_LTE_20180414 disable constraint SYS_C004285;

--此處省略剩余6條語(yǔ)句

?

#執(zhí)行上述禁用約束SQL:

alter table G_BIL_C_DATA_LTE_20180414 disable constraint SYS_C004285;

--此處省略剩余6條語(yǔ)句

#再次查詢驗(yàn)證:測(cè)試表是否還有約束啟用

SQL> select 'alter table '||table_name||' disable constraint '||CONSTRAINT_NAME||';'? "Script" from user_constraints where table_name='G_BIL_C_DATA_LTE_20180414' and status='ENABLED';

no rows selected

?

?

??? =>會(huì)話監(jiān)控10046 level 1事件開啟、自動(dòng)追蹤 autotrace開啟

?

?????????????? 會(huì)話一、使用SYS用戶登錄:對(duì)會(huì)話二進(jìn)行10046 trace level 1事件追蹤

#yang用戶查詢當(dāng)前會(huì)話的操作系統(tǒng)進(jìn)程號(hào) SQL> select spid from v$process a,v$session b where a.addr=b.paddr and
b.sid=(select sid from v$mystat where rownum=1); SPID ------------------------ 29062

#SYS用戶進(jìn)行監(jiān)控
SQL> show user
USER is "SYS"
SQL> oradebug setospid 29062;
Oracle pid: 34, Unix process pid: 29062, image: oracle@bj (TNS V1-V3)
SQL> oradebug event 10046 trace name context forever,level 1;
Statement processed.

?

???????????????會(huì)話二、使用yang用戶登錄:開啟set autotrace traceonly 開啟自動(dòng)追蹤工具

#yang用戶開啟自動(dòng)追蹤開關(guān) SQL> set autotrace traceonly;

?

??? =>insert操作執(zhí)行:

?

????????????? yang用戶:執(zhí)行第一個(gè)insert 操作,對(duì)測(cè)試表中所有的數(shù)據(jù)進(jìn)行插入

?

????????????? commit提交后,truncate 截?cái)嗲蹇諟y(cè)試表

insert /*+ parallel(t,4) */ into yang.G_BIL_C_DATA_LTE_20180414 t (TICKET_ID,FILE_ID,BATCH_ID,SWITCH_ID,SELF_CELL_ID,SELF_MSC_ID###此處省略剩余表的所有列名稱###,RATABLE_RESOURCE_LIST,FLUX_CARD_LIST) select trim(TICKET_ID),trim(FILE_ID ),trim(BATCH_ID ),trim(SWITCH_ID ),trim(SELF_CELL_ID ),trim(SELF_MSC_ID )###此處省略剩余表的所有列名稱###,trim(FLUX_CARD_LIST) from yang.G_BIL_C_DAT_LTE_206_T_20180414 t;

?

?AUTOTRACE工具信息記錄:

Execution Plan ----------------------------------------------------------

| Id? | Operation??????????????? | Name?????????????????????? | Rows? | Byte s | Cost (%CPU)| Time??? | Pstart| Pstop |

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

Plan hash value: 2515889339| 0 | INSERT STATEMENT | | 24031 | 200M| 262 (2)| 00:00:04 | |
| 1 | LOAD TABLE CONVENTIONAL | G_BIL_C_DATA_LTE_20180414 | | | | | | |
| 2 | PARTITION LIST ALL | | 24031| 200M| 262 (2)| 00:00:04 | 1 | 2| 3 | TABLE ACCESS FULL | G_BIL_C_DAT_LTE_206_T_20180414 |24031 | 200M| 262 (2)| 00:00:04 | 1 | 2 |-------------------------------------------------------------------------------- Note ------ dynamic sampling used for this statement (level=2)Statistics ----------------------------------------------------------849 recursive calls30555 db block gets2057 consistent gets1 physical reads24014124 redo size838 bytes sent via SQL*Net to client8776 bytes received via SQL*Net from client3 SQL*Net roundtrips to/from client43 sorts (memory)0 sorts (disk)23998 rows processed


第一次操作:結(jié)束

SQL> commit;Commit complete.SQL> truncate table G_BIL_C_DATA_LTE_20180414;


?

????????????? yang用戶:執(zhí)行第二個(gè)insert操作,對(duì)測(cè)試表中的三個(gè)列數(shù)據(jù)進(jìn)行插入

?

????????????? commit提交后

insert /*+ parallel(t,4) */ into yang.G_BIL_C_DATA_LTE_20180414 t (TICKET_ID, BSID, IPV6_PDSN_ADDRESS, RATABLE_RESOURCE_LIST) select trim(TICKET_ID), trim(BSID ), trim(IPV6_PDSN_ADDRESS ), trim(RATABLE_RESOURCE_LIST) from yang.G_BIL_C_DAT_LTE_206_T_20180414 t;

?AUTOTRACE工具信息記錄:

Execution Plan ---------------------------------------------------------- Plan hash value: 2515889339--------------------------------------------------------------------------------| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | Pstart| Pstop |---------------------------------------------------------------------------------------------------------------------------| 0 | INSERT STATEMENT | | 24031 | 50M| 261 (1)| 00:00:04 | | || 1 | LOAD TABLE CONVENTIONAL | G_BIL_C_DATA_LTE_20180414 | | | | | | || 2 | PARTITION LIST ALL | | 24031 | 50M| 261 (1)| 00:00:04 | 1 | 2 || 3 | TABLE ACCESS FULL | G_BIL_C_DAT_LTE_206_T_20180414 | 24031 | 50M| 261 (1)| 00:00:04 | 1 | 2 |---------------------------------------------------------------------------------------------------------------------------Note ------ dynamic sampling used for this statement (level=2)Statistics ----------------------------------------------------------24 recursive calls25795 db block gets1081 consistent gets0 physical reads10095484 redo size841 bytes sent via SQL*Net to client1045 bytes received via SQL*Net from client3 SQL*Net roundtrips to/from client1 sorts (memory)0 sorts (disk)23998 rows processed

?

?

?

??? =>autotrace工具收集信息對(duì)比:

?

?????????????邏輯讀、物理讀、執(zhí)行時(shí)間統(tǒng)計(jì)對(duì)比

?

Autotrace

邏輯讀

consistent gets

物理讀

physical reads

TIME

時(shí)--

Insert插入表的所有列(全表總計(jì)94個(gè)列)

2057

?1 ?

00:00:04

Insert插入表的四個(gè)列

1081

?0

00:00:04

?

?

??? =>結(jié)束會(huì)話追蹤,生成trace文件,10046事件收集信息對(duì)比:

?????

SQL> oradebug event 10046 trace name context off; Statement processed. SQL> show parameter user_dump_destNAME TYPE VALUE ------------------------------------ ----------- ------------------------------ user_dump_dest string /picclife/app/oracle/diag/rdbms/aa/dingding/trace
[oracle@bj admin]$ cd /picclife/app/oracle/diag/rdbms/aa/dingding/trace
[oracle@bj trace]$ ls *29062.trc
dingding_ora_29062.trc

[oracle@bj trace]$ tkprof dingding_ora_29062.trc /home/oracle/select.trc sys=no


#trace文件中第一次Insert,全表所有列的插入操作:

insert /*+ parallel(t,4) */ into yang.G_BIL_C_DATA_LTE_20180414 t (TICKET_ID ,FILE_ID,BATCH_ID
?????****此處省略90個(gè)列名稱??? ,FLUX_CARD_LIST) select trim(TICKET_ID)
??????????????????? ,trim(FILE_ID??????????? ),SELF_CELL_ID****此處省略90個(gè)列名稱,trim(FLUX_CARD_LIST) from yang.G_BIL_C_DAT_LTE_206_T_20180414 tcall count cpu elapsed disk query current rows ------- ------ -------- ---------- ---------- ---------- ---------- ---------- Parse 1 0.02 0.02 0 3 0 0 Execute 1 8.64 15.29 1 1062 30554 23998 Fetch 0 0.00 0.00 0 0 0 0 ------- ------ -------- ---------- ---------- ---------- ---------- ---------- total 2 8.66 15.32 1 1065 30554 23998
#parse解析
#execute執(zhí)行
#fetch獲取
#elapsed 執(zhí)行時(shí)間
#query 邏輯讀
#disk 物理讀
#current 當(dāng)前讀
#rows 處理行數(shù)

#解析期間:庫(kù)緩存中未命中:硬解析1次 Misses in library cache during parse: 1 Optimizer mode: ALL_ROWS Parsing user id: 54 Number of plan statistics captured: 1Rows (1st) Rows (avg) Rows (max) Row Source Operation ---------- ---------- ---------- ---------------------------------------------------0 0 0 LOAD TABLE CONVENTIONAL (cr=1179 pr=1 pw=0 time=15305076 us)23998 23998 23998 PARTITION LIST ALL PARTITION: 1 2 (cr=957 pr=0 pw=0 time= 74766 us cost=262 size=209742568 card=24031)23998 23998 23998 TABLE ACCESS FULL G_BIL_C_DAT_LTE_206_T_20180414 PARTITI ON: 1 2 (cr=957 pr=0 pw=0 time=67557 us cost=262 size=209742568 card=24031)

?

?

#trace文件中第二次Insert,四個(gè)列的插入操作:

insert /*+ parallel(t,4) */ into yang.G_BIL_C_DATA_LTE_20180414 t (TICKET_ID, BSID, IPV6_PDSN_ADDRESS, RATABLE_RESOURCE_LIST) select trim(TICKET_ID), trim(BSID ), trim(IPV6_PDSN_ADDRESS ), trim(RATABLE_RESOURCE_LIST) from yang.G_BIL_C_DAT_LTE_206_T_20180414 tcall count cpu elapsed disk query current rows ------- ------ -------- ---------- ---------- ---------- ---------- ---------- Parse 1 0.00 0.00 0 2 0 0 Execute 1 0.28 0.31 0 1000 25794 23998 Fetch 0 0.00 0.00 0 0 0 0 ------- ------ -------- ---------- ---------- ---------- ---------- ---------- total 2 0.28 0.31 0 1002 25794 23998
#解析期間:庫(kù)緩存中未命中:硬解析1次 Misses in library cache during parse: 1 Optimizer mode: ALL_ROWS Parsing user id: 54 Number of plan statistics captured: 1Rows (1st) Rows (avg) Rows (max) Row Source Operation ---------- ---------- ---------- ---------------------------------------------------0 0 0 LOAD TABLE CONVENTIONAL (cr=1006 pr=0 pw=0 time=315302 us )23998 23998 23998 PARTITION LIST ALL PARTITION: 1 2 (cr=957 pr=0 pw=0 time= 52444 us cost=261 size=53060448 card=24031)23998 23998 23998 TABLE ACCESS FULL G_BIL_C_DAT_LTE_206_T_20180414 PARTITI ON: 1 2 (cr=957 pr=0 pw=0 time=47368 us cost=261 size=53060448 card=24031)

?

???????????? 邏輯讀、物理讀、執(zhí)行時(shí)間統(tǒng)計(jì)對(duì)比

?

10046

工具level1

邏輯讀

query

物理讀

?disk

TIME

Elapsed(單位微秒)

1s=1000000微秒

Insert插入表的所有列(全表總計(jì)94個(gè)列)

1065

1

15.32

Insert插入表的四個(gè)列

1002

0

0.31

?

?

Autotrace

邏輯讀

consistent gets

物理讀

physical reads

TIME

時(shí)--

Insert插入表的所有列(全表總計(jì)94個(gè)列)

2057

?1 ?

00:00:04

Insert插入表的四個(gè)列

1081

?0

00:00:04

?

????=>對(duì)比結(jié)果進(jìn)行分析,得出相應(yīng)結(jié)論

???? 結(jié)論一、以上兩個(gè)工具查詢的統(tǒng)計(jì)信息對(duì)比:

?????????????? Insert操作,插入的列數(shù)量越多,消耗的邏輯讀就越多,代價(jià)也越大

???? 結(jié)論二、autotrace工具顯示的時(shí)間不準(zhǔn)確,從邏輯讀降低一半,但是執(zhí)行時(shí)間根本沒有減少

????

?? =>工具使用對(duì)比:autotrace?|| 10046?

?????使用autotrace操作更加簡(jiǎn)便,但是只能當(dāng)前用戶執(zhí)行,當(dāng)前用戶下查看

??? 使用10046,操作復(fù)雜一點(diǎn),但是可以查看監(jiān)控其它用戶下執(zhí)行的sql,且執(zhí)行時(shí)間維度更加精確,收集的統(tǒng)計(jì)信息更多。

?

轉(zhuǎn)載于:https://www.cnblogs.com/lvcha001/p/8907247.html

總結(jié)

以上是生活随笔為你收集整理的Insert插入不同的列数量,统计信息对比的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。