欧美成人午夜精品久久久,国产?V天堂一区二区三区,欧美精品va在线观看,亚洲一区二区三区免费在线观看,av无码精品一区二区久久,欧美性爱视频不卡一区三区,欧美乱人伦视频在线观看,国产一级牲交高潮

ARTICLE DETAIL

資訊詳情

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

MySQL海量數(shù)據(jù)批量刪除:5種方案與實戰(zhàn)踩坑指南

MySQL海量數(shù)據(jù)批量刪除:5種方案與實戰(zhàn)踩坑指南 咱們搞MySQL的十有八九都撞上過這么個需求線上有個幾千萬行的大表要刪掉其中大部分?jǐn)?shù)據(jù)。可能是一批歷史日志、一批過期訂單或者按某個業(yè)務(wù)維度清理無效數(shù)據(jù)。我見過太多新手上來就是一條DELETE FROM big_table WHERE create_time 2023-01-01然后執(zhí)行進(jìn)去數(shù)據(jù)庫瞬間卡死主庫連接打滿從庫延遲一路飆升最后鬧到要重啟實例。這篇文章就專門聊這個——MySQL里批量刪除海量數(shù)據(jù)到底有哪些靠譜路子各種方案適合什么場景實際操作中又會踩到什么坑。先說清楚一個核心認(rèn)知刪除海量數(shù)據(jù)的難點(diǎn)從來不在“刪除”本身而在刪除動作引發(fā)的一連串連鎖反應(yīng)。你要刪1000萬行MySQL要逐行標(biāo)記刪除、記錄binlog、維護(hù)二級索引、寫入undo log供事務(wù)回滾和MVCC使用。這些操作都會落在磁盤和內(nèi)存上加上行鎖、間隙鎖互相爭搶最終表現(xiàn)為數(shù)據(jù)庫性能斷崖式下跌。理解了這一層你就能理解為什么所有人都說“大表不能直接DELETE”了。這篇文章覆蓋的分批刪除、按主鍵范圍分段刪除、分區(qū)表清空、建新表切換、pt-archiver工具歸檔這幾類主流方案都是我實際用過的。我會把每個方案的原理講明白給出可以直接抄的SQL和腳本再把我踩過的坑一并列出來。適合正在為清理大表發(fā)愁的DBA、后端開發(fā)以及所有被慢查詢?nèi)罩緡樀竭^的同學(xué)。1. 先搞明白為什么直接DELETE會“刪崩”數(shù)據(jù)庫1.1 你刪的不只是數(shù)據(jù)還有一堆“隱形成本”很多人以為DELETE就是把磁盤上那幾行數(shù)據(jù)劃掉但實際上在InnoDB存儲引擎里一次DELETE消耗的資源遠(yuǎn)超你想象。咱們一條條拆。第一行鎖和間隙鎖的覆蓋范圍。一條不帶精確條件的DELETE比如DELETE FROM orders WHERE status expired在RR隔離級別下InnoDB會掃描所有匹配到的記錄并對它們加鎖。如果這個條件沒走索引那就是全表掃描加鎖等于把整張表鎖了個遍。就算走了索引大量行同時加鎖鎖沖突的概率也急劇上升直接影響同一張表所有其他讀寫請求。第二undo log膨脹帶來的連鎖反應(yīng)。InnoDB的事務(wù)隔離靠MVCCMVCC靠undo log保存歷史版本。你刪除多少行就要往undo log里寫多少條反向操作記錄。1000萬行的DELETEundo log隨便就是好幾GB。這還不是最要命的更要命的是這些undo log在事務(wù)結(jié)束前不能清理它們對應(yīng)的舊版本數(shù)據(jù)還會被其他事務(wù)讀到于是在repeatable read隔離級別下長事務(wù)大刪除組合會讓undo表空間暴漲到撐爆磁盤。第三binlog的傳輸放大。MySQL主從同步依賴binlog默認(rèn)情況下DELETE產(chǎn)生的binlog是statement格式一條SQL在主庫刷一遍、在從庫也要刷一遍。但如果你開了row格式很多生產(chǎn)環(huán)境為了數(shù)據(jù)安全都會開那么1000萬行就會生成1000萬條binlog記錄事件主從同步的網(wǎng)絡(luò)開銷、從庫應(yīng)用日志的CPU開銷立刻拉滿。我見過一個案例主庫刪了500萬行用了8分鐘從庫追了2個小時沒追上。1.2 二級索引和碎片刪完之后表反而“變大”了InnoDB的二級索引和聚簇索引是分開存儲的。刪除數(shù)據(jù)時聚簇索引里的記錄被標(biāo)記刪除但二級索引里對應(yīng)的索引條目不一定能及時回收。大量刪除之后索引B樹的葉子節(jié)點(diǎn)出現(xiàn)大量空位索引掃描效率下降物理文件.ibd不會自動縮小。結(jié)果就是你辛辛苦苦刪了5000萬行SELECT COUNT(*)確實變少了但磁盤占用一點(diǎn)沒降查詢速度和刪除前幾乎沒區(qū)別。后面我講“重建表”方案時你會看到這才是徹底清理物理空間的唯一出路。1.3 看清楚場景再選方案既然直接刪不行那就得找替代方案。但替代方案不是一根筋走到黑得看你具體什么場景。我把實際工作中常見的場景歸成三類你可以對號入座場景特征典型例子推薦方案刪少量數(shù)據(jù)幾萬行以內(nèi)清理一批用戶標(biāo)記的錯誤數(shù)據(jù)直接DELETE加上合適索引刪大量數(shù)據(jù)但希望保留表結(jié)構(gòu)、保留在線服務(wù)清理過期日志、過期訂單但表還要繼續(xù)使用分批DELETE、按主鍵分段刪除、pt-archiver刪掉大部分?jǐn)?shù)據(jù)、或要徹底釋放磁盤表內(nèi)數(shù)據(jù)基本都沒用了只留最近一小部分新建表切換、分區(qū)表清空這里頭的關(guān)鍵區(qū)別在于你要“溫和地刪”還是“徹底地?fù)Q”。如果是前一種重點(diǎn)是控制每次刪除的量、控制鎖和主從延遲如果是后一種重點(diǎn)是讓MySQL在極短時間內(nèi)完成“無痕切換”靠的是DDL級別的原子操作和元數(shù)據(jù)替換。2. 最通用的方案分批循環(huán)DELETE把大事務(wù)拆成小事務(wù)2.1 核心思路與SQL寫法分批DELETE的本質(zhì)是把一個大事務(wù)拆成N個小事務(wù)。每刪幾千行就提交一次鎖持有時間短、undo log及時釋放、binlog分批傳輸對在線業(yè)務(wù)的影響被壓縮到最小。這個方案不挑表結(jié)構(gòu)、不挑數(shù)據(jù)分布適用面最廣我建議所有場景都先從這個方案起步。最基礎(chǔ)的寫法是靠著主鍵ID范圍來分批DELETE FROM big_table WHERE id BETWEEN 1 AND 10000;執(zhí)行完后繼續(xù)刪下一批:DELETE FROM big_table WHERE id BETWEEN 10001 AND 20000;如果你不想手動算范圍可以選擇每次取一批要刪的主鍵ID然后用主鍵IN去刪除DELETE FROM big_table WHERE id IN ( SELECT id FROM ( SELECT id FROM big_table WHERE create_time 2023-01-01 LIMIT 5000 ) t );注意這里為什么套了一層子查詢MySQL不允許直接在DELETE的WHERE里SELECT同一張表的子查詢錯誤碼1093包一層派生表就能繞過這個限制。外層每次觸發(fā)會掃描到滿足條件的5000個ID然后刪除。這種方式不依賴ID連續(xù)比BETWEEN方式更通用。但它的缺點(diǎn)是子查詢本身也要掃描如果篩選條件沒走索引性能同樣會很差。2.2 批次大小怎么定別拍腦袋看三個指標(biāo)分批大小的選擇直接決定方案的成敗。批次太大會退化成大事務(wù)太小則刪除效率低下循環(huán)幾萬次能把人急死。我從實際操作經(jīng)驗里總結(jié)了三個參考指標(biāo)。一是看主庫的鎖等待和活躍會話數(shù)。單批次DELETE執(zhí)行期間SHOW ENGINE INNODB STATUS里面的History list length不能持續(xù)暴漲活躍會話也不能長時間趴滿。如果單批次5000行執(zhí)行時間超過2秒就要減小批次。二是看從庫的延遲情況。設(shè)置定時任務(wù)循環(huán)刪除的場景每次循環(huán)之間SLEEP幾秒鐘。用SHOW SLAVE STATUS觀察Seconds_Behind_Master如果延遲在增長說明刪除速度超過從庫應(yīng)用binlog的速度必須加大間隔或減小批次。三是看undo表空間增長速度。一次性刪太多可用SHOW GLOBAL STATUS LIKE Innodb_history_list_length觀察這個值代表未清理的undo日志量如果它持續(xù)高位不下降說明系統(tǒng)里有長事務(wù)或者刪除太快來不清理這種時候加大SLEEP時間。以一個線上案例說某張2億行的用戶行為日志表按天清理60天前的數(shù)據(jù)每次刪8000行刪除耗時約1.2秒循環(huán)之間SLEEP 20秒。整體算下來每秒約刪除400行左右主庫負(fù)載穩(wěn)定在20%以內(nèi)從庫延遲控制在5秒內(nèi)。如果按每次50000行去刪單次執(zhí)行時間就飆到8秒從庫延遲直接漲到兩分鐘以上這就不行了。2.3 循環(huán)腳本的完整寫法生產(chǎn)環(huán)境里我更推薦用存儲過程來做一來避免應(yīng)用層頻繁發(fā)起連接二來可以在數(shù)據(jù)庫端精確控制循環(huán)邏輯。下面這個存儲過程是我經(jīng)常用的模板你按自己的表結(jié)構(gòu)調(diào)整下就能用DELIMITER $$ CREATE PROCEDURE batch_delete_big_data(IN p_batch_size INT, IN p_sleep_seconds INT) BEGIN DECLARE v_rows INT DEFAULT 1; WHILE v_rows 0 DO DELETE FROM big_table WHERE create_time DATE_SUB(NOW(), INTERVAL 90 DAY) ORDER BY id LIMIT p_batch_size; SET v_rows ROW_COUNT(); COMMIT; IF v_rows 0 THEN DO SLEEP(p_sleep_seconds); END IF; END WHILE; END$$ DELIMITER ;這個存儲過程有兩個核心設(shè)計值得說說。第一用了ORDER BY id LIMIT ?的形式保證每次刪除的都是最老的一批數(shù)據(jù)而且走主鍵有序掃描效率高。第二每刪完一批就COMMIT一次讓事務(wù)及時結(jié)束undo log和行鎖都在每個批次結(jié)束后立即釋放。還有一個細(xì)節(jié)很多人在循環(huán)里糾結(jié)要不要commitMySQL默認(rèn)是自動提交的但存儲過程的事務(wù)控制最好還是顯式寫清楚防止將來修改隔離級別時行為變化。調(diào)用方式很簡單CALL batch_delete_big_data(5000, 5);這里我解釋一下參數(shù)怎么配p_batch_size從5000起步往上調(diào)p_sleep_seconds從5起步往上加。每次加參數(shù)跑一小段觀察主庫負(fù)載和從庫延遲找到當(dāng)前機(jī)器配置下的最優(yōu)組合。內(nèi)存大、磁盤快SSD、從庫延遲容錯高的環(huán)境可以把批次加大到10000。我自己的經(jīng)驗是寧肯稍保守一點(diǎn)別追求一次刪太多導(dǎo)致業(yè)務(wù)抖動。2.4 分批DELETE的兩個主要局限這個方案雖然通用但有兩個短板你得知道。第一它只解決了“刪除動作”對數(shù)據(jù)庫的壓力沒解決“物理文件不釋放”的問題。分批刪完數(shù)據(jù)后表空間依然是滿的.ibd文件大小不會縮。如果你清理數(shù)據(jù)的目的是為了騰出磁盤空間那分批DELETE并不能直接滿足你需要配合后面說的重建表。第二如果業(yè)務(wù)高峰期刪數(shù)據(jù)即使每批只有幾千行依然可能影響性能。這個方案更適合業(yè)務(wù)低峰期執(zhí)行比如凌晨1點(diǎn)到5點(diǎn)盡量不要在白天大流量時段跑。3. 主鍵有序場景下的高效方案按主鍵范圍分段刪除3.1 原理順序掃描遠(yuǎn)比隨機(jī)掃描劃算如果說分批DELETE是“小步快跑”那按主鍵范圍分段刪除就是“化整為零分區(qū)塊推平”。它的思路是先把要刪除的數(shù)據(jù)主鍵范圍劃分成若干連續(xù)的區(qū)間然后逐個區(qū)間刪除。比如你要刪掉id從1到1億之間的部分?jǐn)?shù)據(jù)就可以分成1000個區(qū)間每個區(qū)間10萬行按順序依次刪。為什么這樣更快因為InnoDB聚簇索引本身是按主鍵組織的B樹以主鍵范圍刪除時掃描和刪除都是順序的充分利用了磁盤預(yù)讀和內(nèi)存緩存。相反如果按create_time等條件去隨機(jī)找數(shù)據(jù)每一次定位都要走二級索引再回表頻繁的隨機(jī)IO會大大拉低速度。這個方案比較適合那些主鍵和業(yè)務(wù)刪除條件高度相關(guān)的場景。比如說訂單表主鍵就是訂單自增ID而你要刪的都是半年前的訂單那這些訂單的ID一定集中在一個相對靠前的區(qū)間按ID范圍分段就非常合適。如果主鍵是UUID或者完全無序的字符串這個方案優(yōu)勢就不明顯了。3.2 怎么找分段邊界MAX/MIN查詢代替COUNT(*)很多人在分段前習(xí)慣先執(zhí)行一次SELECT COUNT(*) FROM big_table WHERE create_time xxx想確認(rèn)總共有多少數(shù)據(jù)要刪。我勸你不要這么做。大表上COUNT(*)是全表掃描或大范圍索引掃描光這一下就能把數(shù)據(jù)庫拖垮。正確做法是直接用MIN(id)和MAX(id)定位邊界然后按固定步長推進(jìn)SELECT MIN(id), MAX(id) FROM big_table WHERE create_time 2023-01-01;比如查出來要刪的數(shù)據(jù)id分布在 1000000 到 58000000 之間那你就可以從1000000開始每100000為一個區(qū)間依次刪除DELETE FROM big_table WHERE id 1000000 AND id 1100000; DELETE FROM big_table WHERE id 1100000 AND id 1200000;如果你希望全流程自動化也可以寫一個存儲過程按主鍵游標(biāo)推進(jìn)。但要注意分段刪除的每個區(qū)間刪除量并不均勻——有些區(qū)間可能恰好有大量要刪的行有些區(qū)間則很少。所以單個區(qū)間執(zhí)行時間可能有波動批次間SLEEP仍然不能省。3.3 一個重要優(yōu)化在刪除期間暫停二級索引更新這個技巧我在實踐中覺得非常好用但知道的人不多。如果你那張表有多個二級索引每次DELETE都要同時維護(hù)這些索引。索引多了刪除一行要更新的索引條目也多代價翻好幾倍。有一種做法是先拿到要刪除數(shù)據(jù)的id集合存到一張臨時表然后刪除原表上的二級索引刪完數(shù)據(jù)再重建索引。這里有一個典型Trade-off刪除索引期間查原表會變慢因為少了索引但刪除數(shù)據(jù)的整體速度會顯著提升。如果你清理的是“要刪除大比例歷史數(shù)據(jù)、但近期數(shù)據(jù)仍然要被業(yè)務(wù)頻繁查詢”的表二級索引的維護(hù)成本占了刪除總開銷的大頭這個優(yōu)化效果會非常明顯。但它也有風(fēng)險刪除索引和重建索引都是大操作重建索引期間表上所有依賴這個索引的查詢都會受影響。因此這個技巧我建議只在“刪除后要重建索引”的前提下使用并且放在低峰期配合后面的“刪除后重建表”一起做。3.4 分段刪除的邊界與最佳實踐這個方案最大的坑是刪除的區(qū)間里如果混著“不該刪”的數(shù)據(jù)你有多大概率誤刪所以分段必須建立在“主鍵范圍和業(yè)務(wù)條件強(qiáng)相關(guān)”的基礎(chǔ)上。如果兩者的相關(guān)性弱你得在DELETE的WHERE里同時加上業(yè)務(wù)條件比如DELETE FROM orders WHERE id BETWEEN 1000000 AND 1100000 AND status expired;這樣寫會稍微降低刪除效率因為多了條件判斷但安全性高很多。我自己一般會在條件里保守一點(diǎn)寧可多掃一點(diǎn)數(shù)據(jù)也不冒誤刪的險。原因很簡單海量刪除一旦誤刪恢復(fù)成本比多跑幾分鐘高得多。4. 表結(jié)構(gòu)允許時的最優(yōu)解用分區(qū)表刪數(shù)據(jù)就是刪文件4.1 為什么分區(qū)表能“秒刪千萬行”如果你的表本身做了分區(qū)那海量刪除的問題幾乎被降維化解了。MySQL 8.0支持的分區(qū)類型主要是RANGE、LIST、HASH、KEY對時間維度的歷史數(shù)據(jù)清理來說最常用的是RANGE分區(qū)。比如訂單表按月份做RANGE分區(qū)每個分區(qū)存一個月的數(shù)據(jù)。要刪除某個月之前的數(shù)據(jù)直接ALTER TABLE orders DROP PARTITION p202301;注意這個操作是DDL不是DML。InnoDB在DROP PARTITION時做的本質(zhì)是刪除分區(qū)對應(yīng)的物理文件整個操作不產(chǎn)生逐行刪除的行為所以速度極快——一個1億行的分區(qū)DROP它可能也就幾秒鐘。這是所有DELETE方案都比不了的。如果你的業(yè)務(wù)周期劃分不是按月也可以按季度、按年。只要你在分區(qū)創(chuàng)建時預(yù)留好未來分區(qū)的余量也就是提前建好后面幾個月的分區(qū)清理數(shù)據(jù)的時候直接drop掉過期分區(qū)根本不用寫任何DELETE語句。4.2 分區(qū)表改造的步驟與注意事項如果你現(xiàn)在這個表還沒分區(qū)想改成分區(qū)表那就要謹(jǐn)慎了。對已有大數(shù)據(jù)量的表執(zhí)行分區(qū)操作有幾種方式最穩(wěn)妥的是“新建分區(qū)表導(dǎo)入數(shù)據(jù)切換”的方式-- 1. 創(chuàng)建帶分區(qū)的目標(biāo)表 CREATE TABLE orders_partitioned ( id BIGINT NOT NULL, order_no VARCHAR(64), create_time DATETIME, ... PRIMARY KEY (id, create_time) ) ENGINEInnoDB PARTITION BY RANGE (YEAR(create_time) * 100 MONTH(create_time)) ( PARTITION p202301 VALUES LESS THAN (202302), PARTITION p202302 VALUES LESS THAN (202303), PARTITION p202303 VALUES LESS THAN (202304), PARTITION p202304 VALUES LESS THAN (202305), PARTITION pMax VALUES LESS THAN MAXVALUE );注意分區(qū)表要求分區(qū)字段必須包含在主鍵和唯一索引中。這是MySQL的一條硬性規(guī)定“every unique key on the partitioned table must include every column in the partitioning expression”。比如上面我把id和create_time放一起做了聯(lián)合主鍵才滿足要求。這個規(guī)定非??尤撕芏啾斫Y(jié)構(gòu)改分區(qū)失敗都是栽在這里。如果你的業(yè)務(wù)主鍵是單列id又想按create_time分區(qū)那要么改主鍵為聯(lián)合主鍵對現(xiàn)有業(yè)務(wù)有影響要么放棄分區(qū)方案。-- 2. 將歷史數(shù)據(jù)按分區(qū)規(guī)則插入 INSERT INTO orders_partitioned SELECT * FROM orders WHERE create_time 2023-04-01; -- 3. 業(yè)務(wù)停寫或低峰期切換表名 RENAME TABLE orders TO orders_old, orders_partitioned TO orders;4.3 沒有提前規(guī)劃那就用在線DDL工具做分區(qū)如果你的表已經(jīng)幾千萬行了尺寸巨大直接在線上執(zhí)行ALTER語句分區(qū)的耗時和風(fēng)險都讓人望而卻步。可以考慮使用gh-ost或者pt-online-schema-change這類在線DDL工具來執(zhí)行分區(qū)操作。它們通過觸發(fā)器或者binlog復(fù)制的方式在目標(biāo)表上重建新結(jié)構(gòu)切換過程幾乎不影響讀寫。但因為涉及復(fù)雜的表結(jié)構(gòu)轉(zhuǎn)換我只建議有一定經(jīng)驗的同學(xué)操作并且一定要在測試環(huán)境完整演練一遍再上生產(chǎn)。4.4 分區(qū)的維護(hù)成本別把“分區(qū)”當(dāng)萬能藥講了分區(qū)這么多好處我也要潑一盆冷水。分區(qū)表不是沒有代價的。最明顯的一點(diǎn)是某些查詢沒帶分區(qū)鍵時性能可能不升反降。比如你設(shè)置了按create_time分區(qū)但業(yè)務(wù)查詢經(jīng)常只按order_no查那MySQL會掃所有分區(qū)等于退化成了全表掃描。所以是否上分區(qū)要先梳理清楚核心查詢的WHERE條件。另外分區(qū)本身也是DDL操作每次拆分、合并、刪除分區(qū)都要小心全局元數(shù)據(jù)鎖MDL的影響。生產(chǎn)環(huán)境的表要操作分區(qū)依然建議低峰期做最好配合在線DDL工具一起用。5. 騰出磁盤空間的一勞永逸方案新建表 切換 重建5.1 核心思路數(shù)據(jù)“搬家”而不是逐行“刪除”前面說過普通DELETE不管你怎么刪物理文件都不會變小。如果你清理海量數(shù)據(jù)的最終目的是釋放磁盤空間或者讓表恢復(fù)到干凈緊湊的狀態(tài)那正確思路是“把要保留的數(shù)據(jù)復(fù)制到一張新表然后用新表替換舊表”。保留的數(shù)據(jù)越少新表就越小舊表直接DROP掉即可。這個方案的執(zhí)行流程是根據(jù)業(yè)務(wù)條件把要保留的數(shù)據(jù)導(dǎo)到新表。業(yè)務(wù)停寫或低峰期做一次數(shù)據(jù)補(bǔ)齊和表名切換。DROP掉舊表磁盤空間隨之釋放。5.2 完整操作步驟以保留近3個月數(shù)據(jù)為例第一步創(chuàng)建新表。最簡單的方式是復(fù)制舊表結(jié)構(gòu)CREATE TABLE orders_new LIKE orders;這個語法會復(fù)制表結(jié)構(gòu)、索引、自增屬性但不會復(fù)制數(shù)據(jù)非常適合用來做換表。第二步把需要保留的數(shù)據(jù)搬進(jìn)新表。INSERT INTO orders_new SELECT * FROM orders WHERE create_time DATE_SUB(NOW(), INTERVAL 3 MONTH);這里有一點(diǎn)要注意如果保留數(shù)據(jù)量也很大比如上億行INSERT不進(jìn)去那么快而且會產(chǎn)生大量binlog。可以考慮在業(yè)務(wù)低峰期執(zhí)行或者用INSERT INTO ... SELECT ... WHERE ...加上分批處理邏輯和前文的分批刪除邏輯相通。無論如何絕對不要在業(yè)務(wù)高峰期執(zhí)行這個INSERT SELECT它會對源表加鎖可能導(dǎo)致線上寫入被阻塞。第三步切換表名。這里最安全的是用兩個原子性RENAMERENAME TABLE orders TO orders_old, orders_new TO orders;MySQL的RENAME TABLE是原子操作也就是說這一步要么全部成功要么全部失敗中間不會有“表不存在”的間隙。這也是為什么推薦用兩條RENAME而不是先DROP舊表再RENAME新表。如果先DROP再RENAME中間那幾秒你線上所有訪問orders的語句都會報“table doesnt exist”。切換完成后應(yīng)用立刻開始訪問新表。新表里只有近3個月數(shù)據(jù)所有查詢都會比原來快不少。第四步驗證后DROP舊表。-- 驗證新表數(shù)據(jù)量、索引、自增值都正常 SELECT COUNT(*) FROM orders; SHOW INDEX FROM orders; -- 確認(rèn)無誤后刪除舊表釋放磁盤空間 DROP TABLE orders_old;DROP表的瞬間會釋放磁盤文件這個過程中I/O會有些波動但對業(yè)務(wù)基本無感。需要注意的是DROP一張幾十GB的大表本身也可能產(chǎn)生瞬時I/O壓力。如果表特別大比如超過100GB可以在低峰期執(zhí)行或者考慮用硬鏈接方式分批釋放文件這里不展開知道有這回事就行。5.3 這個方案有一個必須處理的臟數(shù)據(jù)問題新建表切換方案最大的隱患在于數(shù)據(jù)一致性。從“把數(shù)據(jù)復(fù)制到新表”到“切換表名”之間舊表可能又有新的寫入或修改如果你沒有完全停寫的話。這些增量數(shù)據(jù)不會自動出現(xiàn)在新表里。要規(guī)避這個問題要么在完全停寫窗口內(nèi)完成第二步和第三步適合可以接受短時間停服的場景要么利用binlog或應(yīng)用層雙寫來補(bǔ)齊增量。對于大部分互聯(lián)網(wǎng)業(yè)務(wù)來說最現(xiàn)實的是選一個業(yè)務(wù)量最低的時間窗口比如凌晨2點(diǎn)申請5到10分鐘的只讀維護(hù)窗口一口氣完成復(fù)制和切換。這個方案在架構(gòu)上是最干凈的也是我推薦你在數(shù)據(jù)量特別大、清理比例又特別高時優(yōu)先考慮的路徑。5.4 什么時候“換表”優(yōu)于“刪除”這里給個簡單的經(jīng)驗總結(jié)。假設(shè)表總行數(shù)X要保留行數(shù)Y。如果Y/X的比例低于30%換表方案的綜合效率顯著高于DELETE方案。因為這種情況下你要拷貝的數(shù)據(jù)少新表很小切換后所有查詢受益磁盤也徹底釋放。如果Y/X超過50%新建表拷貝的數(shù)據(jù)量太大反而不如分批DELETE碎片整理劃算。記住這個比例分界線你做技術(shù)選型時就不用再糾結(jié)了。6. 生產(chǎn)環(huán)境更優(yōu)雅的歸檔工具聊聊pt-archiver6.1 pt-archiver到底解決了什么問題如果你不想自己寫存儲過程、又要批量刪除歸檔數(shù)據(jù)Percona Toolkit里的pt-archiver就是為這個場景量身定做的。它是業(yè)界最常用的MySQL歸檔和清理工具核心優(yōu)勢有三點(diǎn)一是自動分批每次操作一行或一批控制鎖粒度二是可以同時把刪除的數(shù)據(jù)插入到歸檔表三是不要求你手寫循環(huán)邏輯參數(shù)化配置就行。它適合的場景包括定時清理歸檔歷史數(shù)據(jù)、大表冷熱數(shù)據(jù)分離、刪除時保留一份備份到歸檔庫比如歸檔到另一張表或者另一個實例。我自己在生產(chǎn)上用過它清理過一張幾千萬行的流水表工具平滑度非常高沒有出現(xiàn)鎖等待或從庫延遲異常。6.2 一條命令教會你用pt-archiver基本用法如下需求是把orders表里2023年之前的數(shù)據(jù)刪除同時把刪除的數(shù)據(jù)備份到orders_archive表pt-archiver \ --source h127.0.0.1,P3306,uarchive_user,pxxx,Dtest,torders \ --dest h127.0.0.1,P3306,uarchive_user,pxxx,Dtest,torders_archive \ --where create_time 2023-01-01 \ --limit 1000 \ --txn-size 1000 \ --sleep 0.5 \ --bulk-delete \ --bulk-insert \ --statistics參數(shù)含義拆解一下--source和--dest源表和目標(biāo)表。如果只做刪除不需要?dú)w檔可以省略--dest。--where刪除條件這是核心篩選條件注意這里必須走索引否則工具會提示全表掃描風(fēng)險。--limit 1000每批取多少行。--txn-size 1000多少行提交一次事務(wù)。這兩個參數(shù)配合控制鎖粒度。--sleep 0.5每批之間的休息時間單位秒用來控制刪除速率這是保護(hù)從庫不延遲的重要參數(shù)。--bulk-delete和--bulk-insert使用批量刪除、批量插入的方式比逐行操作高效得多。--statistics輸出執(zhí)行統(tǒng)計方便事后分析。在實際執(zhí)行前官方工具支持--dry-run參數(shù)只做語法檢查而不真正執(zhí)行可以拿它先驗證命令是否正確pt-archiver --source ... --where ... --dry-run6.3 使用pt-archiver的3條實踐經(jīng)驗第一連接賬號權(quán)限最小化就好只需要源表SELECT、DELETE目標(biāo)表INSERT的權(quán)限別一上來就給root。這不僅是安全習(xí)慣也能防止操作失誤時影響面擴(kuò)大。第二如果目標(biāo)歸檔表和源表結(jié)構(gòu)完全一樣--dest指定的表可以提前建好否則工具會自動嘗試創(chuàng)建但字段映射可能出錯。我建議手動先建好歸檔表不要依賴工具自動建表。第三必須確認(rèn)WHERE條件能走索引。pt-archiver執(zhí)行時會做 explain 檢查如果發(fā)現(xiàn)全表掃描它有--no-check-charset之類的參數(shù)跳過一些檢查但全表掃描刪除依然會拖垮庫。執(zhí)行前用EXPLAIN看一眼執(zhí)行計劃最穩(wěn)妥。7. 刪除之后的善后工作表空間整理與索引維護(hù)7.1 為什么刪完數(shù)據(jù)表文件還是那么大回到前面提到的那個歷史遺留問題DELETE只做邏輯刪除標(biāo)記記錄為“已刪除”物理空間不會立刻返還給操作系統(tǒng)。InnoDB表空間內(nèi)部雖然可以復(fù)用這些空間給后續(xù)INSERT但是文件大小不縮。因此如果你執(zhí)行完大批量DELETE之后用ls -lh看.ibd文件會發(fā)現(xiàn)文件大小一點(diǎn)沒變。如果你的目標(biāo)是壓縮物理文件目前通用的做法是重建表。在MySQL 5.7之后的版本里執(zhí)行ALTER TABLE big_table ENGINEInnoDB;可以重建主表數(shù)據(jù)。這個操作在MySQL 5.6以后是Online DDL允許在重建期間繼續(xù)讀寫但它仍然會消耗額外的磁盤空間因為要生成臨時表文件耗時也比較長依舊建議在低峰期操作。MySQL 8.0還有一種新姿勢用ALTER TABLE ... ALGORITHMINPLACE配合在線操作但也要看版本和表結(jié)構(gòu)具體情況。最穩(wěn)妥的仍是按前面第5節(jié)說的“建新表切換”方案徹底搬家一次物理和邏輯上都干干凈凈。7.2 清理碎片和重建二級索引另外一個容易被忽略的問題是索引碎片。大量刪除后二級索引葉子節(jié)點(diǎn)會有很多空位索引空間利用率下降查詢性能受影響。除了重建表你還可以對某個二級索引單獨(dú)做整理ALTER TABLE big_table DROP INDEX idx_create_time, ADD INDEX idx_create_time (create_time);這個操作的本質(zhì)是刪索引再重新建索引索引重建期間相關(guān)查詢會變慢。如果有多個索引需要重建建議一個一個來別批量操作避免表上長時間沒有可用索引。7.3 統(tǒng)計信息更新ANALYZE TABLE不能省大量刪除之后MySQL的優(yōu)化器基于采樣得到的統(tǒng)計信息可能已經(jīng)嚴(yán)重過時于是執(zhí)行計劃就可能出錯本該走索引的查詢走了全表掃描本該用小索引的查詢選了個大索引。高負(fù)載下你還會看到information_schema.tables里的數(shù)據(jù)行數(shù)完全對不上那里面的值是估算的不是實時的。這時候就需要主動更新統(tǒng)計信息ANALYZE TABLE big_table;這個操作在MySQL 8.0里執(zhí)行很快因為它只是重新采樣計算統(tǒng)計信息不需要重建數(shù)據(jù)。在批量刪除后的當(dāng)天夜里或第二天的低峰期執(zhí)行一次能有效避免優(yōu)化器誤判。8. 常見問題排查與踩坑實錄8.1 問題一刪著刪著從庫延遲越來越大這應(yīng)該是最常遇到的現(xiàn)象。分批DELETE本身沒問題但如果你批次太大、SLEEP太短從庫應(yīng)用binlog的速度就跟不上主庫產(chǎn)生binlog的速度。排查流程先執(zhí)行SHOW SLAVE STATUS\G看Seconds_Behind_Master確認(rèn)延遲數(shù)值和趨勢再看主庫上是不是有長事務(wù)在跑information_schema.innodb_trx里如果有TIME很大的事務(wù)優(yōu)先確認(rèn)是不是自己的刪除腳本沒提交。最終解法就是把批次調(diào)小、SLEEP調(diào)大或者在腳本里增加“延遲超過閾值自動暫?!钡倪壿嬤@個邏輯不算復(fù)雜但非常實用。8.2 問題二DELETE走了索引還是很慢很多情況下你確實給WHERE條件加了索引但執(zhí)行計劃依然選擇了全表掃描。原因多半是數(shù)據(jù)分布讓優(yōu)化器認(rèn)為走索引不如全表掃描劃算。比如要刪除的數(shù)據(jù)占了表中大部分行優(yōu)化器估算下來全表掃更快。排查方法是執(zhí)行EXPLAIN DELETE ...看type列和key列如果發(fā)現(xiàn)是ALL或者key為NULL那么要么用FORCE INDEX強(qiáng)制走索引要么換成“按主鍵分段刪除”的寫法繞開優(yōu)化器的錯誤判斷。8.3 問題三刪除過程中出現(xiàn)鎖等待超時錯誤信息一般是Lock wait timeout exceeded; try restarting transaction。這說明你的DELETE在等一把別人持有的鎖。排查方式用SHOW ENGINE INNODB STATUS查看當(dāng)前鎖等待也可以直接查sys.innodb_lock_waits視圖看誰堵了誰。通常的原因有兩個一是業(yè)務(wù)本身正在高頻更新你要刪除的數(shù)據(jù)范圍這種場景要錯峰刪除二是你的刪除批次太大單批持有大量行鎖導(dǎo)致后續(xù)刪除互相等待。解法減小批次、增加SLEEP、盡量在低峰期執(zhí)行。8.4 問題四刪除期間undo表空間暴漲刪除動作寫undo是必然的但暴漲到撐爆磁盤就有問題了。先看SHOW GLOBAL STATUS LIKE innodb_history_list_length如果這個值一直增加不降說明有老事務(wù)一直沒結(jié)束導(dǎo)致undo日志無法purge。排查information_schema.innodb_trx里是否有長時間未提交的事務(wù)尤其注意是不是有APP服務(wù)開啟了事務(wù)但沒提交。一個連接空閑但沒commit就能讓你所有的刪除產(chǎn)生的undo都清不掉。遇到這種情況先確認(rèn)沒有長事務(wù)再說刪除的事否則你刪得越快undo漲得越兇。8.5 問題五DROP舊表時磁盤I/O瞬間打滿DROP大表時操作系統(tǒng)需要釋放對應(yīng)的大文件。InnoDB刪除表空間文件的過程不是瞬間完成的但對磁盤I/O的沖擊是真實存在的。如果舊表有100GB以上建議在業(yè)務(wù)最低峰DROP或者考慮分硬鏈接釋放文件的技巧先把.ibd文件硬鏈接到另一個路徑然后通過TRUNCATE一點(diǎn)點(diǎn)截斷文件來釋放空間讓I/O壓力平滑化。這個技巧屬于進(jìn)階操作普通開發(fā)環(huán)境不需要用但生產(chǎn)上遇到“不敢DROP大表”的情況可以嘗試搜索一下官方文檔和相關(guān)文章來深入。寫在最后的經(jīng)驗聊到這兒批量刪除海量數(shù)據(jù)的幾條主流路線基本都過了一遍。我個人的體會是沒有萬能的方案只有適合當(dāng)下場景的方案。如果只是日常刪幾十萬行把分批DELETE寫好、參數(shù)調(diào)對就夠了如果刪的數(shù)據(jù)占比特別高優(yōu)先考慮新建表切換如果表結(jié)構(gòu)設(shè)計時就想清楚了數(shù)據(jù)生命周期那么分區(qū)表是最省心的長期方案如果公司有Percona Toolkit的運(yùn)維基礎(chǔ)pt-archiver能讓你的活變得非常輕松。另外還有一點(diǎn)小建議不管用哪種方案動手前先把表結(jié)構(gòu)和數(shù)據(jù)分布摸清楚備份必須做好。海量刪除不是不能做而是要在可控的節(jié)奏里做。你每一次刪除前多花十分鐘做EXPLAIN、做備份、確認(rèn)時間窗口線上就能少一次血淚教訓(xùn)。希望這篇文章能幫你把那塊壓在心口的大石頭平穩(wěn)落地。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
欧美综合123区| 九九XX视频| 婷婷在线播放av| 国产精品第一国产精品| 狠狠色噜噜狠狠狠狠综合| 欧美婷婷五月无砖| 噜噜色天天开心| 五月色情精品| www.色五月| 久久激情五月婷婷| 激情五月天婷婷视频| 久热超碰91| 日日鲁鲁鲁夜夜爽爽狠狠视频97| 狠狠狠狠狠干| 99re思思热久久| 人妻操在线看| 婷婷丁香五月六月激情| 激情网狠狠干| 婷婷五月天xxx| 超碰97干| 国产成人AV在线播放| 性无码专区无码| 婷婷五月婷婷| 激情五月综合亚洲另类| 日本婷婷| 久久久无码精品成人A片小说 | 99久久婷婷五月天| 国产探花AV在线| 91色逼| 69午夜成人影片| 99啪| 婷婷午夜| 伊人春天av| 午夜丁香六月婷| 97干干干丁香| 影音先锋美国A| 97色碰| 五月婷婷官网色| 激情综合网亚洲色图| 午夜大香蕉| 国产亚洲色婷婷久久99精品91 www.riverspirits.org www.hnnun.com www.changh | 99色播| 丁香婷婷大香蕉| 涩 五月 婷婷 狠狠| 99操九九网| 可以看的av| 97视频.干com| 玖玖婷婷五月天| 99热亚洲| 五月天婷婷成人网| 婷婷狠狠综合网入口| 激情五月综合| 噢美99| 五月婷婷基地| 激情综合5月| 丁香婷婷五月天亚洲| 色婷婷亚洲综合av| 久久免费操| 亚洲欧美国产高清vA在线播放| 五月婷婷性爱网| 国产精品久久99| 激情五月天小说网| 成人做爰A片免费看网站找不到了| 激情丁香婷婷| 狠狠ri| 婷婷影院A成人| 665566 无码| 综合色在线| 久cao香蕉影院| 白度黄视频| 亚洲区在线| 《丁香激情综合久久伊人久久》影视在线观看 -高清预告手机免费播放 -三妹影院 | 爱射综合| 久久综合激情婷婷激情| 激情五月综合网最新| 亚洲成人在线播放| www婷婷色| 色婷婷综合电影| www激情网站| 国产无人区大片| 亚洲国产成人在线| 五月丁香五月天现场视频| 久操热| 国产精品涩涩涩视频网站| 国产av一区二区三区| 97婷婷五月丁香| 色你久久| 久久这里99| 夜夜操夜夜操| 亚洲乱码精品久久久久..| ..真实国产乱子伦对白在线_欧 | 超碰人人操在线| 蜘蛛女免费观看完整版高清电影| 婷婷成年人免费视频| 97色欧美| 1级欧美日韩| 97久人人| 五月激情婷婷开心| av国产精品| 久久激情四射| 婷婷五月天影视| 夜夜爽天天爽| 噜噜狠狠色综合久| 久久五月天合网| 婷婷的色色五月天| 国产亚洲精品AAAAAAA片| 99精品久久久久久久久| 深爱激情九九五月天 | 色亚洲色宗合| 丁香五月色| 九九这里只这里只有精品| 久色欧美| 久久九九激情五月天| 色香久久| 深爱婷婷丁香五月激情| 欧美怡红院黄站| 在线观看的av| 综合网激情| www.狠狠| 婷婷五月天美女| 噜噜色com| 婷婷五月色播| www.色99| 另类 在线| 懂色av粉嫩av蜜臀av| 99啪| 五月丁香综合激情网| 国产精品天天狠天天看| 五丁香激情综合| 日本婷久久| 日韩中出视频| 色99欧洲色19| 黄色录像网点| 9久热这里只有精品| 天天日天天爽夜夜爽| 色色综合热| 国产日批视频| 九九色热| 色婷婷综合五月| 婷婷五月av| 91操在线观看| 激情性爱五月| 99九九精品| 色情五月天导航| www.minyis.com【JT】国内CDN落地页保证转化QQ2101460746 | 九热av| 先锋资源996| 狠狠插狠狠插| a v色婷婷| 婷婷五月花| 色色色综合色| 五月婷婷丁香六月| 婷婷激情综合色五月久久,色婷婷丁香花,丁香婷婷五月情天,久久婷婷五月综合色 | 亚洲天堂爱爱| 激情小说五月天| www99久久| 九九热视频在线观看| 人妻在线网站| 成人丁香五月| 天天做天天双| 波多野结衣不卡AV| 天堂综合久久 | 97婷婷丁香| 人。妻久久| 在线超碰免费| 99久久五月婷婷| 97超级操操| 操一操干一干| 五月丁香| 婷婷五月天亚洲综合网| 91视频五月丁香| 九月婷婷综合网| 婷婷六月综合激情| 亚洲无码成人网| 婷婷中文字幕| 五月天天天色| 婷婷爱在线观看| 六月婷婷五月丁香| 伊人久久丁香婷婷六月五月综合| 影音先锋天天日| 超碰操网| 丁香丝袜五月| 亚洲天堂久久| 欧美97超碰| 色色AV色色色东莞| 九九sese| 色色色色区| av网址在线| 激情q青青草在线婷婷| 99热66| 五月婷婷深爱六月| 五月丁香六月婷婷久久肏| 丁香五月天激情视频| 丁香五月色综合色播五月| 九九精品丁香花| 欧美激情VA永久在线播放| 久久99久久99精品免观看粉嫩| 亚洲热视频在线| 伊人丁香五月| 7777激情基地| 丁香六月综合激| 丁香六月啪啪啪| 亚洲综合网激情小说| 激情五月天.色网| 五月婷婷六月丁香五月| 思思热久久久久思思热| 9|无码久久久久久| 色色色色色日韩午夜激情| 婷婷伊人久久| 天天日综合| 婷婷五月亚洲激情| 黄色激情久久| 71在线精品视频一区| 久99视频| 超碰成人电影| www.黄色片-久久成人国产精品在线播放-999AV| 99久久99视频只有精品| 日本婷久久| 黄色热99| 欧美成人精品A片免费一区99| 欧美这里只有精品| 激情六月日韩| 久久这里99| 91超级碰| 99视频九九热| 97色色综合| 强辱丰满人妻HD中文字幕| 婷婷成人综合| 国产成人av在线播放| 99热99热不卡| 婷婷五月天激情五月天网站| 久久婷婷五月综合激情国产| 噜噜色五月| 99超级碰碰| 香蕉曰比| 日韩国产AV播放| 婷婷色五月激情| 五月天伊人久久久久| 天天色色婷婷| 春色激情第四色| 99熟女视频| 91岛国片| 色情久久久| 日本9区视频| 欧美69久成人做爰视频| 久久婷婷丁香花综合网| 97丨九色丨国产丨PORNY| 99热手机在线精品| 久久免片| 538在线精品| 久久精彩免费视频| 99操99| 91久操| 婷婷激情性爱| 日本一级一级一级一级| 五月激情天| 丁香婷婷久久| 国产美女无遮挡裸体毛片A片 | 天天日天天添| www.狠狠操.con| 婷五月天天| 国产67194| 99在线视频播放| 91狠狠色丁香| 日本熟女视频一区二区| 色五月丁香激情| 色国产五月| 视频免费精品免费精品免费精品免费精品免费精品免费精品免费99 | 日韩无码AV电影网站| 六月丁香啪啪啪| 久久久天堂国产精品女人| 五月天成人免费视频| 99超级碰免费视频| 婷婷五月丁香色色| 久久婷婷综| 亚洲欧美婷婷五月色综合| 亚洲综合成人网| 就要爱综合| 欧美激情五月天婷婷| 米奇激情婷婷| 丁香五月婷婷在线| 日日杆天天| 色9999日韩国产| 无码少妇高潮喷水A片免费| 婷婷五月天国产传媒| 停停六月 综合| 99热最新精品| 婷婷狠狠五月综合| 毛片新网地| 色播五月丁香| 1024欧美看片| 久久激情网| 国产Va视频| 五月天婷婷五月| 五月欧美丁香在线观看| wwwss在线观看| 中文字幕视频色婷婷| 色婷婷丁香社综合| 天天做天天爱天天爽在| 久久婷婷五月综合啪| 成人丁香五月| 久久婷婷五| 狠狠干综合| 69er小视频| 婷婷五月天AV| WwW色婷婷| 婷婷欧美激情| 丁香五月欧美色综合| 丁香婷婷色情| 婷婷碰碰| 五月丁香拍拍激情综合| 欧美三级欧美一级| 99热99日天天干| 偷偷与邻居做爰完整视频| 色停停五月天| 色色热| 92久操视频| 色婷婷五月综合| 性日本精品| WWW,五月| 五月丁香啪啪综合| 深爱激情丁香| 福利视频在线播放| 黄色五月婷婷| 能看的AV| 9久热在线视频| 亚洲中文无码成人| www.91.com黄| 丁香六月婷婷综合| 六月丁花香啪啪激情欧美| 97香蕉久久超级碰碰高清版| 色五月婷婷色五月婷婷色五月婷婷| 久久激情五月| a网站免费观看| 精品无码99| 91碰碰| 日韩黄色网络| 在线综合网| 狠狠精品干练久久久无码中文字幕| 九月激情综合| 青青草原伊人网| 色婷婷五月天av在线| 天天干,天天舔| 九九热在线观看视频| 中字幕视频在线永久在线观看免费 | 六月丁香久久| 婷婷丁香久久| 操97| 91九色熟女| 91精品久| 狠狠人人婷婷| 六月婷婷色色色| 五月色色激情网| 久久九九激情五月天 | 色色色色综合网| 99精品自拍| 五月婷婷导航| 91欧美| 久99视频在线观看| 亚洲另类婷婷综合| 久久久久人妻精品| WWW色五月天| 丁香五月在线| 天天婷婷天天| 婷婷在线中文字幕| 99热官网精品在线| 婷婷五月激情的图片| www.婷婷五月天| 99热99| 噜噜噜噜综合在线| 激情综合国产| 另类激情中文| 久久婷婷婷婷伊人| 狠狠干狠狠操狠狠爱| 青青草原精品久久| 91在线视频综合| 九九久久污| 99热99热在线| 色综合久久综合中文综合网| 狠狠狠狠狠狠| 骚货艹网站视频| 久久久久久久,99精品视频| 综合激情网激情五月。| 九九99九九99九九99视频网| 色优久久| 五月天综合视频| 婷婷五月电影| 国产美女无遮挡裸体毛片A片| 六月婷婷日| 久久看九九90| 九色视频91疯狂| 亚洲夜五月| 日本黄色三级片内射| www.亭亭五月天| 婷婷色色欧美| 影音先锋女人AA鲁色资源 | 六月丁丁香| 五月婷婷中文字幕| 国产毛片欧美毛片久久久| 米奇影视五月天| 婷婷九月在线| 天天射影院| 日韩aaa| 97婷婷色| 97操碰在线97| www久| 五月激情网络| 天天色天天搡| 丁香五月婷婷亚洲激情四射| 久久ww| 激情五月天伊人av| 激情婷婷五月女| 超碰在线资源| 国产人妻777人伦精品HD| 日本激情五月天‘| 99热免费精品热久久66| 色九九七七| 99热综合| 91精品久久久久久77777| 桃色激情婷婷伊人网| 影音先锋91男人资源在线播放| 99久久久| 色噜噜五月天| 五月天成人在线| 超碰成人在线观看| 丁香五月成人av| 丁香五月激情宗合| 色爱99| 激情婷婷丁香| 中文字幕日产A片在线看| 婷婷五月天天天| 亚洲精品操一操、噜一噜、摸一摸、爽 | 色婷婷五月天天天天天| 激情久久久久久| 九九精品9| 九九RE视频在线精品| A久久| 伊人色欲五月天| 五月丁香猫咪久久婷婷综合视频激情四射网入口 | www.色五月| 激情综合另类| 亚洲av综合在线| 久热无码| 人人摸人人干| 日日日日日| 午夜成人网站在线观看| 九九99热| 国产精品视频| 亚洲色夜| 狼人狠狠操| 丁香久久| 五月丁香六月婷婷开心网| 深爱激情小说五月婷婷| 久热这里只有精品在线观看 | 狠狠色丁香乆乆| 婷婷色播婷婷| 337p大胆噜噜噜噜噜91Av| 五月天激情图片| 久热亚洲| 黄网在线免费观看| 九九热99热| 久热 91| 婷婷五月天天爽| 五月婷婷六月丁香色| 五月丁香婷庭在线| 这里只有精品免费观看网占| 午夜做爱影院| 天天综合精品| 欧美日本黄色| 久久综合丁香激情五月| 五月综合色| 东京热免费视频| 欧美成人va| 色综合五月天| 色色三级视频| 婷婷伊人綜合中文| 操逼六区| 秋霞三级色戒| 久久婷婷五月草视频| 思思热性操| 激情狠狠丁香月| 五月婷婷丁香在线视频| 婷婷五月激情小说| 五月婷婷无码| 国精产品一区一区三区免费视频| ztEJj| 精品九九网| 9l视频自拍9l九色9l成人| 91视频五月丁香| 另类激情综合| 婷婷丁香人妻| 思思热这里只有精品| 99毛片| 激情五月综合| 丁香六月婷婷激情| 丁香婷婷六月天| 五月色丁香综合| 亚洲天堂AAA| 黄色激情五月天| 99精品一二三四视频| 婷婷综合激情| 91精品刘玥| 无码动漫av| 色婷婷五月影视| 操逼福利视频| 女人被男人吃奶到高潮| 欧美性生交XXXXX无码小说| 色欲五月丁香| 99在线精品视频| 9999热精品在线免费播放| 日本成人小说婷婷六月| 九九色影视| www.色五月| 第四色大香蕉| 99热精这里只有精品| 天天摸天天舔| 九九99九九精品免费 | 天天插天天操| 色婷婷XXXXX| 国产在线另类五月婷婷| 婷婷六月丁香五月| 91综合色噜噜| 五月天婷婷丁香蜜桃91| 丁香婷婷九月| 婷婷丁香五月综合久久| WWW夜夜| 79精品视频在线观看,| 人妻人人操| 青青草Avb在线| 色五月婷婷少妇人妻| 天天日天天干天天操| 婷婷成人五月天| 黑人熟妇一区二区三区| 丁香五月综合网亚洲综合欧美狠狠 | 亚洲另类视频| 久久全意婷婷| 99热这里只有精品21| 久久久久久久久99精品| 丁香婷婷浪潮AV久久综合| 丁香婷婷人妻| 五月婷婷与六月丁香图片激情| 99热人人艹| 26uuu四色| 97久久人人操| 美女黄频aⅴ视频| 99热免费精品| 丁香激情综合| 亚洲精品久久久久久久久久吃药| 香蕉久久国产AV一区二区| 色婷婷久久综| 操逼巨乳91| 99精品丰满| 色色亚卅| 综合色色五月| 丁香五月婷婷激情123| 五月天另类激情在线| 伊人久久大香线蕉av最新| 婷婷五月天电影区小说区| 亚洲成人AV高清字幕| 人妻爽爽爽久久久久久久久| 天天操综合网| 丁香五月综合激情久久潮喷| 五月丁香六月综合激情| j久久性爱视频| 丁香花五月天激情| 日韩成人无码人妻| 欧美va在线| 五月婷婷色色色| 久久婷婷五月综合色奶水99啪| 嫩草国产| 婷婷五月天中文字幕| 99热这里有精品| 99热99| 久热免费视频| 日本 欧美在线| 伊人激情啪啪| 婷婷五月天成人在线视频| 综合久| 婷婷久久五月| 五月天色色色| 亚洲综合婷婷五月| 99艹精品在线观看| 久久婷婷五月综合啪| 色吊丝永久访问网址| 9热在线观看| 精品女人九九九| 日韩av在线电影| 五月天色图| 国产亚洲色婷婷久久99精品91| 亚洲精99| 丁香五月婷婷老师网站| 久草狼人| 欧美天天五月丁香免费观看| 久久婷婷五月天大香蕉| 五月丁香啪啪网| 久久精品63| 91一起操| 色五月婷婷久久| 天天肏高清在线| 丁香五月电影| 婷婷丁香激情五月| 久久久久99精品成人网站| 日本综合色图| 五月天婷a| 九九青草热| 99热这里只有精品99| www.99热在线观看| 色丁香在线视频| 国产探花一片区| 人妻精品在线| 天插天啪天啪天啪| 另类伊人婷婷| 激情98色婷婷五| 九九大香视频| 狠狠色无码| 天天操五月天| 亚洲妇女熟BBW| 亚洲免费婷婷| 狠狠久久婷五月综合色| 99久久精品国产色欲| 九九色逼| 激情五月婷黄版| 成人婷婷五月天| 色婷成人狠干| 青草视频在线播放| 色色婷婷五月天| 五月成人综合| 亭亭丁香久久五月| 狠狠色色综合| 久久婷综| 五月天婷婷久久| 欧美Va婷色| 视色网在线播放| 亚洲人人操| 五月色情网| 9久国产精品| 综合久久十| 久久女婷| 丁香婷婷大香蕉| 激情婷婷啪啪| 99热这里只有精品96| 五月丁香婷婷在线| 国产九九一区二区三区| 激情图片亚洲| 无码日本精品XXXXXXXXX| 五月天操逼网| 天天爱天天吃狠天天透| 99久久久国产精品免费蜜乳tv| 激情五月天色色| 婷婷九月丁香天堂丁香天堂| 91嫩草国产线观看亚洲一区二区| 日韩无码专区| 99精品视频免费观看| 久操97| 天天干天天射色综合| 五月天久久婷婷婷| aaaaaa片| 日操| 丁香丁香激情网| 大香蕉精品视频| 99伊人性爱在线影院| 国产超碰av| 国产干逼片| 美女久久婷婷| 久久婷婷丁香花综合网| 无码少妇高潮喷水A片免费| 五月丁香啪啪网| 五月丁香婷婷色| 91色综合| 五月婷婷啪啪| 五月丁香久久| 久久99精品视频| 性色五月天| 婷婷大香蕉| 99操视频| 五月天婷婷丁香| 丁香婷婷影院| 香蕉久久国产AV一区二区| 99热这里是精品| 中文字幕日产A片在线看| 搡BBBB搡BBB搡18| 日欧一片内射VA在线影院| 无码激情AAAAA片-区区| 大香蕉色婷婷伊人在线| 大香蕉视频99| 亚洲成人无码网站| 91人妻PORNY九色大屁股| 亚洲成人综合在线| 亚洲精99| 狠狠干伊人| 丁香五月综合AV在线| 99热都是精品| 大香蕉综合| 久久婷婷影院| 精品视频99看在线视频| 久久在线人妻| 五月丁香五月婷婷| 色噜噜狠狠色综合日日| 欧美日韩999| 激情久久伊人| 少妇2做爰HD韩国电影| 蜜乳中文字| 五月天婷婷丁香基地在线观看| 丁香九九九九| 国产AV一区二区三区最新精品 | 九九成人视频| 综合网激情| 国产麻豆视频| 99综合自拍| www.粉嫩av.com| 久久机只有这里精品| 99免费| 在线看片av| 国产乱子轮XXX农村| 99精品手机在线视频| 久久婷婷国产| 99色色最新视频| 99视频这里有精品| 久久五月婷| 色婷综合| 亚洲中文无码成人| 久久综合五月天| 日韩九区| 操久久精| 综合性视频99| 99re热在线视频| 九九成人电影婷婷| 91精品久久久久久综合五月天| 青青草六月丁香| 久久伦乱| 啪啪日本欧美| 永久的网站AAAA | 久久92| 91狠狠色丁香婷婷综合久久狠丁香综合久久精品 | 五月丁六月香av| 超碰二区| 91精品久| 丁香开心深爱| 97操操| 五月天堂六月丁香亚州中文字幕久久| 丁香六月婷婷缴情欧美| 激情图片久久| 亚洲成人综合网在线免费观看| AV伊人青草丁香六月| 亚洲综合99| 亚洲成人在线在线| 五月婷婷开心深| 99色五月| 丁香五月婷婷激情中文| 国产精品人成A片一区二区| 国产综合81p| 综合五月天婷婷色| 无码人妻少妇色欲AV一区二区| BT综合在线视频观看| 激情深爱五月| 九九婷| 五月丁香久久久日婷婷久久婷婷日| 五月天社区婷婷丁香社区| 超碰免费人人肏| 深爱网深爱综合网| 99久久久| 五月丁香日本在线视频观看| 色五月婷婷av| 亚洲色图45p| www激情| 狠狠狠狠草草| 狠狠色综合五月| 亚洲V国产V欧美V久久久久久| 丝袜大香蕉| 九月丁香| 色10月婷婷视频| 五夜婷婷| 婷婷五点亚洲| 亚洲行行色色| 亚洲欧美日韩VIP| 九九热视频网站| 丁香激情网| 888久久久| 色情五月停停丁香| 色情终和网| 色色色.com| 91se在线观看| 丁香久久五月婷综合| 天天日夜夜夜操操操操| 99视频| 无码人妻激情| 在线观看av网站| 日本熟女二区| a免费在线| 99热99热| 在线综合啪| 99久久6| 第四色色六月色综合| 亚洲综合婷婷六月丁香五月| 黄网在线免费| 日本熟女内射| 日韩精品VIP| 九九99久久| 99热99| www.久久爱.com| 色色色色色色色色色色色色色97| 亚洲无码成人| 五月天开心色情网| 婷婷色导航| 99精品视频在线| 无码激情AAAAA片-区区| 五月天激情社区| 久久六月综合| 色婷婷免费观看| 五月激情啪啪啪| 婷婷亚洲色| 精品色色网| 亚洲人人艹| 丁香婷婷色情| 人妻射精AV| 免费无码毛片一区二区A片| 色天天综合成人网| 丁香久久激情俄| 九九色人| 五月丁色AV| 丁香婷婷久久五月天| 天天干天天爽天天操| 99丁香五月婷婷在线| 人妻九九九九| 777久久综合视频| 欧美久久久中文字幕| 人人色婷婷| 日本精品在线噜噜噜| 白人荫道BBWBBB大荫道| 五月色亚洲| 97人人草| 一区操| 国产操碰| 天天色天天舔天天爱天天爽| 色欲九区| 丰满少妇猛烈A片免费看观看| 特级西西4444www无码| 色综合色五月| 激情婷婷激情在线不卡| 丁香六月激情| 人妻操在线看| 久综合色| 亚洲天堂色| 久久激情五月天| 一本伊人色婷| 97干视频| 99热人人操人人操| 婷婷五月天激情小说| 色色色色av色色色色| WWW·天天操·视频?| 偷拍99在线视频观看| 亚洲色色色| 丁香六月婷婷综合啪啪| 婷婷五月丁香综合激情小说| 亚洲午夜Av| 婷婷影院A成人| 1区2区视频| 五月天婷婷伊人| 六月色婷婷色| 99热观看| 九九热123| 婷婷六月丁香五月| 久久精品夜色噜噜亚洲a∨| 亚洲小说五月婷婷| 久久网日本| 99re6在线视频精品免费| 久操无码| 五月婷婷综合在线| 亭亭五月激情亚洲在线| 开心六月丁香五月婷婷| 色九九综合热99| Www.Av网9| 无码激情AAAAA片-区区| 噜噜噜久久| 丁香五月欧美激情| 久久久久人妻网址| 五月婷婷丁香狠狠撸久久| 丁香婷婷六月婷婷六月婷婷六月婷婷| 婷婷激情在线| 色99超碰| 97在线天堂| 97碰在线视频| 草草操操| 久9久9久9久9久9久9| 另类小说激情五月天| 5月丁香六月婷婷| 天天摸,天天爽| 天天爽天天爽天天爽天天爽天天爽| 狠狠久久婷婷| 操操日韩| 午夜日韩久久久网站| 337久久| 天天色2017| 日本熟妇乱妇熟色A片蜜桃| 九九亚洲| 亚洲中文字幕av| 天天综合色| 婷婷激情五月| 99热国产这里只有精品| 五月天亭亭俺也| 色婷婷伊人| 碰碰91| 五月婷婷AV| 久久丁香五月婷婷| 日韩无码色色| 日日噜噜夜夜狠狠久久丁香六月| 九九在线精点品| 99爱视频在线观看这里只有精品| 深爱激情丁香| 中文AV网| 婷婷五月激情在线| 色婷婷亚洲在线| 色播五月婷婷五月| 99精品久久久久| 色色五月婷婷久久| 91蜜桃婷婷狠狠久久综合9色| 爆乳熟妇一区二区三区爆乳照片| 久久草大香蕉| 午夜性做爰电影| 最近免费中文字幕大全高清大全1| 97超碰婷婷五月天| 亚洲AV日韩在线观看| 久久香视频| 欧美丁香五月| 激情婷婷| 99热青青草原| 天天日天天爱天天噪| 超碰国产在线观看| 色婷婷在线播放| 五月天激情网图片| avh片在线观看| 91精品视频男人的天堂| 91人妻人人操人人爽| 日本色婷婷| 色婷丨日丨天丨综合久久| 色情五月停停丁香| 97色天堂| 免费无码毛片一区二区A片| 1024成人免费看| 久久久久8888| 色欲天天综合| 九九草热在线观看| 狠狠操狠狠| 99色婷婷视频| 婷婷亚洲在线| 色婷婷色九月| 天天综合天天做天天综合| 婷婷五月激情视频在线| 综合色色网| 五月停性愛| 久久香蕉丁香| 国产成人VA| 另类 在线| 五月婷婷六月激情| 啪啪操超碰| 秋霞成人毛片一级A片| 日逼免费视频| 操人无码| 婷婷在线日韩综合| 五月天亚洲图片婷婷| 干亚洲天堂| 十一月婷婷激情四射| 亚洲色色色| 综合网狠狠| 南京搡BBBB搡BBBB| 婷婷六月色播| 99久久这里只有精品| 97在线日本| 色综久久AV| XX久久| 国产精品激情AV久久久青桔| 久久99看免费| 99热精品6| 五月丁香色| 婷婷丁香五月色偷偷| WWW.桔色成人.COM| 五月丁香婷婷在线| 色综合久久8| 久热这里这里有精品| w婷婷五月婷婷w| 影音先锋男士资源网一区| 99er6免费视频热播| 综合网啪| www...com黄在线观看| 色综久久久| 婷婷久热| ...婷婷五月综合不卡,国产在线手机 | 日韩 mm 不卡| 亚洲中文乱字字幕线在永久| 亚洲色热| 亚洲天堂啪啪| 五月激情婷婷在线| 五月婷婷碰碰| 中文人妻主播久久| 久久婷婷六月综合| 久草九九| 精品久久艹| 99亚洲精品| 丁香五月婷婷色情综合| 日韩三及成人AV片| 五月天色婷婷基地| 在线理论片| 99视频综合网| 久久久久人妻中文| 五月丁香本色在线观看| 国产99美少妇| 玖玖婷婷五月天| 久操人妻| 久99久在线观看| 噜噜狠狠色综合久| 伊人丁香五月| 丰满少妇猛烈A片免费看观看| 五月婷婷新网站| 综合激情五月婷婷| 婷婷五月天亚洲综合| 夜夜操夜夜操| 婷婷新网址| 亚洲综合热| 99热在线网站| 天天日日夜夜爽。| 色丁香五月婷婷综合久久| 99色一| 久久久精品婷婷五月天| 五月精品免费XXX| 亚洲综合色婷| 我要看激情五月天| 日本大逼91| 色婷婷www| 女人天堂久久| 黄网免费观看| 久久久久久激情| 五月色婷婷综合| 青青热视频| 禁欲电影完整版在线播放| 五月www| 风流少妇A片一区二区蜜桃| 五月丁香六月婷婷a v| 第四色色六月色综合| 日日日天天干| 小色小蛇伊人婷婷色香五月| 99热这里只有精品官网| 美国不卡视频| 婷婷激情综合| 天天爽夜夜爽夜夜爽精品| 五月激情在线| 天天免费日日夜夜夜夜| 久久婷五月影院| 天天做天天爱天天高潮| 26uuu欧美日韩| 亚洲天堂久久| 一级操逼内射在线视频| 日韩 中文 欧美| 高清无码视频网址| 色婷婷伦理| 欧美熟妇一区二区三区| 九九热99免费视频| 蜜臀av无码久久久久久久久| 丁香五月天啪啪| 欧美性色五月天| 精品久久久人妻| 丁香五月婷婷五月| 99操碰| 五月婷婷色| 亚洲第一黄网| 五月婷婷激情综合| 五月天伊人综合| 超碰2021| 色色色色色网| 九热视频| 久99久视频免费观看| 人人操av| 婷婷丁香人妻天天爽| 99色热视频| 婷婷色影音天| www.99热视频| 亚洲色婷婷网站| 国产超碰人人| 狠狠爱青青草| 久久九精品| 丁香五月天殴美激情| 五月婷婷婷| 激情五月天色色| 色五月五月婷婷| 六月伊人婷婷| 日韩黄色电影| 婷婷色色亚洲| 99精彩视频| 亚洲第一精品成人999久久精品| 久久久99久久| 久久日曰| 午夜丁香| 国产色视频网站2| 色综合五月| 专区无日本视频高清8| 精品人妻伦一二三区久久| 日本人妻伦在线中文字幕| 色五月综合网| 99ri在线视频| 五月激情综合网婷婷| 大鸡巴伊人网| 丁香六月| 9九热视频| 深爱激情四射| 六月丁香色色| 国产精品18久久久| 激情亭亭五月| 精品亚洲日韩99欧美片| 天天拍夜夜撸 | 色无婷婷| 超碰97久久| 久久这里只有国产精品视频| 操操碰| 婷婷狠狠97| 五月婷婷视频| 97色婷婷| 日韩aaaaa| 激情四射婷婷| 思思热在线| 色偷偷色婷婷| 婷婷五月开心中文字幕在线| 久久一热免费视频| 无码人妻少妇色欲AV一区二区| 亚洲另类av| 日韩在线aaa| 一级黄在线| 这里只有精品视频在线| 婷婷综合激情五月综合| 色婷婷精品小视频| 六月丁香五月激情亚洲AV| 欧美日韩成人在线| 九色 在线| 99久久.www| www久久久久| 久久这里只有精品视频15| 午夜无码熟熟妇丰满人妻| 欧美日韩欧美| 亚洲成人网站在线观看| 婷婷五月天成人| 欧洲色| 色婷婷狠狠| 这里只有精品久久| 婷婷丁香熟妇综合网| 六月丁香久久| 99热久| 丁香婷婷啪啪| 精品国产AV色一区二区深夜久久| 99色性爰网络| 91狠狠综合久久| 中字幕视频在线永久在线观看免费| 天天爱天天操| 极品少妇高潮啪啪AV无码| 九九一区| 亚洲操B| 精品无码久久久久久久久| 99婷五月| 五月天激情图片网| 综合久久久婷| 9久视频| 五月丁香好婷婷姑娘综合网| 99热欧| 这里只有精品免费视频在线观看| 亚洲a色| 色色色99| 婷婷五月天激情网| 色六月 婷婷| 成年视频免费观看| 99五月婷| 五月丁香六月色婷婷综合五月天| 五月www| 五月婷婷影| 久久九精品| 天天干狠狠| 久久A极片| 91人人妻人人操人人爽| 五月婷婷人人人操| 99热在这里只有免费精品| 99精品久久久久久久婷婷久久| 操逼棍操逼| 久久精品4| 国产黄色在线| 色爱综合五月| 99re热精品在线视频| 五月婷婷干| 看全色黄大色大片| 五月天婷婷久久视频| 182tv992tv人之初午夜免费观看| 亚洲性视频| 日本久久99| 婷婷香五月| 五月丁香香蕉| 五月丁香亭亭激情操逼网| 丁香五月天婷婷91| 華人性愛AV在線| 69热91天堂| 碰碰操91| 爱草视频在线| 蜜桃人妻无码AV天堂三区| 青青色com久久| 91凹凸在线| 婷婷五月色| 海外网站专业操老外| 色婷婷XXXXX| 日本成人噜噜噜噜噜| 日韩精品一区二区亚洲AV观看| 色综合五月天| 五月丁香婷婷婷激情爱爱| 久久狠狠高潮亚洲精品 天天摸夜夜摸夜夜狠狠摸| 中文国产五月天| 强伦轩人妻一区二区电影| 色99超碰| 九九视频这里是精品五月| 亚洲人人操| 五月婷婷久久大片| 五月天综合久久丁香91| 66久久视频在线| 另类视频综合| 中文字幕人妻AV| 性爱先锋AV| www,com,五月色色| 日本综合99| 天天婷婷天天| 婷婷狠狠97| 99视频热99| 五月熟妇婷婷久久| 色婷婷电影网| 91在线观看www| 激情五月丁香在线观看直播| 九九伊人网| 91久久色| 影音先锋 婷婷| 五月丁香成人网| 久久三级视频| 亚洲激情综合| 五月丁香久久久| 久久这里面只有精品视频| 九九精品自拍| 97se视频在线| 天堂婷婷丁香六月网| 久99视频| www,五月天com| AV在线大香蕉| 亚洲成Av人片乱码色第1集| 五月婷网站| 亚洲妇女熟BBW| 五月天成人伊人| 99性视频| av网址在线| 亚韩在线视频| 丁香婷婷五月色成人网站| 99这里只有精品99| 九九精品免费视频99| 婷婷五月天视频在线观看| 97色吧| 五月色情婷婷| 99热这里只有精品3| 狠狠综合网| 亚洲色五月| 任你操精品免费| 精品99视频| www.色色五月天.com| 久久久久亚洲AV无码网影音先锋| 五月婷婷婷色| 天天插,天天射| 激情婷婷视频在线| 天天日天天舔| 麻豆精品|