久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營的一線實(shí)戰(zhàn)洞察。

SQL DELETE完全指南:從基礎(chǔ)語法到生產(chǎn)環(huán)境避坑實(shí)踐

SQL DELETE完全指南:從基礎(chǔ)語法到生產(chǎn)環(huán)境避坑實(shí)踐 1. 先搞清楚DELETE到底解決什么問題很多人第一次寫SQL學(xué)的第一條語句就是SELECT第二條大概率就是DELETE。SQL里最容易被輕視、也最容易出事的恰恰就是這個(gè)DELETE。先給結(jié)論DELETE是SQL里用來刪除表中數(shù)據(jù)的語句它刪的是“行”不是“表”。你可以把它理解成整理房間時(shí)扔掉不要的東西而不是把整個(gè)房間拆掉。DELETE只處理數(shù)據(jù)本身表的結(jié)構(gòu)、索引、約束這些全都保留著這一點(diǎn)必須先刻在腦子里。DELETE解決的核心場景很明確業(yè)務(wù)系統(tǒng)里產(chǎn)生了臟數(shù)據(jù)、測試數(shù)據(jù)、過期數(shù)據(jù)或者用戶主動(dòng)注銷、退訂、清空記錄都需要精準(zhǔn)地把某些行刪掉。比如電商訂單里有大量“已取消”狀態(tài)的廢棄記錄比如用戶表里有幾百個(gè)測試賬號(hào)比如日志表里三個(gè)月前的數(shù)據(jù)占了好幾個(gè)G——這些場景統(tǒng)統(tǒng)靠DELETE來解決。我見過太多新手在寫DELETE時(shí)的第一個(gè)反應(yīng)是“它跟DROP有什么區(qū)別”答案很簡單DROP直接連表帶數(shù)據(jù)一起銷毀TRUNCATE把表里的數(shù)據(jù)全清空但保留表結(jié)構(gòu)而DELETE是可以加WHERE條件、只刪除指定行的。DELETE最大的價(jià)值就是“精準(zhǔn)”二字WHERE條件寫得多好刪除就有多準(zhǔn)。這篇文章適合誰看如果你剛學(xué)SQL不久或者寫了幾年代碼但DELETE總是靠“備份膽量”在撐那你來對地方了。我會(huì)把DELETE的語法、原理、實(shí)操步驟、避坑經(jīng)驗(yàn)都過一遍尤其是那些在正式文檔里不太會(huì)寫、但生產(chǎn)環(huán)境里一定會(huì)踩的坑。2. DELETE的整體設(shè)計(jì)與選型思路2.1 DELETE、TRUNCATE、DROP怎么選刪除數(shù)據(jù)這件事SQL里不止DELETE一條路。很多人上來就刪刪完才發(fā)現(xiàn)選錯(cuò)了工具。先把三者的關(guān)系理清楚才能知道什么場景該用哪個(gè)。操作刪除范圍保留表結(jié)構(gòu)可加WHERE事務(wù)支持速度DELETE指定行或全部行保留支持支持慢TRUNCATE全部行保留不支持部分?jǐn)?shù)據(jù)庫支持快DROP表本身數(shù)據(jù)不保留不支持部分?jǐn)?shù)據(jù)庫支持最快從這個(gè)表能看出一個(gè)關(guān)鍵差異只有DELETE是“可反悔”的刪除。在MySQL、PostgreSQL、SQL Server這些主流數(shù)據(jù)庫里DELETE語句如果包在事務(wù)里執(zhí)行出錯(cuò)或發(fā)現(xiàn)刪錯(cuò)時(shí)可以ROLLBACK回滾TRUNCATE在多數(shù)數(shù)據(jù)庫里不支持事務(wù)回滾PostgreSQL支持但MySQL不支持DROP更狠表都沒了想回滾基本靠備份。我個(gè)人的選型原則很簡單刪除少量指定行、需要條件篩選用DELETE清空一張表但希望保留表結(jié)構(gòu)以備后續(xù)使用且確認(rèn)不需要回滾用TRUNCATE連表結(jié)構(gòu)都不要了才用DROP。越危險(xiǎn)的操作越要留后路這是從業(yè)十幾年最深的體會(huì)。什么時(shí)候DELETE不是最優(yōu)解如果你的目標(biāo)是“把一張大表里的數(shù)據(jù)全部刪掉只留空表”TRUNCATE通常更合適。它不像DELETE那樣逐行生成刪除日志所以速度快得多在MySQL里TRUNCATE是隱式提交的直接釋放表空間。但反過來如果你只需要?jiǎng)h掉表中很小一部分?jǐn)?shù)據(jù)則應(yīng)該毫不猶豫地選DELETE因?yàn)門RUNCATE沒有這個(gè)能力。2.2 為什么DELETE的性能差異這么大用DELETE刪100行數(shù)據(jù)很快但刪1000萬行就可能把數(shù)據(jù)庫卡死原因要從DELETE的執(zhí)行機(jī)制說起。DELETE本質(zhì)上是對目標(biāo)行加鎖然后逐行刪除同時(shí)記錄足夠多的日志以便回滾。在InnoDB存儲(chǔ)引擎下MySQL默認(rèn)每刪除一行都要寫undo日志和redo日志行被標(biāo)記刪除后后續(xù)還要由purge線程真正清理。這就意味著刪除的數(shù)據(jù)量越大產(chǎn)生的日志量越大占用的系統(tǒng)資源越多。在一個(gè)聯(lián)機(jī)交易庫上執(zhí)行大批量DELETE很容易造成主從延遲、鎖等待甚至磁盤滿。我舉一個(gè)實(shí)際案例某個(gè)業(yè)務(wù)表里有8000萬條記錄其中超過一半是三個(gè)月前的過期數(shù)據(jù)。最初方案是直接用一條DELETE把過期數(shù)據(jù)全部刪掉結(jié)果跑了不到兩分鐘線上開始告警——大量查詢出現(xiàn)鎖等待主庫CPU飆升。后來改成“分批刪除”每批只刪5000條每批之間sleep幾秒再配合非高峰時(shí)段執(zhí)行整個(gè)過程平穩(wěn)得多系統(tǒng)一點(diǎn)沒受影響。所以在方案設(shè)計(jì)階段就要根據(jù)數(shù)據(jù)量選擇執(zhí)行策略。一般來說單次DELETE影響行數(shù)在幾千以內(nèi)可以當(dāng)作常規(guī)操作直接執(zhí)行超過幾萬行就要考慮分批、限流超過百萬行基本必須拆任務(wù)。這屬于經(jīng)驗(yàn)值不同硬件環(huán)境下具體閾值會(huì)有差異但思路是通用的。2.3 事務(wù)隔離級(jí)別與DELETE的關(guān)系DELETE和事務(wù)的關(guān)系非常緊密理解了這個(gè)生產(chǎn)環(huán)境里能少踩一半的坑。以MySQL默認(rèn)的REPEATABLE READ隔離級(jí)別為例DELETE執(zhí)行時(shí)除了給目標(biāo)行加排他鎖還會(huì)在可重復(fù)讀隔離級(jí)別下使用當(dāng)前讀鎖定讀也就是說它會(huì)讀取最新已提交版本并加鎖而不是讀取某個(gè)歷史快照。這一點(diǎn)在“先查后刪”的場景里尤其重要。舉個(gè)例子你打算刪除狀態(tài)為“待支付”且創(chuàng)建時(shí)間超過30分鐘的訂單。先單獨(dú)跑一條SELECT確認(rèn)有120條符合條件然后執(zhí)行DELETE。就在這兩條語句的間隙又有新的“待支付”訂單插進(jìn)來了——這沒什么問題因?yàn)槟愕臈l件不會(huì)匹配它。但如果條件本身是動(dòng)態(tài)變化的比如“刪除積分小于0的用戶”而有人同時(shí)在給用戶加積分那刪除的結(jié)果可能和你SELECT時(shí)看到的不完全一致。處理方式很簡單重要?jiǎng)h除操作盡量在低峰期執(zhí)行或者在事務(wù)里配合合適的鎖機(jī)制保證一致性。PostgreSQL和SQL Server也有各自的事務(wù)和鎖機(jī)制但邏輯大同小異DELETE不是“瞬間完成”的操作它會(huì)與并發(fā)讀寫產(chǎn)生相互作用。真正上線之前務(wù)必在測試環(huán)境模擬并發(fā)場景別拿生產(chǎn)庫當(dāng)試驗(yàn)田。3. DELETE的核心語法與細(xì)節(jié)拆解3.1 標(biāo)準(zhǔn)DELETE語法逐段解讀DELETE的官方語法很簡單幾種主流數(shù)據(jù)庫的寫法基本一致DELETE FROM 表名 WHERE 條件 [ORDER BY 排序字段] [LIMIT 行數(shù)]; -- MySQL專屬DELETE FROM 表名必填指定你要從哪張表刪除數(shù)據(jù)。WHERE 條件可選但實(shí)際生產(chǎn)中幾乎必填。不寫WHERE就是清空整張表。ORDER BY LIMITMySQL里可以控制刪除順序和刪除行數(shù)比如DELETE FROM t WHERE status1 ORDER BY create_time ASC LIMIT 100先刪最舊的100條。這里要重點(diǎn)強(qiáng)調(diào)一點(diǎn)DELETE不加WHERE就是一次全表數(shù)據(jù)清空這不是開玩笑的事幾乎每個(gè)DBA都處理過這種事故。有一種習(xí)慣值得養(yǎng)成——執(zhí)行任何DELETE之前先把你準(zhǔn)備要寫的WHERE條件放到SELECT里跑一遍確認(rèn)查出來的行是你要?jiǎng)h的那些。檢查無誤后再把SELECT *換成DELETE這種肌肉記憶會(huì)在關(guān)鍵時(shí)刻救你一命。WHERE條件怎么寫直接決定刪除的精準(zhǔn)度。單個(gè)條件最簡單比如WHERE id 123多個(gè)條件用AND/OR組合比如WHERE status closed AND created_at DATE_SUB(NOW(), INTERVAL 90 DAY)。這里要提醒一個(gè)常見誤區(qū)OR的優(yōu)先級(jí)低于AND所以WHERE a 1 OR b 2 AND c 3會(huì)被解析成a 1 OR (b 2 AND c 3)如果不加括號(hào)很容易刪到意料之外的行。多個(gè)條件組合時(shí)拿不準(zhǔn)就加括號(hào)這不是謹(jǐn)慎過度是保命。3.2 WHERE條件的精準(zhǔn)控制技巧精準(zhǔn)刪除的核心是“讓W(xué)HERE條件恰好圈出目標(biāo)數(shù)據(jù)不多不少”。這個(gè)目標(biāo)說起來容易做起來有幾類典型場景值得單獨(dú)拿出來講。先說日期區(qū)間。刪除歷史數(shù)據(jù)是最高頻的需求比如“刪除一年前的日志”條件一般寫成WHERE create_time DATE_SUB(NOW(), INTERVAL 1 YEAR)。這里的邊界值要特別注意如果你用就會(huì)把剛好一年前那一秒的數(shù)據(jù)也刪掉如果數(shù)據(jù)庫存的create_time是datetime類型建議用而不是配合第二天的00:00:00作為邊界更穩(wěn)。再說字符串匹配。很多業(yè)務(wù)表里有“刪除所有測試數(shù)據(jù)”的需求測試數(shù)據(jù)往往以test或tmp開頭。此時(shí)WHERE name LIKE test%能刪掉前綴是test的行但要注意LIKE的語義是否會(huì)誤傷線上數(shù)據(jù)。比如一個(gè)用戶昵稱恰好是“test_user_001”但你只想刪內(nèi)部測試號(hào)——這時(shí)最好增加一個(gè)額外的標(biāo)記字段比如AND is_test 1。多一個(gè)條件就多一分安全。還有一個(gè)高級(jí)用法用子查詢?nèi)Χ▌h除范圍。比如你想刪除“近30天沒有任何訂單的用戶”直接寫DELETE FROM users WHERE id IN (SELECT user_id FROM orders GROUP BY user_id HAVING MAX(create_time) NOW() - INTERVAL 30 DAY)這種寫法把“判斷邏輯”放在子查詢中WHERE只負(fù)責(zé)匹配ID。在MySQL中要注意子查詢里引用同一張表時(shí)會(huì)有一些限制在老版本里不能直接對同一個(gè)表進(jìn)行SELECT再DELETE需要用臨時(shí)表包一層后面實(shí)操章節(jié)會(huì)具體演示。3.3 多表刪除一條DELETE刪多張表的數(shù)據(jù)實(shí)際業(yè)務(wù)中很少只刪一張表。比如用戶注銷需要把用戶主表、訂單表、登錄日志表里的相關(guān)數(shù)據(jù)一并清理。多表刪除有幾種寫法不同數(shù)據(jù)庫語法差異很大這里重點(diǎn)講兩種主流方案。第一種是逐表DELETE包在一個(gè)事務(wù)里這是兼容性最好、也最容易被理解的方式。先刪訂單表再刪日志表最后刪用戶主表任何一步出錯(cuò)都可以整體回滾保證一致性。第二種是MySQL特有的多表DELETE語法DELETE t1, t2 FROM users t1 LEFT JOIN orders t2 ON t2.user_id t1.id WHERE t1.id 10086;這條語句會(huì)同時(shí)刪除users表里id10086的用戶以及orders表里關(guān)聯(lián)的訂單行。它的好處是一條SQL搞定多張表壞處是——如果不小心把JOIN條件寫錯(cuò)可能刪掉不該刪的數(shù)據(jù)。我個(gè)人對多表DELETE的態(tài)度是能拆成多條就拆拆不開再合最少用事務(wù)包住。SQL Server里也有類似寫法FROM子句后跟JOINPostgreSQL則原生支持DELETE USING語法。不同數(shù)據(jù)庫語法有差異但思路一致關(guān)聯(lián)條件必須寫在WHERE里而不是JOIN條件里否則你會(huì)發(fā)現(xiàn)問題很嚴(yán)重——JOIN把不該刪除的數(shù)據(jù)也關(guān)聯(lián)進(jìn)來了。3.4 DELETE與TRUNCATE的邊界場景補(bǔ)充這一節(jié)再補(bǔ)充幾個(gè)容易忽略的細(xì)節(jié)。TRUNCATE在MySQL里會(huì)隱式提交執(zhí)行之后無法回滾。PostgreSQL的TRUNCATE支持事務(wù)回滾但依然不逐行觸發(fā)刪除觸發(fā)器。如果你的表上有DELETE觸發(fā)器比如數(shù)據(jù)變更審計(jì)TRUNCATE默認(rèn)不會(huì)觸發(fā)這可能導(dǎo)致審計(jì)日志缺失。需要觸發(fā)器記錄刪除行為的表務(wù)必使用DELETE而不是TRUNCATE。還有自增ID的問題。DELETE刪除行之后表的AUTO_INCREMENT計(jì)數(shù)器一般不會(huì)重置而TRUNCATE在大多數(shù)數(shù)據(jù)庫里會(huì)把計(jì)數(shù)器重置。測試環(huán)境里想“刪完數(shù)據(jù)并讓ID重新從1開始”TRUNCATE比DELETE省事但如果你需要保留歷史ID序列語義就別用TRUNCATE。另外補(bǔ)充一個(gè)MySQL特有的坑DELETE時(shí)不建議省略WHERE并只依賴LIMIT來“控制刪除數(shù)量”。雖然語法上DELETE FROM t LIMIT 100合法但它沒有條件地刪除任意100行行為不可預(yù)期生產(chǎn)中幾乎不該出現(xiàn)。4. 實(shí)操過程從備份到執(zhí)行DELETE的完整流程4.1 環(huán)境準(zhǔn)備與刪除前的備份方案不管你是刪1行還是刪100萬行刪除前的備份這步絕對不能省?!拔矣袦y試庫驗(yàn)證過了”和“正式庫出了事能恢復(fù)”是兩件完全不同的事。最穩(wěn)妥的備份方法是物理備份。MySQL里可以用mysqldump把整張表導(dǎo)出mysqldump -u用戶名 -p數(shù)據(jù)庫名 表名 /data/backup/表名_$(date %Y%m%d).sql如果表特別大整表導(dǎo)出太慢至少也要用WHERE條件把將要?jiǎng)h除的數(shù)據(jù)備份出來mysqldump -u用戶名 -p數(shù)據(jù)庫名 表名 \ --wherestatusclosed AND create_time 2023-01-01 \ /data/backup/待刪除數(shù)據(jù)_備份.sqlPostgreSQL可以用pg_dumpSQL Server有導(dǎo)出任務(wù)思路相同刪除前必須能回答一個(gè)問題——如果刪錯(cuò)了這些數(shù)據(jù)還能不能找回來答不上來就不要執(zhí)行DELETE。除了備份我強(qiáng)烈建議在刪除前記錄一些“元信息”比如當(dāng)前符合條件的行數(shù)、表的行數(shù)、鍵的分布范圍。這些信息一是用于核對刪除范圍二是萬一出了問題能快速定位備份要恢復(fù)到什么時(shí)間點(diǎn)。實(shí)際操作中我通常會(huì)順手把SELECT COUNT(*)和執(zhí)行計(jì)劃一起保留下來留檔備查。4.2 先用SELECT驗(yàn)證再轉(zhuǎn)DELETE在正式執(zhí)行DELETE之前有一個(gè)幾乎零成本的驗(yàn)證步驟把DELETE語句用SELECT代替先跑一遍。這個(gè)習(xí)慣我逢人就推薦因?yàn)樗娴哪軗踝〈蟛糠质鹿?。假設(shè)你要執(zhí)行這條刪除DELETE FROM orders WHERE status cancelled AND updated_at 2024-06-01;先改成SELECT COUNT(*), MAX(id), MIN(id) FROM orders WHERE status cancelled AND updated_at 2024-06-01;從返回結(jié)果里能直接看到將要?jiǎng)h除的數(shù)據(jù)量、ID范圍。如果數(shù)據(jù)量和你預(yù)期嚴(yán)重不符說明WHERE條件有問題需要停下來檢查。這一步雖然多花十幾秒但把“刪除操作”和“概率事故”之間隔開了一道安全墻。除了COUNT還可以隨機(jī)抽查幾條數(shù)據(jù)肉眼看一下是不是確實(shí)該刪。比如SELECT id, user_id, status, updated_at FROM orders WHERE status cancelled AND updated_at 2024-06-01 LIMIT 20;抽查數(shù)據(jù)和業(yè)務(wù)方確認(rèn)后再執(zhí)行真正的DELETE。這一步在團(tuán)隊(duì)協(xié)作場景里尤其重要——你以為是“過期數(shù)據(jù)”業(yè)務(wù)方可能正在查詢分析它們。4.3 事務(wù)包裹與分批刪除的正確姿勢驗(yàn)證完成后正式刪除前要做的關(guān)鍵決策是直接執(zhí)行還是分批執(zhí)行這取決于數(shù)據(jù)量。幾千行以內(nèi)可以直接刪幾萬行以上的建議分批。以MySQL為例分批刪除的一種常見寫法是DELETE FROM orders WHERE status cancelled AND updated_at 2024-06-01 LIMIT 5000;反復(fù)執(zhí)行這條語句直到影響行數(shù)為0每次刪除5000行。可以手動(dòng)重復(fù)執(zhí)行也可以寫成存儲(chǔ)過程或腳本循環(huán)調(diào)用。生產(chǎn)環(huán)境中如果條件允許建議把刪除操作顯式包裹在一個(gè)事務(wù)里并設(shè)定好DELAY_KEY_WRITE等參數(shù)。對于小批量刪除顯式事務(wù)的好處是出錯(cuò)可回滾就算連接意外中斷也不會(huì)有半截子數(shù)據(jù)處于一致性問題中。我經(jīng)歷過一個(gè)深層教訓(xùn)有一回刪除某日志表分批刪了二十多批突然發(fā)現(xiàn)條件漏掉一個(gè)過濾項(xiàng)導(dǎo)致多刪了一部分?jǐn)?shù)據(jù)。因?yàn)橹笆亲詣?dòng)提交的那些刪除已經(jīng)生效只能拿著備份去恢復(fù)。后來再做大表刪除我會(huì)先執(zhí)行START TRANSACTION刪完第一批后先不提交而是SELECT驗(yàn)證影響行數(shù)和剩余行數(shù)是否正確確認(rèn)無誤再COMMIT。這樣就算發(fā)現(xiàn)問題回滾的代價(jià)也遠(yuǎn)小于事后恢復(fù)備份。4.4 索引使用與執(zhí)行計(jì)劃檢查DELETE語句的WHERE條件如果沒走索引會(huì)發(fā)生什么最壞的情況是全表掃描——數(shù)據(jù)庫把每一行都讀一遍判斷是否滿足條件符合條件的再加鎖刪除。表越大這個(gè)操作越慢鎖的范圍也會(huì)擴(kuò)大影響在線業(yè)務(wù)。所以在執(zhí)行大批量DELETE之前必須檢查執(zhí)行計(jì)劃。MySQL里用EXPLAINEXPLAIN DELETE FROM orders WHERE status cancelled AND updated_at 2024-06-01;看type列是不是ALL全表掃描如果是說明沒有合適的索引。解決方案是提前創(chuàng)建聯(lián)合索引ALTER TABLE orders ADD INDEX idx_status_updated (status, updated_at);為什么建議聯(lián)合索引而不是兩個(gè)單列索引因?yàn)檫@條刪除條件的過濾邏輯是先按status定位再按updated_at排序或過濾。聯(lián)合索引可以一步定位到目標(biāo)行范圍單列索引則可能需要回表多次。具體使用中MySQL優(yōu)化器會(huì)自行選擇成本更低的方案但提前建好聯(lián)合索引總是更穩(wěn)妥的選擇。這里要提醒一點(diǎn)索引不是越多越好。DELETE之外還有INSERT和UPDATE每多一個(gè)索引寫入數(shù)據(jù)時(shí)要多維護(hù)一份索引。如果這張表刪除操作不頻繁就按需建索引如果刪除是高頻操作索引設(shè)計(jì)就要專門為DELETE優(yōu)化。數(shù)據(jù)庫性能調(diào)優(yōu)從來不是單一操作最優(yōu)而是整體權(quán)衡。5. 常見問題與排查技巧實(shí)錄5.1 刪除卡死或鎖等待怎么辦癥狀DELETE語句執(zhí)行很久不返回或者報(bào)鎖等待超時(shí)錯(cuò)誤如MySQL的Lock wait timeout exceeded。排查步驟第一先看當(dāng)前有哪些事務(wù)持有鎖SELECT * FROM information_schema.innodb_trx;第二通過sys.innodb_lock_waits視圖或performance_schema查看鎖等待關(guān)系找到“源頭事務(wù)”是什么。第三確認(rèn)源頭事務(wù)能否快速結(jié)束。如果是一個(gè)長時(shí)間未提交的UPDATE可以考慮讓對應(yīng)應(yīng)用提交或回滾如果源頭事務(wù)確實(shí)不能立刻結(jié)束可以選擇等它執(zhí)行完或者把DELETE操作安排在業(yè)務(wù)低谷期。防患于未然的方法很簡單大批量DELETE不在高峰時(shí)段執(zhí)行并控制單批刪除影響行數(shù)。此外刪除操作前可以先獲取一個(gè)較小的鎖范圍比如用主鍵范圍分片每次只刪一段ID區(qū)間的數(shù)據(jù)鎖沖突自然減少。5.2 誤刪數(shù)據(jù)后如何快速恢復(fù)誤刪數(shù)據(jù)是SQL領(lǐng)域最讓人頭皮發(fā)麻的事。好在你提前做了備份恢復(fù)流程可以分為兩類。如果刪除操作還在未提交事務(wù)中直接ROLLBACK即可ROLLBACK;如果已經(jīng)提交只能依靠備份恢復(fù)。全量備份配上binlog或歸檔日志可以做時(shí)間點(diǎn)恢復(fù)這也是生產(chǎn)環(huán)境的標(biāo)準(zhǔn)姿勢。MySQL的恢復(fù)思路大致是用備份恢復(fù)出刪除前的快照再通過binlog把從備份時(shí)間點(diǎn)到誤刪時(shí)刻的增量操作重放出來跳過DELETE那條事務(wù)。PostgreSQL有PITR時(shí)間點(diǎn)恢復(fù)SQL Server有日志備份恢復(fù)原理都是類似思路。但恢復(fù)操作本身很繁瑣耗時(shí)也不短所以日常的口訣是能備份就不賭能回滾就不提交。如果實(shí)在沒有備份也沒有日志還有一條下策用Undelete工具掃描InnoDB文件碎片或者用專門的數(shù)據(jù)恢復(fù)軟件掃描磁盤頁。這一條僅作為最后的絕望選項(xiàng)成功率不高且依賴存儲(chǔ)引擎的物理特性我在實(shí)際工作中幾乎沒見過成功案例。所以再次強(qiáng)調(diào)反向操作遠(yuǎn)比正向操作難備份做好了數(shù)據(jù)庫事故就成功一半了。5.3 外鍵約束導(dǎo)致DELETE失敗刪除父表數(shù)據(jù)時(shí)如果子表里有引用外鍵約束會(huì)拒絕刪除報(bào)錯(cuò)信息大概是Cannot delete or update a parent row: a foreign key constraint fails。有兩種處理思路第一種先刪子表再刪父表。比如刪除用戶前先把他的訂單清掉再刪除用戶。這也是之前提到的“逐表DELETE事務(wù)”方案。第二種確認(rèn)業(yè)務(wù)允許后臨時(shí)禁用外鍵檢查。MySQL里可以SET FOREIGN_KEY_CHECKS 0; DELETE FROM users WHERE id 10086; SET FOREIGN_KEY_CHECKS 1;這個(gè)操作務(wù)必謹(jǐn)慎。臨時(shí)禁用外鍵后如果刪除順序和邏輯有問題可能留下孤兒數(shù)據(jù)子表還引用著已經(jīng)不存在的父表記錄。只推薦在明確知道后果、并做好備份的前提下使用。5.4 DELETE后的表空間沒有變小是沒刪干凈嗎這是一個(gè)迷惑性極強(qiáng)的問題。在MySQL InnoDB中執(zhí)行DELETE后表文件大小可能幾乎沒有變化。這不是沒刪干凈而是數(shù)據(jù)的物理空間沒有立刻歸還給操作系統(tǒng)。InnoDB刪除行時(shí)只是把這些行標(biāo)記為“已刪除”后續(xù)新插入的數(shù)據(jù)可能復(fù)用這些空間。如果想要真正把空間釋放給操作系統(tǒng)需要執(zhí)行OPTIMIZE TABLE 表名;或重建表比如ALTER TABLE ... ENGINEInnoDB。但這兩個(gè)操作在表非常大時(shí)都需要較長執(zhí)行時(shí)間并且會(huì)鎖表或消耗大量IO生產(chǎn)環(huán)境務(wù)必安排在維護(hù)窗口執(zhí)行。只有當(dāng)刪除比例非常大比如刪了60%以上且確認(rèn)表不會(huì)再快速增長時(shí)才值得做物理空間收縮。PostgreSQL中類似的概念是VACUUM FULLSQL Server里有收縮數(shù)據(jù)庫功能。核心邏輯都是一樣的DELETE刪的是邏輯數(shù)據(jù)物理空間的回收是另一回事。別因?yàn)長OT尺寸沒變就反復(fù)重跑DELETE那樣只會(huì)白白增加一次全表掃描的成本。5.5 批量刪除時(shí)日志暴漲如何處理DELETE產(chǎn)生的日志量通常比UPDATE大因?yàn)槊啃卸家涗浲暾膁elete操作信息以待恢復(fù)。批量DELETE尤其是一次刪百萬行binlog或事務(wù)日志可能暴漲幾GB甚至幾十GB在磁盤緊張的機(jī)器上可能直接把磁盤寫滿導(dǎo)致業(yè)務(wù)停擺。處理辦法有三板斧第一分批刪除控制單批大小日志產(chǎn)生速度自然回落。第二如果業(yè)務(wù)允許臨時(shí)調(diào)大日志緩沖或切換binlog格式比如從ROW格式調(diào)整但注意這會(huì)影響其他邏輯不建議輕易改動(dòng)。第三條是在磁盤規(guī)劃和監(jiān)控上做文章保證日志目錄所在磁盤有足夠余量。真實(shí)項(xiàng)目里最常用、最穩(wěn)妥的還是分批刪除每批影響行數(shù)5000~20000批間sleep幾秒既控制日志量也給主從同步留出追趕空間。配置文件再優(yōu)化也替代不了分批這個(gè)動(dòng)作。6. 再看一個(gè)完整案例清理過期訂單講完理論和排查用一個(gè)貼近真實(shí)業(yè)務(wù)的完整案例把流程串起來。需求背景某訂單表orders有約3000萬行其中120萬行是“已取消”且超過180天沒有變更的舊訂單需要清理騰出存儲(chǔ)空間并提高查詢性能。第一步備份mysqldump -uops -p commerce orders \ --wherestatuscancelled AND updated_at DATE_SUB(NOW(), INTERVAL 180 DAY) \ /data/backup/orders_cancelled_before_$(date %Y%m%d).sql第二步驗(yàn)證條件與數(shù)據(jù)量SELECT COUNT(*), MIN(id), MAX(id) FROM orders WHERE status cancelled AND updated_at DATE_SUB(NOW(), INTERVAL 180 DAY);確認(rèn)行數(shù)在百萬級(jí)別后檢查執(zhí)行計(jì)劃。如果type為ALL先建立聯(lián)合索引ALTER TABLE orders ADD INDEX idx_status_updated (status, updated_at);第三步分批刪除。這段腳本可以用存儲(chǔ)過程實(shí)現(xiàn)循環(huán)刪除DELIMITER $$ CREATE PROCEDURE batch_delete_old_orders() BEGIN DECLARE affected_rows INT DEFAULT 1; WHILE affected_rows 0 DO DELETE FROM orders WHERE status cancelled AND updated_at DATE_SUB(NOW(), INTERVAL 180 DAY) LIMIT 5000; SET affected_rows ROW_COUNT(); COMMIT; DO SLEEP(2); END WHILE; END$$ DELIMITER ;第四步驗(yàn)證結(jié)果。確認(rèn)DELETE影響行數(shù)接近備份時(shí)的COUNT再巡檢從庫延遲、磁盤空間、慢查詢等指標(biāo)。第五步根據(jù)實(shí)際業(yè)務(wù)需要決定是否優(yōu)化表空間。由于這次刪除只占全表的4%左右我沒有執(zhí)行OPTIMIZE TABLE因?yàn)榛靥盥什桓呖臻g釋放意義有限也避免了維護(hù)窗口的系統(tǒng)負(fù)載。這就是“不做多余操作”的取舍——技術(shù)與業(yè)務(wù)目標(biāo)匹配才是最好的方案。7. 我踩過的坑和最后想說的話寫DELETE相關(guān)的SQL技術(shù)難度真的不高真正的難度在于“敬畏數(shù)據(jù)”。我入行的第三年就闖過一次禍在測試庫上調(diào)試存儲(chǔ)過程一時(shí)疏忽把一條DELETE的WHERE條件寫漏了一層誤刪了將近半張配置表。當(dāng)時(shí)因?yàn)橛袀浞莼謴?fù)花了兩個(gè)小時(shí)算是僥幸沒有造成大影響。但那次之后我養(yǎng)成了幾個(gè)雷打不動(dòng)的習(xí)慣現(xiàn)在分享給你。第一DELETE必須寫WHERE除非你百分之百確定要清空整張表。第二DELETE之前必走SELECT驗(yàn)證這是流程的一部分不是效率低的表現(xiàn)。第三重要數(shù)據(jù)刪除必須放在事務(wù)里任何時(shí)候給自己留一個(gè)ROLLBACK的余地。第四大批量刪除一定要分批這不是性能優(yōu)化是生產(chǎn)安全。SQL里的DELETE是一把鋒利的手術(shù)刀用得好可以精準(zhǔn)切除病灶用不好就是傷及無辜。這篇內(nèi)容里的每個(gè)技巧和習(xí)慣都是實(shí)戰(zhàn)里用教訓(xùn)換來的。刪數(shù)據(jù)這事技術(shù)越熟練越容易大意反而是那些時(shí)刻保持警惕的人才能安安穩(wěn)穩(wěn)地寫完每一條DELETE。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
欧美九九99久久精品| 中文字幕欧美日韩三级| 日韩欧美偷拍美女视频| 一区二区三区视频| 在线一道啪| 国产精品一区二区密臀| 久久久久亚洲一区女同性恋中文字幕| 久久大香蕉手机高清| 岛国黄色短视频| 啊啊啊啊啊啊在线| 中文字幕av片| 亚洲色图综合网| 久久少妇视频| 欧美色图成人网一区二区| 久久丁香| 六月丁香久久| 玖玖婷婷五月天| 亚洲欧美精品福利在线| 亚洲AV无码AV吞精久久久久| 波多野结衣AV无码一区| 亚洲强奸乱伦影视网| 久久久久亚洲三级电影| 欧美亚洲中文| 久久久新亚洲AV| 九色黄站| 久久精品国产99精品亚洲蜜... | 国产精品久久久久中文字幕| 亚洲无码太久| 麻豆这里只有精品| 日韩性爱小视频在线观看| 日韩精品在线视频,日韩精品……| 国产精品电| 亚洲九九爱| 婷婷九月国产| chaopen97久久| 午夜福利 成人 91| 97欧美| 1024精品在线| 亚洲网站一区二区在线| 亚欧毛片基地国产毛片基地| 偷拍 欧美 日韩| 人妻久久一区二区三区| 99re在线| 日本性感人妻91| 日韩偷拍一区二区三区 | 久久久国产精品人妻丝袜| 日本天天人人狠狠在线日美女| 久热婷婷| 在线亚洲精品久久久| 四虎884a| 中文字幕精品亚洲熟女| 日韩日韩日韩-国产乱码精品一区二区| 伊人久久亚洲中文字幕不卡| 国语精品对白| 26uuu成人影片| 超碰在线人妻中文字幕| 欧美日韩操逼动图| 91男女啊啊啊| 亚洲欧美日产国产91毛片| 中文久久96| 很狠操| 亚洲无码一区成人免费午夜| 黑人美精品 A片| 无码少妇精品一区二区60岁老人| 欧美性,色九九| 大乔未久88一区| 四虎精品一区| 狠狠婷婷亚洲中文综合久久| 亚乱色| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 五月天婷婷影院| 亚州操操穴网| 日韩精品电影| 在线国产福利网址导航| 五月婷婷六月丁香| 日本男人插女人的逼黄色| av草草在线电影| 久久啊啊| 黄片www.| 97碰碰日本乱偷人妻中文的| 亚洲资源站| 亚洲成人精品在线一区| 精品一区96| 欧美在线亚洲| 岛国视频免费在线观看| 自拍二页| 91老女人| 狠狠色婷婷7777久| 激情小说亚洲视频| 熟女这里只有精品6| 无码视频黄色网战| 超碰这里只有精品| 欧美乱伦专区| 婷婷久久综合| 蜜臀久久99'精品久久久| 综合伊人激情| 91人人爽人人爽人人人,gav福利视频导航,日韩欧美亚洲国产字幕四区 | 91精产一区二区三区| 国产福利影视| 好看的久久不射无码影视影院| 99热精品在线观看| 亚欧Av| m欧洲一级午老| 免费a v| 狠狠干综合| 男人的天堂三级| 国产欧美日韩一区二区三区| 69精品人人人人| 九九综合九九综合| 亚洲天堂区| 色97欧美| 内射中出日韩在线观看视频| 又粗又长又爽在线观看| 久草男人天堂| 91爆操视频| 9长久久精品| AV在线性爱| 激情图片亚洲色图| 性影在线视频| 亭亭在线资源| 探花一区在线| 在线看片国产精品每日更新| 亚洲精品欧美专业| 国产亚洲性生活视频播放| 91九久| 久久精品一区二区| 高清不卡国产| 久久精品久久久久久久久| 九九热免费国产视频婷婷伊人五月 | 精品人妻一区春色| 精品国产肉丝袜在线拍国语| 玖玖资源视频一区二区三区| 国产乱伦一二三区| 91亚洲欧洲| 福利风月五月天影院| 老熟妇91| 久久久久ab| 永久免费发布性爱网| 亚洲91网站| 粉嫩绯色AV一区二区在线| 久久精品女同亚洲女同13| 激情五月天视频| 另类天堂| 新精精品久久精品| 久久人妻丝袜一区二区三| 一区二区影视| 啊啊啊啊在线观看网址| 久久久免费一级黄片| 久久大香蕉97| 久久人爽| 欧美日韩国产传媒在线精品| 眼镜人妻101.com| 一区二区国产视频在线观看| 日本3级一区二区免费| 九九九色| 亚洲狠狠入| 婷婷伊人一区| · —级AA伦aa坐爱午夜极速ⅴA一区天天噪天天噪天天噪 | 精品国产乱码久久久A| 偷窥自拍亚洲色图| 中文字幕一区二区韩| 91制服丝袜| 操逼内射干逼白丝91| 丁香六月东京热| 少妇久久久久久| 久久综合av| 不卡超碰护士AV在线免费播放| 中文字幕人成乱码熟女香港| 亚洲熟女av中文字幕| 免费公开人人操| 校园春色五月天| 曰韩少妇无码| 成人色女网| 99久re热视频精品98| 五月天久久综合网| 久久女人| 精品在线78| 欧美日本天堂| 熟女中出视频| 欧美天堂日韩三级国产传媒| 国内精品999| 大香蕉婷婷| 国产第25页在线观看| 国产精品爆乳懂色蜜乳| 日韩电影在线观看网址| 花花AV导航| 成人AV在线网站| 天美一区在线| 91九九九吃| 精品人妻一区二区三区四区石在线 | 丁香7月婷婷| 免费人人搞97| 国产一区二区三区不卡手机在线| 91啪9色| AA丁香综合激情| 亚洲熟女中文字幕在线| 亚洲国产激情国产av| 老司机老司机午夜影院| 亚洲最新a在线观看| 欧美日韩另类在线| 少妇一级婬片免费放一级a性色.| 欧美性爱精品七区| 男人的天堂午夜av| 亚洲中文字幕久久人妻| 午夜超爽| 免费作爱一级视频| 国产亚洲精品自在线亚洲情侣| 殴美在线AⅤ| 亚洲人妻在线一区| 人妻少妇av在线观看| 国产日韩欧美亚洲精品95| 一起草欧美| 9丨亚洲一区二区在线| 青娱乐淫乱1314| 欧美成人一级麻豆| 女同女同恋久久级三级| 国产亚洲美日韩Aⅴ中文字幕无码成人| 婷婷av在线中文字幕| 日本熟妇浓毛hdsex| 亚洲精品久久久久毛片A片拉屎| 97天天日| 国产福利电影| 一级久久久久久久久久久| 在线强奷到舒服的无码视频| 婷婷五月天小说| 人妻激情偷乱视频一区二区三区 | 黄色网址在线免费观看| 狠狠综合网| 嗯啊啊啊轻点视频 | 99热9| 五月天伊人| 夜夜草我| 99超碰碰| 欧美亚洲厕所精品偷拍91| 97精彩视频网站| 九九毛片这里只有精品| 人妻素股| 亚洲高清少妇| 欧美综合网站999| 日韩性爱视频在线免费观看| 97人肏| 中文字幕丰满子伦无码专区在线视频最新 | 99热色这里只有精品| 大香蕉欧美伊| 激情四射五月天| 97天堂| 五月婷婷激情网| 亚州色国| 人妻81p| 亚州综合图片| 成人97人人超碰人人| 日韩国语字幕| 少妇综合| 人妻在线臀日韩| 97天堂| 偷窥自拍亚洲色图| 国产精品白丝| 天美av在线观看| 精品国产乱码久久| 翘臀vidoes| 97在线免费| 九九九九88| 色综合一本| 欧美婷婷久久| 在线国产福利网址导航| 影音先锋每日最新资源在线观看| 玖草在线视频| 手机看av网站在线看| 男人的天堂2010| 伊人精品视频| 国内精品不卡无毒99999| 国产黄色 A 片免费看| 男人的天堂com| 天天日天天干天天整| 激情综合婷婷| 午夜人妻精品综合在线| 激情四射婷婷四五月天| 熟女丰满人妻一区| 99国产精品自在自在| 婷婷三区| 日韩美女高潮喷水视频| 无码高清专| www欧美性爱| 一区二区免费电影久久| 日韩av电影成人在线| 日韩一级片在线看| 99久久九九| 啊啊啊com| 激情色色| 偷拍片久久| 国产av高清版| 夜夜操91744565| 大香蕉综合久久| 国产精品午夜成人福利| 老司机午夜福利视频一区二区| av在线观看不卡网站| 天堂射| 亚洲欧洲偷拍一区| 亚洲中文日韩欧美大香蕉视频| 国产精品对白自产拍| 闷骚老熟女15P| 97久久精品亚洲| 欧美日韩操逼嗦吊| 在线无码操| 亚洲国产一区二区入口| 精品人妻一区二区三区四区石在线| 丝袜天堂网| 在线免费试看60秒| 人妻爽爽啪视频| 囯产精品一区二区三区线|亚洲人成无码网WWW动漫|国产精品免费一级... | 熟女熟妇一区二区三四区| 一区二区 电影 亚洲| 亚洲国产精品久久久久婷婷青年| 亚洲夜色在线| 97视频在线观看播放与子乱对白在线……| 狠狠激情综合狠狠操中文字幕| 亚洲AV无码成人精品久久| 欧美系列在线一区二区| 国产欧美一区激情交| 婷婷色在线| 中文字幕少妇色| 欧美视频第二页| 大香蕉在线SuP| 色97国产69香蕉| 亚洲丝袜诱惑| 国产精品盗摄 偷窥盗摄| 国产欧美成人第一页在线观看| 人妻 丝袜美腿 中文字幕| 国产一级αv免费看片| 丝袜 亚洲 偷拍| 欧洲小说色图视频另类| 91网九色蝌蚪操熟女| www.狠狠干.coom| 福利操逼| 日韩高清黄片| 亚洲人人夜夜澡人人爽| 国产9区| 久久高清欧美国产| AV中亚| 美女天天干| 91美女精品| 色综合色色| 操淫穴亚洲五月丁香| 99999精品视频| 一本道综合色图| 97欧美日韩中文| 日日干夜夜欢| 亚洲精品白浆高清久久久久久| 啊啊啊com| 亚洲女优有码无码高清| 天天色综亚洲91污| 日夜干射色啊| 中亚黄色三级大片| 中文AV制服乱伦| 激情五月婷婷综合| 一区二区不卡免费| 成人精品一区二区91毛片不卡| 天天日天天插| 暴力av在线| 久久久国产亚洲精品系列| 性色高清在线| 99热| 91肏屄网| 激情熟女12P| 男人的天堂激情| 精品日韩人妻视频| 91jk色拍| 人人摸.人人色| 欧美白嫩在线放| 波多野42部无码喷潮在线观看 | 在线国产一区二区av| 人妻 制服 日韩 中文 在线| 为用户提供免费看黄网址在线观看| 日本亚洲vr欧美不卡高清专区| 国产久久久久久| 伊人久久在线视频观看| 国产午夜精品在线观看| 天美麻花大全视频| 黄色乱论网站| 色97欧美| 天堂综合| 中出后入| 欧美精品久久| 久悠悠av| 久久国产AⅤ| 小少妇| 色婷婷导航| 一区二区三区视频在线观看免费| 岛国黄| 国产 日韩 欧美高清| 综合av社区| 国产精品懂色tv影视免费观看| 久久成人东京热人妻| 加勒比无码毛片| 天堂亚洲精品| 久久老女人| 狠狠久久手机视频精品| 强奸乱伦大香蕉| 亚洲成人一区二区精品| 亚洲欧美国产日本一区二区三区| 午夜丁香| 国产精品午夜成人福利| 中文字幕一区二区三区蜜桃视频| 玖玖超碰熟| 久久黄黄黄| 另类欧美色| 欧美性天天| 91啦人妻| 在线观看日韩av不卡| 桃花色涩综合影院| 久久啊哟| 久污| 欧美精品97| 国产福利电影| 免费av大片| 99热| 蜜臀久久久| 人人妻天天做天天爽| 午夜噜噜噜| 色香AV| 最新三级网址| 欧美在线视频99| 日韩天堂av电影在线观看| 久久久久密臀视频| 91精品导航| 成人无码在线视频网站| 欧美 亚洲 偷拍自拍| 美女超碰978| 亚洲天堂人人妻| 午夜超爽| 99热这里都是精品| 亚洲欧洲无码一区夜| 99rre在线精品99re8| 日本伦乱九九九综合| 日韩国产乱子伦App| 69超碰综合| 1024午夜激情男人的天堂| 国产伦精品| 97人人操人人摸| 婷婷月色| 69久久| 亚洲图片色图欧美另类| 日韩偷拍色图| 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 逼操网站| 亚洲熟女综合| 综合97| 亚洲AV成人在线| 日韩中文9| 91亚洲色人| 97精品国产97久久久久久免费| 久久久精| 1769精品一区二区三区| 人妻黑丝袜电影| JIZZJIZZ亚洲女人被躁| 老熟女91av| 欧美色图第一页| 91久久99久久91熟女精品| 91网站18+| 日本欧美一区二区三区免费| 大香网伊人久久综合网eew| 蜜臀久久99精品久久久电影| 日韩精品.久久精品.AV女优.天美传媒| …中文字幕亚洲乱,97人妻无码费视… | 一二三区操逼国产91| 色优久久| 97亚洲中文| 久久99热这里只频精品6学生| 青青草国产一区二区三区| 综合操逼| 日韩专区久久久| 国产AV无码AV| 欧美人妖内射| 色性综合| 国产极品粉嫩馒头一线天av| 日日干日日操五月天伦理视频| 秋霞网无码| 另类亚洲图色| 国产剧情AV不卡在线观看| 欧美日韩黄片精品在线| 欧美亚洲美少妇一区二区| 亚洲色图尤物视频| 任你干在线视频| 国产浮力影院第1页| 热热色色综合| 99亚洲天堂| 蜜臀一区二区三区亚洲最新章节在线观看 - 高清蜜臀一区二区三区亚洲全集播放 | 天堂无码精品国产久| 久久久精品中文字幕麻豆| 色青青久久影视| 亚洲欧美综合图片| 天天摸夜夜摸| 美女写真| 人人妻人人玩人人澡人人爽| 插老姨肥穴| 欧美视频一区二区在线| 99热销国产这里有精品| 精品v1区| 一级A啪啪啪啪| 久久久久国产精品久久久| 亚洲综合113页| 成人 日本A片无码8888| 黄页av| 97超碰亚洲| 蜜桃无码AV一区二区| 婷婷综合伊人一区| 91欧美性| 亚洲 欧美 中文 日韩超碰| 国产三级在线现体验区| 淫纸中9区| 97se综合网| 黄aaaaaaaaaaaaaaaaaa色网站| 91爱| 不卡六六在线91| 九九热免费国产视频婷婷伊人五月| 收看日本人日bb| 男人的天堂久久| 欧美熟女妇同| 在线观看av区| 久久黄色性爱视频| 自慰白浆在线观看| 中文字幕人乱码中文字的预防方法| 家庭乱伦国产| 91精品导航| 日本久久综合| 久久久久9久久久久| 岛国艾薇凹凸视频天堂| 亚洲国产成人7777| 欧美色另类| 色哟哟av网址| 白丝jkav| 日韩影片中文字幕一区二区三区| 日韩AV熟女乱伦| 五月婷婷丁香六月丁香| 久久老女人| K8久久久久| 亚洲蜜臀视频精品久久| 久婷婷一区| 热久久91婷婷| 好吊妞转入那个网| 欧美在线播放aaaa| 国产三级多多影院2022国产AA一级毛片无码 | 美日韩男女操屄视频| 五月天婷婷社区| 91色人| 欧美日韩天堂| 亚洲视频二区 | 久久九操在线观看| 91爱看| 中文字幕88av在线| 懂色AV中文| 日韩熟女精品无码专区一区二区| 色色99| 桃色五月天| 久热婷婷| 久久香蕉国产传媒一区剧情天美| 99热综合| 好淫网一二三视区| 日本天堂网| 亚洲情色第一页| 亚洲日韩AV视色| 欧美黄页在线| 天美麻豆精品视频99| 亚洲性爱高潮影院| 成人精品电影| www.99热在线只有精品| 亚码人妻| 后入合集| 欧美高清色| 97色网| 操逼逼一区视频| 三级AV入口| 久久av成人无码免费| 色综合久久88色综合久久天天| 人人操人人操草草| 日日夜夜狠狠| 亚洲AV免费在线观看| 第二页中文字幕| 精品网站99999| 亚洲极品| 欧美中出| 欧美操逼熟女| 婷婷综合久久| 天天天乱色综合全| 亚洲欧美视| 五月丁香激情四射| 超碰无码加勒比| av国产无码| 四虎永久在线精品免费网址 | juliaann欧美丝袜办公室| 97碰| 国产精品无码在线| 天美传媒av 在线| 牛牛久久国产精品视频一二三| 人妻无码视频一区二区三区久久| 精品国产乱子伦一区二区三区,精品一| 久久人妻| 欧美强奸一区二区诱惑| 精品无码久久久| 中文欧丝袜诱惑| 色汉综合| 久精品无码av一区二免费国产在线观看 | 狠狠色狠狠色狠狠五月| 国产剧情一区在线观看| AV99热18这里只有精品| 国产精品久久久久久久久久久久久久吹| 色吧 综合| 韩国一级婬片A片AAAAA| 免费人人搞97| 天天综合网~91| 色久桃花影院在线观看| 黄页18禁| 国产日本久久免费精品| 91黑丝在线| 人人玩人人添人人澡免费| 日韩不卡a级视频专区| 九九九网页| 2017天天操天天日| 亚洲欧综合另类无码一区| 欧美久久草熟女| 天天影视91看看| 双插性欧美一二三区| 四虎永久在线精品免费网址| 另类老少妇| 国产大陆天天艹| 日韩中字av一区| 欧美亚洲国产91在线| 熟妇xxxxx性春色| 99re在线观看| 午夜精品视频777| 国产精品情侣啪啪| 蜜臀99久久国产| 无码视频黄色网战| 毛片麻豆91糖心精品毛情片| 日韩精品色呦呦| 蜜臀av中字字幕网站| 一区二区三区四区理论片| 熟女人妻一区二区三区| 少妇丝袜在线观看AV| 亚洲av综合色| 大香蕉之青青草原| 可以在线观看的黄色网址| 国产熟女一区二区丰满| 亚洲国产精品无码AV久久久| 伊人97色天使| 日韩免费高清大片在线| 亚洲人在线| 欧美Ⅴ性爱| 伊人色综合超碰| 日韩福利电影网| 91AV老熟女视频| 沈阳熟女高潮对白视频| 蜜桃精久三区| 中国一级操逼视频| 欧美青青草视频| 久久无码电影| 男人天堂毛片| 欧美少妇熟女| 白丝被操91| 欧美999999| 两性综合网| 91成人无码| 亚洲国产一区二区三区在线| 亚洲AV永久无码一区仙野| 色五月激情AV在线| 国产高潮AA片免费看| 丝袜综合网| 狠狠久久四虎| 欧美性爱免费短视频| 在线黄色污污网站| 国产又大又硬又长又粗| 九九九九精品精| 夜夜嗨AV蜜臀av| 思思热免费在线视频| 欧美性少妇| 亚洲情色五月天 | 天天综合色| 百度百度日本操逼| 色偷综合| 亚洲欧美激情另类色图| 无码人妻精品一区二区三区99不卡| 日韩电影天堂视频一区二区| 丁香九月激情啪| 日韩一级欧美一级国产一级台湾| 亚洲欧美日韩电影网站一区 | 天天综合精品| 久久久久亚洲?V片无码V| 淫穴高潮色图| 德国一二三不卡| 熟女人妇一区二区三区| 偷拍亚洲| 视频在线观看青青99国产| 99国内精品| 亚洲古典另类欧美在线| 97超碰碰| 人妻夜爽夜夜爽| 国产乱弄免费在线视频。| 国产精品无码AV网站| A片大香蕉在线| 国产精品一二三| 老熟女熟妇| 亚洲人人操| 嫩草影院在线观看精品 | 操我啊啊啊啊啊| 午夜一区| 99re公开精品免费视频| 9Ⅰ老熟女| 欧美熟女逼久久久久久| 91色黑人少妇| 这里只有精品久久| 白嫩国模丰满一二三区| 综合av社区| 啊啊啊啊啊啊好多水| 精品久操| 日韩欧美偷拍美女视频| 开心五月婷婷| 在线观看精品国产免费| 高清有码一区二区| 久久这里只| 久久久无码精品人妻二区| 人妻天天爽| A啊啊在线观看| 欧美熟妇乱码在线一区| 国产11页| 夜夜操二区| 午夜男女爽爽爽在线视频| 亚洲精品天堂久久A∨51成人漫| 欧美99热| 激情综合五| 亚洲精品国产熟女| 欧美片第一页| 性天堂| 日韩精品 欧美激情| 久久成人网站| 人妻无码视频一区二区三区久久| 亚洲精品欧美专业| 国产农村妇女精品一| 91九九九馒头| 九九九网页| 内射日韩大臀美女| 操人妻丝袜高跟| 日韩一999精品| 欧美专区在线| 性色高清在线| 亚洲国成人情色好看电影| 草b在线| 久久久9品一区二区三区| 亚洲少妇激情一区二区三区| 精品国产乱码久久久久久久| 伊人四虎综合| 91国产丝袜美女| 啊啊啊啊啊舒服| 97国产中文| 久久久精选| AV女优男人的天堂| 欧美亚洲中文| 九九九久千久久激情蜜桃在线看 | 久久首页| 日韩欧美成人午夜福利| 色婷婷六月丁香七月婷婷| 青娱乐淫乱1314| 亚洲成a人v欧美综合天堂下载| 老鸭窝成人免费毛片视频| 婷婷色香伊人| 欧美人人操人人插| 男女激情黄色网址| 91超级碰| 射丝袜高跟鞋99| a片亚洲一本通视频| 丰满欧美放荡少妇在线| 精品欧美乱码久| 丰满美女一级毛片在线播放| 日韩精品国产一区二区| 亞洲久久直播| 国产精品色色| 9热9热综合网| 啊啊啊啊在线播放| 理论久久婷婷网8| 高清国产无码av| 国产乱人伦AVA麻豆软件.| 婷婷五月色| 青青草色插素人| 麻豆av一区二区| 国产最火爆久久国产网站网站| 日本色色色视频| 久久色人体| 在线免费试看60秒| 91综合中文字幕| 国产白嫩漂亮KTV在线| AV 少妇 人妻 偷拍| 青青草伊人久久| 91国产丝袜白虎| 久久精品午夜国产亚洲AV无码| 强奸乱伦αv片| 九九英色视频| 天天干人人乐| 大香蕉强奸乱伦| 亚洲另类久操网| aV中文麻| 亚洲啪啪视频一区二区| 欧美老熟另类| 欧美日韩小说| 色色色天美视频| 中文字幕版| 熟妇色99| 蜜桃无码AV一区二区| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 亚洲熟妇A V黑人| 日韩欧美国产一区二区三区四区| 国产伊人自拍| 九九操久久国产免费视频| 国产二区视频在线观看电影| 爱爱动态120秒| 大茄子熟女AV导航| 人人射人人操人人摸| 啊啊啊不要啊啊受不了了视频在线| 欧美成人精品一区| 牛黄色久午久| 夜夜青青无码影院| 超碰成人公开| 大香蕉伊在线久草麻豆天堂故事| 91黑人狂躁丰满熟妇| 久久婷婷六月综合| 加勒比无码毛片| 欧美强奸一区二区诱惑| julia中文字幕在线观看| 日韩激情无码影院| 中文字幕亚洲欧美在线不卡| 91操熟女| 一二三区在线| 一区二区三区麻豆| 狠狠色综合网| 午夜欧美精品久久久| www.色综合| 91中文字幕在线观看| 成人性爱全视频观看| 欧亚揄拍偷拍精品视频| 成人性爱视频在线看| 欧美日韩一干二干| 日韩熟女乱伦中出| 国产精品久久久999| 逼逼逼逼操操操操操操操操操午夜剧场| 91黑丝美女| 天堂а√在线最新版在线| 品亲网欧美品亲网| 中国国国产一级特黄毛片| 蜜臀无码一区二区| 国产情侣自拍在线播放| 超碰4A| 国产丝袜视频| 中文乱码字字幕在线第5页| 亚洲宗合电影| 操逼1区| 清纯唯美综合亚洲| AV 少妇 人妻 偷拍| 亚州一区二区| 国产福利夜| 草草影院最新网址| 人妻丝袜肏逼| 成人片在线播放| av中亚| 国产精品视频播放| 女人午夜视频777| 蜜臀久久99精品久久久久久-DVD| 91 丝袜在线| 久久成人国产| 欧美东京热青青草| 色av中文字幕| 91干熟女| 污色区网站| 夜色97| 67914亚洲精品| 久久欲| 欧美性色欧美| 亚洲美欧999| 亚欧Av| 艹我哪美一区无码| 日韩av无码网站| 精彩久久中文| 99re6国产精品99re在线| 性影在线视频| 78久久| 无码男人天堂| 国产日本熟女顶级一区二区三区视频| 无码丰满熟妇一区二区浪潮AV| 亚洲激情欧美色图 | 超碰中文字幕人妻草一区| 999国产精品999| 久久在线观看免费视频| 亚洲亚洲亚洲天堂天堂| 香一区二区三区| 99久久久无码国产精品性男| 日韩欧美大片免费高清啪啪| 蜜桃臀一区二区三区久久| 看黑人AV不卡| 婷婷91| 人人妻人射| V A在线| 精品人妻久久久| 天天综合网AV91| 另类综合另类| 欧美成人性爱视频大全| 久久精品国产亚洲AV高清演员表| 天天肏夜夜肏| 成人精品水蜜桃久久久久久久| julia在线观看久久| 亚洲中文字幕av| 无码av永久免费专区网站| 思思久热在线精品66| 婷婷丁香人妻| 熟女熟妇伦久久影院毛片一区二区 | 亚洲色图欧美色图制服丝袜| 婷婷六月色| 天天干人妇| 午夜影美女日鸡鸡天天视频国产| 亚洲熟伦熟妇AV无码春色| 嗯嗯不要视频| 欧美自拍网| 9九九国产| 97天天插| 久久久内射良家| 素颜老阿姨乱情色| 啊啊啊不要啊啊受不了了视频在线| 97色五月天完| 91麻豆天美国产欧美| 欧美色色色| www.婷婷| 国产毛片精品一区二区色欲黄A片| 国模少妇一区二区三区| 国产精品一区二区三区,亚洲综合| 国产成人99久久亚洲综合| 国产无码久久高清| 国产区日韩区在线观看| 99久久久无码国产精品性啊聊| 天堂性色| 中欧人妻丝袜中文字幕| 97视频在线看| 久久成年片色大黄全免费网站| 东京热大香蕉| 人人操人人93| 无码不卡八戒| 国产乱伦亚洲| www.av在线视频| 日本欧美一区二区三区免费| 色黄色美女大长腿午夜视频| 综合在线导航一区| 欧美成人午夜免费福利785| 女人爽到高潮潮喷18禁网站| 午夜一区| 射 色综合| 在线人妻熟女一区二区三区四区五区| 毛片17S| 日日夜夜噜| 亚洲区限制级 99| 亚洲图片视频小说| 青草精品视频-日本久久久久网站| 九九九九九九九九九国产精品| 最近二区三区视频大全| 日韩精品字幕| 18禁免费视频| 国产97色在线| 亚洲美乱| 男女激情中文字幕| 丝袜天堂网| 欧美美女视频| 夜夜草我| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 欧美大色交| 精品在线78| 乱伦熟女论坛| 91在线精品| 午夜精品一区二区三区三上悠亚| 91偷拍欧美亚洲| 人乳av| 密乳视频在线| 狠狠色狠狠色狠狠五月| 亚洲黑丝在线| 亚洲 另类 丝袜 自拍 动漫| 上床啊啊啊| 丰满人妻一区二区三区性色| 91呆哥人妻| 歐美一級亂黃99在綫精品| 岛国不卡超碰护士AV在线播放| 亚洲男人在线观看天堂| 免费少妇一区二区| 亚洲AV免费在线| 久久骚少妇| 亚州综| 国产中文精品一区二区在线观看 | 九九九九9999| 亚洲乱码国产乱码精网站| 你操综合| 96精品久久久| 亚洲图片色图欧美另类| 日日干日日| 色香伊人| 欧美成人一级麻豆| 色丁香五月婷婷| 啊啊啊男女| 天天综合97| 国产www色在线观看| 亚洲 图片 综合91| 久久精品综合| 精品久久久久久AV无码| www.久久99| 精品人妻伦一区二区三区久久| 天天综合97| 人人扣人人操| 成人精品欧洲亚洲| 国产精品成久久久久午夜午夜| 中文字幕 国产 精品| 日本99一区二区| 久久男人的天堂| 亚洲午夜av| 亚洲诱惑天堂 | 有码人妻系列| 人人妻人人澡人人爽人人精品浪潮 | 精品色色| 第45页一区二区| 亚洲情色 自拍| 影音先锋新男人| AV天天综合| 亚洲男人天堂2017| 99热只有这里有精品| 久啪| 国产精品麻豆免费视频| 精品免费1| 91丨人妻丨国产丨丝袜| 97人人射| 国产伊人精品在线| 欧美日韩第一页| 不卡六六在线91| Blackedraw视频一区二区| 日韩不卡网操逼中文字幕日韩| 国内毛片欧美香蕉精品| 久久熟女人| 99无码狠狠久久| 日韩pv中文| 国产真实子伦对白| 少好三P| 久啪视频| 久久曰曰| 欧美日韩制服| 丁香五月影院| 神马久久午夜| 东北黄色电影| 天天干天天操天天操夜夜操天天操 | 色999五月色| 美女t无毒不卡不卡| 亚洲色啪| 97免费在线观看视频| 蜜臀av在线播放一区二区三区| 亚洲欧美另类小说| 桃色六月天| 国产性爱在线视频一区二区| 色制服丝袜夫妻av一区| 在线小视频| 国产强奸无码乱伦| 91老司机在线视频免费观看| 97超碰人人操人人操| 国产污视频麻豆传媒一区二区| 亚洲在线网站| 九九国产热| 熟女六十路| 一区二区三区四区理论片| 久久99国产综合精品女同| 男女做爰猛烈动高潮A片免费应用| 97免费免费视频网| 日本色色色视频| 91狠狠综合久久| 亚洲熟妇图片| 日韩国产不卡在线视频| 天天在线91| 超碰超碰95| 伊人久久在线视频观看| 热G综合热G中文| 日韩女优中文字幕| 三级特黄60分钟播放| 天天操福利视频综合网站| 中文高清一区二区的| 俄罗斯一区二区视频在线观看| 神马九九九| 欧美日韩m| 浪人综合网| 久久超碰com| 欧洲与亚洲欧美精品中文字幕| 伊人色综合网电影| A级国产欧美激情在线| 香蕉大久久久| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 男人女人18禁片免费看网站| 亚洲日韩熟女人妻高清在线| 丁香六月激情| 国产亚洲女v在线观看| 91精品人妻| 色哟哟av网址| 日本天堂网| 综合五月婷婷| xxxx网站亚洲精品| 青青草国产欧美非洲黑人| 91少妇通奸网站| 超碰97资源大奶| 综合网色| 色狠狠 - 百度| 99无码狠狠久久| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 熟女乱伦二区| 成年人三级黄色片视频| 91精品91久久久中77777| 日本顶级天天操狠狠操夜夜操中文字幕| 欧美淫穴| 国产成人无码久久精品| 日本狂喷奶水在线播放212| 亚洲精品97| 国产精品一区二区三区在线| 色老牛| 超碰在线人妻不卡| 99国产精品人妻人伦| 婷婷色中文字幕| 国产精品久久久久久 百度| 高清在线不卡一区二区 视频| 青草一区二区| 亚洲丝袜二区在线| 大香蕉92| 内射黑丝袜| 午夜毛片高清免费不卡| 欧美激情超碰777| 人妻精品综合中文字幕在线 | 欧美视频在线第3页| 亚洲第一页欧美| 伦激情人妻另类人妻| 欧美日韩淫加| 国产黄片精品在线| 人妻少妇无码| 亚洲一区操| 日韩美女久久一区二区三区| 中文字幕在线观看视频www| 亚洲黄色网址视频| 国产性爱在线视频一区二区| 国产偷拍网站| 九九九九精品九九九九| 亚洲欧美97| 欧美九九九| 精品国产乱码久久久| 97欧美日韩精品| 综合亚洲网| 欧美天天综合在线| 精品人妻一区二区三区在线视频不卡| 超碰97久| 亚洲性天堂| 久久这里只有精品9| 亚洲欧美人妻| 秋霞午夜成人福利片片| 欧美一级在线观看成人| 三上悠亚在线毛片91| 日本久久女同性恋视频| 久久亚洲中文字幕视频| 亚洲精品国产无码高清| 亚洲一区二区久久久久| 国产精品一二三在线看|