truncate 比 delete 慢

wei-xh發表於2010-06-29
同事過來問我,truncate 比 delete 慢,怎麼回事,我說應該不可能。不過接下來,我眼睛所看到的,卻告訴我,確實如此。

SQL> delete  from ac95;

已刪除2行。

已用時間:  00: 00: 00.01

SQL> truncate table ac95;

表被截斷。

已用時間:  00: 01: 32.88

而且不管是你執行truncate 多少次,每次都很慢。用10046跟蹤了下truncate.輸出如下:
truncate table ac95


call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        1      0.00       0.00          0          0          0           0
Execute      1      0.15      82.94       2493         16       9069           0
Fetch        0      0.00       0.00          0          0          0           0
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total        2      0.15      82.95       2493         16       9069           0

Misses in library cache during parse: 1
Optimizer mode: ALL_ROWS
Parsing user id: 55  

Elapsed times include waiting on following events:
  Event waited on                             Times   Max. Wait  Total Waited
  ----------------------------------------   Waited  ----------  ------------
  reliable message                                8        0.00          0.00
  enq: RO - fast object reuse                     8        0.53          1.38
  db file sequential read                      2493        0.44         15.95
  local write wait                             2131        0.39         65.41
  rdbms ipc reply                                16        0.00          0.00
  SQL*Net message to client                       1        0.00          0.00
  SQL*Net message from client                     1        0.00          0.00
********************************************************************************

時間主要花費在了local write wait,db file sequential read上面。思考中,希望大家討論討論,怎麼回事。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22034023/viewspace-666582/,如需轉載,請註明出處,否則將追究法律責任。

相關文章