MySQL delete和truncate


1、delete

  •   屬於DML語言,每次刪除一行,都在事務日志中為所刪除的每行記錄一項。產生rollback,事務提交之后才生效;如果有相應的 trigger,執行的時候將被觸發,如果刪除大數據量的表速度會很慢。
  •   刪除表中數據而不刪除表的結構(定義),同時也不釋放空間。

2、truncate

  •   默認情況下,truncate通過釋放存儲表數據所用的數據頁來刪除數據,並且只在事務日志中記錄頁的釋放。所以使用的系統和事務日志資源少,truncate會將高水線復位(回到最開始)。在InnoDB中,對於AUTO_INCREMENT的列來說,當在truncate之后,改列的第一個值仍從1開始,但是delete仍然使用順序使用刪除之前的值。
  •   truncate是DDL語言, 操作立即生效,自動提交,原數據不放到rollback segment中,不能回滾。 操作不觸發trigger。
  •   刪除內容、釋放空間但不刪除表的結構(定義)。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM