php delete和truncate,TRUNCATE 删除表,无法回退。默认选择为整个表的内容,所以不能加条件。...
TRUNCATE 刪除表,無法回退。默認(rèn)選擇為整個(gè)表的內(nèi)容,所以不能加條件。
DELETE 刪除表,可以回退。可以帶where 條件。建議使用delete。但是TRUNCATE 刪除表數(shù)據(jù)比delete要快。
使用TRUNCATE TABLE語句
TRUNCATE TABLE語句提供了一種刪除表中所有記錄的快速方法。因?yàn)門RUNCATE TABLE語句不記錄日志,只記錄整個(gè)數(shù)據(jù)頁的釋放操作,而DELETE語句對每一行修改都記錄日志,所以使用TRUNCATE TABLE語句進(jìn)行刪除操作總是比沒有指定條件的DELETE語句效率高。TRUNCATE TABLE立即釋放了表中數(shù)據(jù)及索引所占用的全部空間,同時(shí)也釋放了分配給所有索引的空間。其語法格式如下:
TRUNCATE TABLE [ [database.] owner.] table_name
與DELETE語句相比,TRUNCATE TABLE具有以下優(yōu)點(diǎn):
l?? 所用的事務(wù)日志空間較少? DELETE語句每次刪除一行,并在事務(wù)日志中為所刪除的每行記錄一個(gè)項(xiàng)。TRUNCATE TABLE通過釋放用于存儲(chǔ)表數(shù)據(jù)的數(shù)據(jù)頁來刪除數(shù)據(jù),并且在事務(wù)日志中只記錄頁釋放。
l?? 使用的鎖通常較少? 當(dāng)使用行鎖執(zhí)行DELETE語句時(shí),將會(huì)鎖定表中各行以便刪除。TRUNCATE TABLE始終鎖定表和頁,而不是鎖定各行。
l?? 表中將毫無例外地不留下任何頁? 執(zhí)行DELETE語句后,表仍會(huì)包含空頁。例如,必須至少使用一個(gè)排他(LCK_M_X)表鎖,才能釋放堆中的空表。如果執(zhí)行刪除操作時(shí)沒有使用表鎖,表(堆)中將包含許多空頁。對于索引,刪除操作會(huì)留下一些空頁,盡管如此,不過這些頁會(huì)通過后臺(tái)清除進(jìn)程迅速釋放。
那么可不可以用TRUNCATE TABLE代替不帶WHERE子句的DELETE語句呢?在以下幾種情況是不行的:
l?? 在需要保留標(biāo)識(shí)的情況下不能用TRUNCATE TABLE,因?yàn)門RUNCATE TABLE會(huì)重置標(biāo)識(shí)。
l?? 在需要使用觸發(fā)器的情況下不能使用TRUNCATE TABLE,因?yàn)樗粫?huì)激發(fā)觸發(fā)器。
l?? 對于由FOREIGN KEY約束引用的表(即主鍵所在的表,不是外鍵所在的表)不能使用TRUNCATE TABLE.
l?? 對于參與了索引視圖的表不能使用TRUNCATE TABLE,注意指的是索引視圖,并非普通視圖。
那么用戶需要具有什么權(quán)限才可以使用TRUNCATE TABLE呢?若要使用TRUNCATE TABLE語句,必須是表的所有者,具有DBA權(quán)限或表的ALTER權(quán)限。對于基表,TRUNCATE TABLE語句需要有表的排他訪問權(quán)限,因?yàn)椴僮魇窃硬僮?要么刪除所有行,要么不刪除任何行)。這意味著所有以前打開的游標(biāo)和引用要截?cái)嗟谋淼挠螛?biāo)都必須關(guān)閉,并且必須發(fā)出COMMIT或ROLLBACK命令釋放對表的引用。對于臨時(shí)表,每個(gè)用戶都有自己的數(shù)據(jù)副本,不需要排他訪問。
下面結(jié)合一個(gè)簡單的實(shí)例來說明如何使用TRUNCATE TABLE語句。比如需要?jiǎng)h除商品信息表中的所有數(shù)據(jù),可以使用如下語句:
TRUNCATE TABLE 商品信息
由于TRUNCATE TABLE操作是不進(jìn)行日志記錄的,所以建議在TRUNCATE TABLE語句之前使用BACKUP DATABASE語句來對數(shù)據(jù)庫做備份。
(轉(zhuǎn)) Delete/Truncate刪除,釋放表空間、降低高水位線、resize釋放磁盤空間相關(guān)優(yōu)化
硬盤空間不足,打算刪除數(shù)據(jù)庫中的多余數(shù)據(jù),但刪除數(shù)據(jù)后,硬盤硬盤空間不能釋放.[delete后用:alter table table_name move??? truncate后用:alter tab ...
Oracle的閃回特性之恢復(fù)truncate刪除表的數(shù)據(jù)
Oracle的閃回特性之恢復(fù)truncate刪除表的數(shù)據(jù) SQL> show parameter flashback NAME???????????????????????????????? T ...
MySQL之存儲(chǔ)引擎(表類型)的選擇
和大部分的數(shù)據(jù)庫不同,MySQL中有一個(gè)存儲(chǔ)引擎的概念,用戶可以根據(jù)數(shù)據(jù)存儲(chǔ)的需求來選擇不同的存儲(chǔ)引擎.本次博客就來介紹一下MySQL中的存儲(chǔ)引擎.MySQL版本 5.7.19. 概述 MySQL的存 ...
談?wù)剶?shù)據(jù)庫中MyISAM與InnoDB區(qū)別 針對業(yè)務(wù)類型選擇合適的表
MyISAM:這個(gè)是默認(rèn)類型,它是基于傳統(tǒng)的ISAM類型, ISAM是Indexed Sequential Access Method (有索引的順序訪問方法) 的縮寫,它是存儲(chǔ)記錄和文件的標(biāo)準(zhǔn)方法. ...
Django-開放靜態(tài)資源-獲取請求攜帶的數(shù)據(jù)-pychram連接數(shù)據(jù)庫-修改Django默認(rèn)數(shù)據(jù)庫-DjangoORM操作--表管理-記錄管理-01
目錄 關(guān)于靜態(tài)資源訪問 為什么要配置靜態(tài)文件才能獲取靜態(tài)資源 常見的靜態(tài)文件種類 如何配置來開啟訪問權(quán)限 禁用瀏覽器緩存 django的自動(dòng)重啟機(jī)制(熱啟動(dòng)) 靜態(tài)文件接口動(dòng)態(tài)解析 向服務(wù)器發(fā)送數(shù)據(jù) ...
truncate刪除一個(gè)分區(qū),測試全局索引是否失效
目的,有一個(gè)清理數(shù)據(jù)的需求,需要?jiǎng)h除歷史的一個(gè)分區(qū)所有記錄信息,但是存在主鍵global索引,如何更好的維護(hù). 如下測試流程一 提前創(chuàng)建好一個(gè)已時(shí)間created 字段作為分區(qū)鍵的范圍分區(qū)表 SQL& ...
Greenplum 行存、列存,堆表、AO表的原理和選擇
轉(zhuǎn)載自: https://github.com/digoal/blog/blob/master/201708/20170818_02.md?spm=a2c4e.11153940.blogcont179 ...
隨機(jī)推薦
ArcGIS Engine開發(fā)之書簽加載
ArcGIS中書簽是保存特定視圖范圍的快捷方式.使用書簽保存關(guān)注的視圖范圍,可在需要時(shí)快速定位.查看與瀏覽.書簽功能主要用到IMapBookmarks.ISpatialBookmark和IAOIBoo ...
fflush函數(shù)的深入理解
本人昵稱sky,歡迎與各位多多交流學(xué)習(xí) 這樣的c程序想必大家都不陌生,fflush()這個(gè)函數(shù)有清除輸入輸出緩存的功能,那很多人就會(huì)問了,什么是清除輸入輸出緩存呢? 其實(shí)就是我們在printf輸出的時(shí) ...
網(wǎng)絡(luò)編程之PC版與Android手機(jī)版帶斷點(diǎn)續(xù)傳的多線程下載
一.多線程下載 ? ? ? ? 多線程下載就是搶占服務(wù)器資源 ? ? ? ? 原理:服務(wù)器CPU 分配給每條線程的時(shí)間片相同,服務(wù)器帶寬平均分配給每條線程,所以客戶端開啟的線程越多,就能搶占到更多的服 ...
google gflags使用.
code.google.com 被墻的好開心... gflags很簡單. 編譯使用都很簡單. (不像omaha這種喪心病狂的編譯依賴). cmake 生成一下. 一路順風(fēng)順?biāo)? 值得注意的是: ?默認(rèn) ...
Linux 安裝oracle10g 配置dataguard 介紹和步驟
DataGuard是甲骨文推出的一種高可用性數(shù)據(jù)庫方案,在Oracle 8i之前被稱為Standby Database.從Oracle 9i開始,正式更名為Data Guard.它是在 ...
Spring與Hibernate整合之通用Dao的實(shí)現(xiàn)
在上一篇文章中寫了如何直接利用HibernateTemplate進(jìn)行數(shù)據(jù)庫操作,但在一般的項(xiàng)目中很少直接得到HibernateTemplate的Bean對象從而操作數(shù)據(jù)庫的,下面就簡要介紹一下實(shí)現(xiàn)通用 ...
快速搭建Web環(huán)境 Angularjs + Express3 + Bootstrap3
快速搭建Web環(huán)境 Angularjs + Express3 + Bootstrap3 AngularJS體驗(yàn)式編程系列文章, 將介紹如何用angularjs構(gòu)建一個(gè)強(qiáng)大的web前端系統(tǒng).angula ...
(原)Struts 相關(guān)資源下載
官網(wǎng):http://struts.apache.org 點(diǎn)擊[Download],進(jìn)入頁面如下,可以看到下載的資源: 點(diǎn)擊[struts-2.3.20-all.zip],就能獲取Struts2項(xiàng)目所有 ...
[BZOJ 3747] [POI 2015] Kinoman【線段樹】
Problem Link : BZOJ 3747 題解:ZYF-ZYF 神犇的題解 解題的大致思路是,當(dāng)區(qū)間的右端點(diǎn)向右移動(dòng)一格時(shí),只有兩個(gè)區(qū)間的左端點(diǎn)對應(yīng)的答案發(fā)生了變化. 從 f[i] + 1 到 ...
R中基本統(tǒng)計(jì)圖
一.條形圖 1.安裝包install.packages("vcd"); library(vcd);count
總結(jié)
以上是生活随笔為你收集整理的php delete和truncate,TRUNCATE 删除表,无法回退。默认选择为整个表的内容,所以不能加条件。...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 荷花烟多少钱一包啊?
- 下一篇: “严恭履桑梓”上一句是什么