国产av一二三区|日本不卡动作网站|黄色天天久久影片|99草成人免费在线视频|AV三级片成人电影在线|成年人aV不卡免费播放|日韩无码成人一级片视频|人人看人人玩开心色AV|人妻系列在线观看|亚洲av无码一区二区三区在线播放

網(wǎng)易首頁 > 網(wǎng)易號(hào) > 正文 申請(qǐng)入駐

新來個(gè)技術(shù)總監(jiān):發(fā)現(xiàn)誰再用 delete 刪數(shù)據(jù)直接開除!

0
分享至

Java精選面試題(微信小程序):5000+道面試題和選擇題,真實(shí)面經(jīng)簡歷模版,包含Java基礎(chǔ)、并發(fā)、JVM、線程、MQ系列、Redis、Spring系列、Elasticsearch、Docker、K8s、Flink、Spark、架構(gòu)設(shè)計(jì)、大廠真題等,在線隨時(shí)刷題!

源于一個(gè)讀者實(shí)際工作中遇到的問題,老大一直強(qiáng)調(diào)線上不允許用 delete 來刪除 Mysql 數(shù)據(jù)庫的數(shù)據(jù)(有一次發(fā)飚了,說如果再發(fā)現(xiàn)誰這樣操作直接開除)。為什么 MySQL 不建議使用 delete 刪除數(shù)據(jù)呢?

這就得從以下幾方面說起!

MySQL 是一種關(guān)系型數(shù)據(jù)庫管理系統(tǒng),它的數(shù)據(jù)存儲(chǔ)是基于磁盤上的文件系統(tǒng)實(shí)現(xiàn)的。MySQL 將數(shù)據(jù)存儲(chǔ)在表中,每個(gè)表由一系列的行和列組成。每一行表示一個(gè)記錄,每一列表示一個(gè)字段。表的結(jié)構(gòu)由其列名、數(shù)據(jù)類型、索引等信息組成。

MySQL 的數(shù)據(jù)存儲(chǔ)采用了多種技術(shù)來優(yōu)化性能和存儲(chǔ)效率。以下是 MySQL 數(shù)據(jù)存儲(chǔ)的一些關(guān)鍵特性。

存儲(chǔ)引擎

MySQL 支持多種不同的存儲(chǔ)引擎,每種引擎都有不同的性能和存儲(chǔ)特性。常見的存儲(chǔ)引擎有 InnoDB、MyISAM、Memory 等。不同的存儲(chǔ)引擎支持不同的數(shù)據(jù)存儲(chǔ)方式,如 B樹索引、哈希索引、全文索引等。、

數(shù)據(jù)頁

MySQL 使用數(shù)據(jù)頁來管理存儲(chǔ)在磁盤上的數(shù)據(jù)。數(shù)據(jù)頁是 MySQL 存儲(chǔ)引擎中最基本的存儲(chǔ)單元,通常情況下每個(gè)數(shù)據(jù)頁的大小為 16KB。數(shù)據(jù)頁包含多個(gè)記錄,每個(gè)記錄對(duì)應(yīng)一行數(shù)據(jù)。

索引

MySQL 使用索引來優(yōu)化數(shù)據(jù)的檢索效率。索引是一種特殊的數(shù)據(jù)結(jié)構(gòu),它能夠快速地查找表中的數(shù)據(jù)。MySQL 支持多種類型的索引,如 B 樹索引、哈希索引、全文索引等。B 樹索引是 MySQL 中最常用的索引類型,它能夠快速地查找表中的數(shù)據(jù)。

事務(wù)

MySQL 支持事務(wù),事務(wù)可以保證數(shù)據(jù)的一致性、可靠性和安全性。MySQL 的事務(wù)是基于 ACID 模型實(shí)現(xiàn)的,它能夠確保數(shù)據(jù)在事務(wù)中的操作要么全部成功,要么全部回滾。事務(wù)的支持使得 MySQL 在多用戶并發(fā)訪問時(shí)能夠保證數(shù)據(jù)的完整性和一致性。

總之,MySQL 的數(shù)據(jù)存儲(chǔ)基于磁盤上的文件系統(tǒng)實(shí)現(xiàn),采用多種技術(shù)來優(yōu)化性能和存儲(chǔ)效率,如存儲(chǔ)引擎、數(shù)據(jù)頁、索引、事務(wù)等。這些特性使得 MySQL 成為一種高性能、可靠和安全的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)。

MySQL刪除數(shù)據(jù)的方式都有哪些?

咱們常用的三種刪除方式:通過 delete、truncate、drop 關(guān)鍵字進(jìn)行刪除;這三種都可以用來刪除數(shù)據(jù),但場景不同。

執(zhí)行速度:drop > truncate >> DELETE

從原理上理解

DELETE

DELETE from TABLE_NAME where xxx

DELETE 屬于數(shù)據(jù)庫DML操作語言,只刪除數(shù)據(jù)不刪除表的結(jié)構(gòu),會(huì)走事務(wù),執(zhí)行時(shí)會(huì)觸發(fā)trigger;

在 InnoDB 中,DELETE其實(shí)并不會(huì)真的把數(shù)據(jù)刪除,mysql 實(shí)際上只是給刪除的數(shù)據(jù)打了個(gè)標(biāo)記為已刪除,因此 delete 刪除表中的數(shù)據(jù)時(shí),表文件在磁盤上所占空間不會(huì)變小,存儲(chǔ)空間不會(huì)被釋放,只是把刪除的數(shù)據(jù)行設(shè)置為不可見。**雖然未釋放磁盤空間,但是下次插入數(shù)據(jù)的時(shí)候,仍然可以重用這部分空間(重用 → 覆蓋)。

DELETE執(zhí)行時(shí),會(huì)先將所刪除數(shù)據(jù)緩存到rollback segement中,事務(wù)commit之后生效;

delete from table_name刪除表的全部數(shù)據(jù),對(duì)于MyISAM 會(huì)立刻釋放磁盤空間,InnoDB 不會(huì)釋放磁盤空間;

對(duì)于delete from table_name where xxx帶條件的刪除, 不管是InnoDB還是MyISAM都不會(huì)釋放磁盤空間;

delete操作以后使用optimize table table_name會(huì)立刻釋放磁盤空間。不管是InnoDB還是MyISAM 。所以要想達(dá)到釋放磁盤空間的目的,delete以后執(zhí)行optimize table 操作。

示例:查看表占用硬盤空間大小的SQL語句如下:(用M做展示單位,數(shù)據(jù)庫名:csjdemo,表名:demo2)

select concat(round(sum(DATA_LENGTH/1024/1024),2),'M') as table_size     from information_schema.tables        where table_schema='csjdemo' AND table_name='demo2';
圖片

然后執(zhí)行空間優(yōu)化語句,以及執(zhí)行后的表Size變化:

optimize table demo2
圖片

再看看這張表的大小,就只剩下表結(jié)構(gòu)size了。

delete 操作是一行一行執(zhí)行刪除的,并且同時(shí)將該行的的刪除操作日志記錄在redo和undo表空間中以便進(jìn)行回滾(rollback)和重做操作,生成的大量日志也會(huì)占用磁盤空間。

drop

Drop table Tablename

屬于數(shù)據(jù)庫DDL定義語言,同Truncate,執(zhí)行后立即生效,無法找回。

drop table table_name 立刻釋放磁盤空間 ,不管是 InnoDB 和 MyISAM; drop 語句將刪除表的結(jié)構(gòu)被依賴的約束(constrain)、觸發(fā)器(trigger)、索引(index); 依賴于該表的存儲(chǔ)過程/函數(shù)將保留,但是變?yōu)?invalid 狀態(tài)。

小心使用 drop ,要?jiǎng)h表跑路的兄弟,請(qǐng)?jiān)谟喥背晒笤趫?zhí)行操作!

可以這么理解,一本書,delete是把目錄撕了,truncate是把書的內(nèi)容撕下來燒了,drop是把書燒了

truncate

屬于數(shù)據(jù)庫DDL定義語言不走事務(wù),原數(shù)據(jù)不放到 rollback segment 中,操作不觸發(fā) trigger。執(zhí)行后立即生效,無法找回!

truncate table table_name 立刻釋放磁盤空間 ,不管是 InnoDB和MyISAM 。truncate table其實(shí)有點(diǎn)類似于drop table 然后creat,只不過這個(gè)create table 的過程做了優(yōu)化,比如表結(jié)構(gòu)文件之前已經(jīng)有了等等。所以速度上應(yīng)該是接近drop table的速度;

truncate 能夠快速清空一個(gè)表。并且重置auto_increment的值。

但對(duì)于不同的類型存儲(chǔ)引擎需要注意的地方是:

  • 對(duì)于MyISAM,truncate會(huì)重置auto_increment(自增序列)的值為1。而delete后表仍然保持auto_increment。

  • 對(duì)于InnoDB,truncate會(huì)重置auto_increment的值為1。delete后表仍然保持auto_increment。但是在做delete整個(gè)表之后重啟MySQL的話,則重啟后的auto_increment會(huì)被置為1。

  • 也就是說,InnoDB 的表本身是無法持久保存auto_increment。delete表之后 auto_increment仍然保存在內(nèi)存,但是重啟后就丟失了,只能從1開始。實(shí)質(zhì)上重啟后的auto_increment會(huì)從 SELECT 1+MAX(ai_col) FROM t 開始。

小心使用 truncate,尤其沒有備份的時(shí)候,如果誤刪除線上的表,記得及時(shí)跑路。

為什么不建議使用DELETE 刪除數(shù)據(jù)

了解上面的一些原理之后,可以知道!

  • 無法恢復(fù)數(shù)據(jù)

在使用DELETE操作刪除數(shù)據(jù)時(shí),如果沒有事先備份數(shù)據(jù),一旦誤操作就會(huì)導(dǎo)致數(shù)據(jù)無法恢復(fù)。因此,在進(jìn)行任何數(shù)據(jù)操作之前,最好先備份數(shù)據(jù),以便在出現(xiàn)錯(cuò)誤時(shí)可以輕松地恢復(fù)數(shù)據(jù)。

  • 刪除數(shù)據(jù)會(huì)導(dǎo)致索引失效,影響查詢性能。

  • 刪除數(shù)據(jù)會(huì)導(dǎo)致表空間的浪費(fèi),因?yàn)閯h除的數(shù)據(jù)并不會(huì)立即釋放,而是留在表中,只是被標(biāo)記為“已刪除”。

  • 數(shù)據(jù)不一致。

如果在刪除數(shù)據(jù)時(shí)表中存在外鍵關(guān)聯(lián),使用DELETE操作可能會(huì)導(dǎo)致其他表中的數(shù)據(jù)不一致。例如,如果一個(gè)表有一個(gè)外鍵,指向另一個(gè)表中的一行,如果從主表中刪除行而不更新外鍵引用,則外鍵引用將成為無效引用。這可能會(huì)導(dǎo)致查詢時(shí)出現(xiàn)錯(cuò)誤,或者在更新時(shí)導(dǎo)致數(shù)據(jù)不一致。

總結(jié)

在工作當(dāng)中執(zhí)行數(shù)據(jù)庫刪除的時(shí)候一定要慎重再慎重,建議每次進(jìn)行數(shù)據(jù)刪除的使用最好數(shù)據(jù)表的備份工作,這樣就會(huì)大大減少你刪除跑路的幾率。很多時(shí)候不要過于相信自己的動(dòng)手能力,老虎還有打盹的時(shí)候,萬一手滑了呢。盡可能養(yǎng)成好的數(shù)據(jù)庫運(yùn)維習(xí)慣,這樣會(huì)讓自己少跌跟頭,你的事業(yè)才會(huì)更加順利。

來源:www.rstk.cn/news/98507.htmlblog.csdn.net/qq_39390545/article/details/107144859

公眾號(hào)“Java精選”所發(fā)表內(nèi)容注明來源的,版權(quán)歸原出處所有(無法查證版權(quán)的或者未注明出處的均來自網(wǎng)絡(luò),系轉(zhuǎn)載,轉(zhuǎn)載的目的在于傳遞更多信息,版權(quán)屬于原作者。如有侵權(quán),請(qǐng)聯(lián)系,筆者會(huì)第一時(shí)間刪除處理!

最近有很多人問,有沒有讀者交流群!加入方式很簡單,公眾號(hào)Java精選,回復(fù)“加群”,即可入群!

文章有幫助的話,點(diǎn)在看,轉(zhuǎn)發(fā)吧!

特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相關(guān)推薦
熱點(diǎn)推薦
美國吃華人絕戶財(cái)富已經(jīng)成為一個(gè)公開的密碼了!

美國吃華人絕戶財(cái)富已經(jīng)成為一個(gè)公開的密碼了!

達(dá)文西看世界
2026-01-24 15:32:33
中國金花距離澳網(wǎng)決賽一步之遙,女單冠軍爭奪戰(zhàn)逐漸明朗

中國金花距離澳網(wǎng)決賽一步之遙,女單冠軍爭奪戰(zhàn)逐漸明朗

體育豐蘊(yùn)
2026-01-29 16:08:58
國產(chǎn)固態(tài)電池量產(chǎn)加速!數(shù)千萬新能源車主,恐成最大“接盤俠”?

國產(chǎn)固態(tài)電池量產(chǎn)加速!數(shù)千萬新能源車主,恐成最大“接盤俠”?

胖福的小木屋
2026-01-28 10:43:40
剖人心者終被食:亂世惡棍張彥澤的結(jié)局比電視上還慘

剖人心者終被食:亂世惡棍張彥澤的結(jié)局比電視上還慘

愛歷史
2026-01-28 10:07:37
價(jià)格大跳水!主力車型直降超15萬,中年男人的夢中豪車撐不住了?

價(jià)格大跳水!主力車型直降超15萬,中年男人的夢中豪車撐不住了?

財(cái)經(jīng)八卦
2026-01-28 20:05:03
女子用剁椒魚頭試探“網(wǎng)戀男友”,仍被騙68萬

女子用剁椒魚頭試探“網(wǎng)戀男友”,仍被騙68萬

中國日?qǐng)?bào)
2026-01-29 12:00:59
編程門檻被壓到799美元?“那個(gè)拿著Mac Mini+Claude的「門外漢」,搶走了程序員3個(gè)月的活!”

編程門檻被壓到799美元?“那個(gè)拿著Mac Mini+Claude的「門外漢」,搶走了程序員3個(gè)月的活!”

CSDN
2026-01-27 18:10:04
阿富汗塔利班恢復(fù)奴隸制?

阿富汗塔利班恢復(fù)奴隸制?

孫曉宇
2026-01-28 14:18:17
貝森特再點(diǎn)卡尼:你這種人我見得多了,別搞事

貝森特再點(diǎn)卡尼:你這種人我見得多了,別搞事

觀察者網(wǎng)
2026-01-29 08:51:38
周總理逝世21年后,中國銀行核查賬目時(shí)發(fā)現(xiàn)他名下存有巨額存款,一番調(diào)查后揭開了背后的真相

周總理逝世21年后,中國銀行核查賬目時(shí)發(fā)現(xiàn)他名下存有巨額存款,一番調(diào)查后揭開了背后的真相

寄史言志
2026-01-17 16:37:15
無法復(fù)制的價(jià)值!95年喬丹第一次復(fù)出有多轟動(dòng)?魔術(shù)師曾為他下跪

無法復(fù)制的價(jià)值!95年喬丹第一次復(fù)出有多轟動(dòng)?魔術(shù)師曾為他下跪

禾三千體育
2026-01-29 16:42:32
要打就打痛!中國手段已升級(jí),日本:中方不批準(zhǔn)駐重慶總領(lǐng)事任命

要打就打痛!中國手段已升級(jí),日本:中方不批準(zhǔn)駐重慶總領(lǐng)事任命

墨蘭史書
2026-01-28 20:45:03
偉大的2-0!中國金花直通澳網(wǎng)決賽:解鎖2大成就,爭冠對(duì)手確定!

偉大的2-0!中國金花直通澳網(wǎng)決賽:解鎖2大成就,爭冠對(duì)手確定!

劉姚堯的文字城堡
2026-01-29 16:33:24
本期禁足名單分布:31名球員、6名教練、17名足協(xié)官員、1名裁判

本期禁足名單分布:31名球員、6名教練、17名足協(xié)官員、1名裁判

慢歌輕步謠
2026-01-29 14:03:07
陳永貴夫人宋玉林離世,葬禮之上郭鳳蓮致悼詞,現(xiàn)場人山人海滿是悲戚

陳永貴夫人宋玉林離世,葬禮之上郭鳳蓮致悼詞,現(xiàn)場人山人海滿是悲戚

文史明鑒
2026-01-22 17:37:12
金價(jià)創(chuàng)新高!黃金變現(xiàn)業(yè)務(wù)爆了

金價(jià)創(chuàng)新高!黃金變現(xiàn)業(yè)務(wù)爆了

環(huán)球網(wǎng)資訊
2026-01-29 11:28:09
能否逆轉(zhuǎn)銷量?曝特斯拉即將推出Model YL+,88度電池,續(xù)航800km

能否逆轉(zhuǎn)銷量?曝特斯拉即將推出Model YL+,88度電池,續(xù)航800km

凡兮說
2026-01-29 16:44:36
大S雕像揭幕儀式即將開啟,出席人員曝光!汪小菲有望上金寶山!

大S雕像揭幕儀式即將開啟,出席人員曝光!汪小菲有望上金寶山!

娛樂團(tuán)長
2026-01-29 12:26:42
再打下去,烏克蘭沒男人了!澤連斯基解禁,允許年輕男性出國避難

再打下去,烏克蘭沒男人了!澤連斯基解禁,允許年輕男性出國避難

史智文道
2026-01-29 16:22:57
阿森納全勝領(lǐng)銜 英超隊(duì)踢歐冠怎么就如此輕松?

阿森納全勝領(lǐng)銜 英超隊(duì)踢歐冠怎么就如此輕松?

體壇周報(bào)
2026-01-29 16:16:23
2026-01-29 17:23:00
Java精選
Java精選
一場永遠(yuǎn)也演不完的戲
1768文章數(shù) 3859關(guān)注度
往期回顧 全部

科技要聞

周亞輝的AI新賭局:國內(nèi)太卷 出海另起爐灶

頭條要聞

女大學(xué)生到東北游玩暈倒雪地凍傷 三根手指或面臨截肢

頭條要聞

女大學(xué)生到東北游玩暈倒雪地凍傷 三根手指或面臨截肢

體育要聞

詹姆斯哭了!騎士視頻致敬41歲超巨

娛樂要聞

張譯不再隱瞞!公開回應(yīng)退圈息影真相

財(cái)經(jīng)要聞

崔東樹:中國汽車未來年銷或達(dá)5000萬輛

汽車要聞

車長超5米還帶后輪轉(zhuǎn)向 比亞迪海豹08/海獅08將亮相

態(tài)度原創(chuàng)

旅游
游戲
藝術(shù)
房產(chǎn)
教育

旅游要聞

投資30億,一年收入500萬,玉龍雪山觀光火車關(guān)停的蛛絲馬跡

PS+港區(qū)2月會(huì)免來了! 包含《冰點(diǎn)之下》等

藝術(shù)要聞

梵高全集(高清350張)震撼……

房產(chǎn)要聞

萬科難眠夜:前董事長郁亮失聯(lián),三筆債券靠深鐵才通過展期

教育要聞

“國家課程落地吳江行動(dòng)叢書”發(fā)布!聚焦課改前沿,共探育人新路!

無障礙瀏覽 進(jìn)入關(guān)懷版