delete的統計資料檢視和比較
2、測試資料,在進行刪除delete的時候有索引和沒有索引的物件的統計資訊,會話的統計資訊,會話的等待事件
delete test_a
刪除耗費491秒
select c.sid,b.NAME,a.VALUE from v$sesstat a ,v$statname b ,(select SID from v$mystat where rownum<=1) c
where a.SID=c.sid and a.STATISTIC#=b.STATISTIC# and (b.NAME like 'physical%' or b.name like '%read%' or B.NAME like '%undo%' or b.name like '%redo%') and a.VALUE<>0 ;
SID NAME VALUE
---------- ---------------------------------------------------------------- ----------
318 session logical reads 4202712 ---實際行數400W
318 physical read total IO requests 1142
318 physical read total multi block requests 1117
318 physical read total bytes 145031168
318 physical reads 17704 --表塊的數量
318 physical reads cache 17704
318 physical read IO requests 1142
318 physical read bytes 145031168 ---delete這裡會物理讀取實際的大小140M,而後面的等待事件說明在這裡小號了43秒
318 redo synch writes 1
318 physical reads cache prefetch 16562
318 redo entries 4017828
318 redo size 1141494072 --任然的REDO生成了1G,和INSERT差不多
318 redo buffer allocation retries 49
318 redo log space requests 49
318 redo log space wait time 296
318 redo ordering marks 73945
318 redo subscn max counts 74118
318 undo change vector size 589435236 --undo生成了580M,比INSERT更多
318 no work - consistent read gets 17906
318 IMU undo allocation size 63992
select *
from v$session_event a
where a.SID = 318
order by TIME_WAITED desc;
SID EVENT TIME_WAITED_MICRO
---------- ---------------------------------------------------
318 SQL*Net message from client 206690838
318 db file scattered read 43843361 --43秒
318 log file switch completion 2952901
318 db file sequential read 188312
318 log buffer space 28325
318 SQL*Net message to client 89
SQL> select * from v$sess_time_model where sid=318 order by value desc;
SID STAT_ID STAT_NAME VALUE
---------- ---------- ---------------------------------------------------------------- ----------
318 3649082374 DB time 491842941
318 2821698184 sql execute elapsed time 491750449
318 2748282437 DB CPU 436421084 --等待比INSERT相比增加了
318 1431595225 parse time elapsed 405367
318 372226525 hard parse elapsed time 396096
318 1990024365 connection management call elapsed time 28152
318 1311180441 PL/SQL compilation elapsed time 3400
318 2643905994 PL/SQL execution elapsed time 646
318 1159091985 repeated bind elapsed time 319
會話315
delete test_b;
耗時1100多秒
SQL> select c.sid,b.NAME,a.VALUE from v$sesstat a ,v$statname b ,(select SID from v$mystat where rownum<=1) c
2 where a.SID=c.sid and a.STATISTIC#=b.STATISTIC# and (b.NAME like 'physical%' or b.name like '%read%' or B.NAME like '%undo%' or b.name like '%redo%') and a.VALUE<>0 ;
SID NAME VALUE
---------- ---------------------------------------------------------------- ----------
315 session logical reads 16309976 --邏輯讀是實際行數的4倍,包含表本生的讀取,還有索引讀取
315 physical read total IO requests 9501
315 physical read total multi block requests 1101
315 physical read total bytes 211697664
315 physical reads 25842 --物理塊 索引+表
315 physical reads cache 25842
315 physical read IO requests 9501
315 physical read bytes 211697664 --- 這裡基本是表144M+72m索引的大小
315 redo synch writes 1
315 physical reads cache prefetch 16341
315 redo entries 8036150
315 redo size 1959456476 ---2G
315 redo buffer allocation retries 85
315 redo log space requests 87
315 redo log space wait time 595
315 redo ordering marks 116447
315 redo subscn max counts 125117
315 undo change vector size 922274632 --900M
315 no work - consistent read gets 18761
SQL> select *
2 from v$session_event a
3 where a.SID = 315
4 order by TIME_WAITED desc;
SID EVENT TIME_WAITED_MICRO
---------- ------------------------------------------------ ---------------------------------------------
315 SQL*Net message from client 317688133
315 db file sequential read 131743590 ---131秒(索引的讀取)
315 db file scattered read 34265605 --34秒
315 log file switch completion 6006692
315 events in waitclass Other 58204
315 SQL*Net message to client 65
SQL> select * from v$sess_time_model where sid=315 order by value desc;
SID STAT_ID STAT_NAME VALUE
---------- ---------- ---------------------------------------------------------------- ----------
315 3649082374 DB time 1068676495
315 2821698184 sql execute elapsed time 1068593627
315 2748282437 DB CPU 886348292
315 1431595225 parse time elapsed 129178
315 372226525 hard parse elapsed time 112666
315 1311180441 PL/SQL compilation elapsed time 25308
315 1990024365 connection management call elapsed time 21365
315 2643905994 PL/SQL execution elapsed time 3872
315 1159091985 repeated bind elapsed time 518
實際上對比INSERT,DELETE語句實際上多在對錶和索引的讀取環節,LOG生成量差不多,UNDO delete更多,
但是基本上多一個索引時間會*2,所以對於大量的資料刪除,和平凡的INSERT不適合建立索引,
但是如果只是DELETE TABLE WHERE ID=1這樣的操作比較多,那麼索引可以提高讀取表的速度,這樣可以不使用
全表掃描而使用索引掃描,要快很多。所以還是要區別對待。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7728585/viewspace-773629/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 系統關鍵程式的檢視和比較
- Truncate,Delete,Drop的比較.delete
- SQL Server 比較兩個資料庫的檢視和儲存過程結構差異SQLServer資料庫儲存過程
- 檢視Oracle SQL執行計劃方法比較、分析OracleSQL
- 系統表和資料字典檢視
- 檢視oracle資料庫中,哪些表的欄位是null值比較多Oracle資料庫Null
- 檢視mysql哪張表比較大MySql
- ORM框架和資料庫對系統效能影響的比較ORM框架資料庫
- influxdb與傳統資料庫的比較UX資料庫
- Nosql 資料管理系統與模型的比較SQL模型
- 比較SQL資料庫和HadoopSQL資料庫Hadoop
- 檢視oracle 資料庫中的級聯刪除(delete cascade)Oracle資料庫delete
- 系統狀態統計和檢視
- 資料庫系列:MySQL引擎MyISAM和InnoDB的比較資料庫MySql
- 常見資料庫SYBASE和SQL SERVER的比較資料庫SQLServer
- 【資料庫理論】 ACID和BASE的比較資料庫
- XML Schema和XML DTD的資料型別比較XML資料型別
- oracle檢視和更新統計表的資訊Oracle
- 常用的資料字典檢視和包
- truncate 和 delete 的效能對比delete
- 圖資料庫比較資料庫
- 資料結構比較資料結構
- 主流資料庫比較資料庫
- SAP CDS重定向檢視和直接讀這兩者場景的效能比較
- Oracle 資料字典和資料字典檢視Oracle
- C與C++在函式和資料的比較C++函式
- 「Premiere中文新手教程」使用比較檢視快速調色REM
- js 深比較和淺比較JS
- 常見資料庫系統比較之Oracle資料庫(轉)資料庫Oracle
- HHDESK資料夾比較功能
- ORACLE DATE和TIMESTAMP資料型別的比較(一) (轉)Oracle資料型別
- ORACLE DATE和TIMESTAMP資料型別的比較(二) (轉)Oracle資料型別
- oracle資料庫兩表資料比較Oracle資料庫
- 資料湖表格式比較(Iceberg、Hudi 和 Delta Lake)
- MongoDB、Cassandra 和 HBase 三種 NoSQL 資料庫比較MongoDBSQL資料庫
- 資料視覺化(一)A股三大指數10年漲跌幅比較:資料爬取和整理視覺化
- 從全方位為你比較3種資料科學工具的比較:Python、R和SAS(附連結)資料科學Python
- 檢視insert,delete,update對基表的影響(檢視初識)delete