MySQL Truncate用法詳解

2022-09-25 08:03:12 字數 782 閱讀 8934

前言:

當我們想要清空某張程式設計客棧表時,往往會使用truncate語句。大多時候我們只關心能否滿足需求,而不去想這類語句的使用場景及注意事項。本篇文章主要介紹truncate語句的使用方法及注意事項。

1.truncate使用語法

truncate的作用是清空表或者說是截斷表,只能作用於表。truncate的語法很簡單,後面直接跟表名即可,例如:truncate 程式設計客棧table tbl_name 或者 truncate tbl_name 。

執行truncate語句需要擁有表的drop許可權,從邏輯上講,truncate table類似於delete刪除所有行的語句或drop table然後再create table語句的組合。為了實現高效能,它繞過了刪除資料的dml方法,因此,它不能回滾。儘管truncate table與delete相似,但它被分類為ddl語句而不是dml語句。

2.truncate與drop,delete的對比

上面說過truncate與delete,drop很相似,其實這三者還是與很大的不同的,下面簡單對比下三者的異同。

程式設計客棧

3.truncate使用場景及注意事項

通過前面介紹,我們很容易得出truncate語句的使用場景,即該錶資料完全不需要時可以用truncate。如果想刪除部分資料用delete,注意帶上where子句;如果想刪除表,當然用drop;如果想保留表而將所有資料刪除且和事務無關,用truncate即可;如果和事務有關,或者想觸發trigger,還irceoamqqt是用delete;如果是整理表內部的碎片,可以用truncate然後再重新插入資料。

MYSQL TRUNCATE導致系統鎖

show processlist 看到truncate 語句waiting for table metadata lock truncate為ddl語句,會改變元資料,會lock table meta data,空間直接釋放,資料丟失不易找回 該現狀為 由鎖表公升級為鎖庫。當system lock出...

stack用法,queue用法,

stack stack 模板類的定義在標頭檔案中。stack 模板類需要兩個模板引數,乙個是元素型別,乙個容器型別,但只有元素型別是必要 的,在不指定容器型別時,預設的容器型別為deque。定義stack 物件的示例 如下 stack s1 stack s2 stack 的基本操作有 入棧,如例 s...

stack用法,queue用法,

stack stack 模板類的定義在標頭檔案中。stack 模板類需要兩個模板引數,乙個是元素型別,乙個容器型別,但只有元素型別是必要 的,在不指定容器型別時,預設的容器型別為deque。定義stack 物件的示例 如下 stack s1 stack s2 stack 的基本操作有 入棧,如例 s...