欧美成人午夜精品久久久,国产?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
返回資訊列表
九九精品综合| 丁香五月激情综合| 插插五月天| 欧美激情 日韩无码 婷婷 五月天| 色色六月| 激情综合五月丁香| 九色PORNY自拍成人精彩视频| renrencaoav| 1囯产午夜仑鲁鲁| 激情五月婷| AV激情五月| 五月天伊人av| 五月天婷婷綜合院| 五月天丁香婷婷社区| 色99视频| 99热在线只有精品| 精品久久99| 亚洲成人在线五月天| 粉嫩av蜜桃av蜜臀av| 99热个人在线| 成人网在线观看视频| 99爱视频| 碰碰女| 99九九精品视频| 俺也去在线久久精品23欧美综合视频网站,丰满人妻一区二区三区在线视频53,丰满 | 久久婷婷网站| 亚洲午夜AV| 九九热只有精品| 婷婷五月深情丁香深爱日韩| 九色视频91疯狂| 国产黄色av| 五月丁香色欲| 9热久久在线| 少妇性按摩无码中文A片| 在线看片av| 噜噜五月天综合| 五月视频日本免费观看| 欧美va国产va| 涩五月丁香| 成人婷婷桔色| 久久人妻情侣| 天天爽天天摸天天爱| 天天久久综合| 天天做天天爱天天要| 天天干天天干天天干天天干天天干天天干天天 | www.色五月| 婷婷五月天影院| 色色性爱视频| www色色com| 狠狠综合久久| 99网| 99精彩视频在线观看| 国产精品久久久久9999小说| 五月激情综合网婷婷| 天天干,夜夜爽| 久热九九| 黑人糟蹋人妻HD中文字幕| 自拍偷窥99热| 国产偷人爽久久久久久老妇APP| 国产精品成人在线| 亚洲成人av中文| 五月天婷婷无码| AV在线不卡播放| 99热这里有精品| 色色五月婷婷| 中文字幕亚洲-区久久99婷婷| 激情五月九九九| 97伊人综合婷婷| 操比激情五月综合| 五月开心婷婷中文字幕| www开心激情网| 人人人va亚洲视频在线| 婷婷五月丁香91| 色呦呦美女| 99精色| www.色五月| 99网| 91要啪| 久久女婷| 五月天色影院| 婷婷色在线| 国产,欧美,学生妹,视频| 乱乱av| 一本久久婷婷| 成人AV免费观看| 广东99色在线| 色播婷婷大香蕉| 色五月婷婷老师| 亚洲深喉aV| 丁香五月乱中文字幕| 五月婷婷激情久久| www.99热| 任你擦免费视频| 99久久精彩视频。| 五月天婷婷综合| 五月婷婷影院| 岛国操B不卡在线| 五月天久久婷婷| 激情综合五月色在线| 婷婷色爱| 在线看的免费网站| 亚洲色精彩| 亚洲成人五月天| 久久性视频| 丁香五月婷婷综合激情啪啪啪啪啪啪啪| 激情中文在线| 欧美草久久五月天91| 婷婷综合精品| 亚洲秘 无码一区二区三区妃光/1| 天天骑日日爽| 丁香 亚洲 久久| 国产成人AV| 99男人的天堂| 亚洲秘 无码一区二区三区妃光/1| 婷婷五月天电影网| 五月色婷婷影院| 丁香五月婷婷色五月| 综合网五月| 超碰av在线| 亚洲天堂有码| 精品久久66| 丁香五月天堂网| 91九色无码内射| 97丁香花五月天激情小说| 噜噜国产| 日韩美女羞羞网站在线观看| 99热99热在线| 丁香五月亚洲综合| 99热在线免费| 熟妇国产| 五月激情久久| 曰本aaaaaa丈片| 亚洲色色图片| 五月婷婷久久内射| 成人看片网站| 欧洲综合视频| 99久久久久| 色99www.| 日本在线99| 五月婷天堂视频| 婷婷五月天日逼| 五月丁香综合啪啪| 深爱五月月天| 欧美成人精品A片免费一区99| 99精品在线播放| 色色色在线观看| 中文av在线观看| 亚洲va欧美va国产综合久久久| 亚洲色色色| 日韩成人AV在线| 五月婷婷丁香大陆免费| 超碰免费人人| 一点色成人网| 丁香五月婷综合网| 色综合中文| 天天综合精品| 99九九在线| 色播五月综合网| 97在线日本| www.狠狠艹| 婷久久久| 日韩AV片| 国产成人AV人人爽人人澡Va| 97人人妻人人艹| 五月天婷婷综合色| www.99热这里精品| 激情AV在线| 久久伦乱| 亚洲色婷婷激情| 色色色网站| 色在线五月天免费| 91热久| www,com,五月色色| 精品五月丁香| 婷婷成人av| 婷婷五月亚洲一本在线丁香| 99热在线观看免费中文| 国产精产国品一二三在观看| 99看片| 国产一区18| 色情五月婷| 欧美婷婷丁香五月社区| 爱超碰性| 爆乳熟妇一区二区三区爆乳照片| 五月丁香天天| 黄色激情久久| 在线成人va| 日韩在线五月天婷婷| 人人综合91网| 亚洲A片成人无码久久精品青桔| 欧美狠狠地| 99久久精品国产色欲| 久9热在线视频| 这里只有精品,日韩视频| 久99久视频精品| 丁香五月激情网| 66精品国产成人| 久久激丁香| 久久在线大香蕉| 精品在线| 99九无网码| 啪啪啪大香蕉| 久热成人| 激情五月天社区| 丁香五月色| 丁香伍月婷电影全集| 六九色综合婷婷五月天| 亚洲无码成人性爰网| 婷婷五月天首页激情| 五月天激情四射| 天色综合网站| 久久五月丁香婷婷| 91ncm视频| 操嫩逼电影| 久久久久久久久久久97| 亚洲av另类在线观看| 六月丁香av| 3p日韩网站视频| AA久久| 射满了还射免费在线观看 -午夜版全集-新视觉影院 | 欧美日韩国产一二区| 五月丁香婷婷基地| 碰碰女| 亚洲色A| 五月婷六月综合在线观看| 中文字幕av久久爽| www.99色在线| 久婷婷久草| www激情| 五月丁香六月婷婷色日| 操逼棍操逼| 免费色色色| 五月婷婷久久大香蕉| 欧美综合激情| 秋霞AV吧| 亚洲区在线| 第九色区av天堂| 久久激情五月天| 丁香五月亚综合图片| 亚洲激情免费久久| 天天干夜夜b| 五月天婷婷六月激情网| 99视频内射三四| 久久婷婷色综合| 1囯产午夜仑鲁鲁| 色网五月婷婷| 九色成人AV在线| 少妇2做爰HD韩国电影| 婷婷99狠狠躁天天| 99亚洲天堂| 天堂久久婷婷| 超碰在线人妻| 成人深爱丁香五月| 综合xx网| 国熟女视频| 五月天 综合 在线| 婷婷天天综合| 国产午夜一区二区三区| 婷婷五月情| 丁香五月播播| 激情图片婷婷| 99爱爱| 五月综合激情网| 五月婷婷综合网| 大香蕉伊人久久| 色婷五月天| 久9热| www.久久99| 99色在线视频| 欧美日本不卡黄色片| 五月激情四射网站| 97超级操操| 在线91日韩| av最新在线| 在线超碰91| 操日视频| 五月天亚洲最大成人| 五月婷婷香蕉| 六月色婷婷| 五月丁香好婷婷A片网| 丁香久久综合| www.五月婷婷久久.com| 五月丁香青草综合啪啪| 新激情五月天天在线网| 五月天婷婷成人网| 国产毛片操B| 丁香五月激情啪啪啪| 久久亚洲天堂| 亚洲夜五月| 欧美性爱5月天天天看| 天天婷婷色六月| 久久综合影院 | 9999热这里只有精品| www、色色色| 久久多色| 日本eVa一区=区视频| 激情玖玖综合网| 踪合专区啪啪| 九九草热在线观看| 色噜噜97视频在线观看| 亚洲亚洲人成综合网络| www.maotanji.com| 婷婷基地五月色| 五月丁香婷婷综合在线| 欧美成人五月天| 思思热久久艹| 91色色色视频| 亚洲综合丁香五月| 婷婷99狠狠躁天天| AV在线二十六页| 丁香五月天天哦| 婷婷激情五月色综合| 99视频久久| 欧洲电影在线观看免费版英语版| 婷婷丁香在线| 天天日 天天草| 色五月婷婷老师| 五月丁香A片| 超碰三级秋霞| 婷婷五月激情综合| 久久综合网桃花| 日日干综合| 成人 在线 日韩| 日本色色视频| 99热精品9| 天天插天天日| 另类天堂| www.99在线| 超碰在线资源| 色综合色综合网| av九九| 97人人操在线| 在线观看的av| 98色花堂98t.R| 久久五月婷综合| 精品国产va久久久久| 五月婷婷啪啪综合网| 久久一级AV| 婷婷五月丁香av网站| 色噜噜五月天| 九月婷婷综合网| 五月天激情开心网| 激情综合网激情五月婷婷| 天天摸.天天mo| 色爱综合网| 五月色情精品| se影音资源在线观看| 少妇性按摩无码中文A片| 大香蕉啪啪网| 日日夜夜狠狠| 色婷婷成人在线| 丁香色婷婷五月天| 亚洲色婷婷| 成人在线视频网| 色九月欧美| 99亚洲视频| 东京热人妻一区二区三区在线| 丁香五月人妻熟女| 婷婷五月中文字幕| 五月婷丁香| 影音先锋一区| 五月激情丁香五月| 天天综合精品| 啪啪激情网站| 一片AV片免费播放| 色婷久| 天堂综合久| 激情av在线| 欧美婷婷日本| 亚洲综合婷婷| 人妻内射一区二区在线视频| 天天舔日日肏夜夜爽| 婷婷丁香九色| 日婷婷久久开心| 丁香五月激情月| 色婷婷亚洲六月婷婷中文字幕| 9久久网| 99精品国产在热久久婷婷| 91婷婷五月丁香碰| 五月天婷婷色色| 婷婷免费精品视频| 热久综合| 婷婷色丁香五月| 丁香五月天激情婷婷丁香六月 | 夜色综合网| 激情黄色小说色五月| 色爱综合网| 26uuu色噜噜精品一区| 日本少妇裸体做爰高潮片 | 五月丁香激情综合网| WWW·色色色·COM| 久久怡红院| 天天天天天天天操| 色婷婷av在线| 欧美日韩国产一二区| 激情综合一| 五月天激情黄色小说在线观看| 99热免费| 激情五月天婷婷| 六月丁香深深爱综合网| 五月婷婷影视| 中文字幕在线资源| 日本不卡五月婷婷丁香| 婷婷午夜| 色五月婷婷青娱乐| 无码免费人妻A片AAA毛片西瓜| 丁香婷婷婷五月| 婷婷五月天久久久| 31色区视频免费看| 97人人超| 色伊人婷婷| 天天干夜夜欢| 婷婷激情伍月网| 婷婷婷久久| 99久久激情视频| 激情五月天色婷婷| 亚洲综合新99视频| 91碰在线| 二区成人视频| 风流少妇A片一区二区蜜桃| 天天天操天天天日| 婷婷五月激情片| 色婷婷888| 五月婷婷丁香日韩在线| 激情综合网五月天| 国产avapp 网| 久草热视频在线观看| 亚洲VA欧美VA| 久碰视频| 日本色99| 成人综合视频在线| 久久九九大香蕉电院| 色色色国产| 一级内射毛片| 五月丁久久| 五月综合无码| 亚洲AV成人片无码网站| 九九99热久久精品66中文字幕| 五月丁香六月欧美综合| 婷婷激情五月天网站| 国产精品美女| 97久久五月丁香婷婷| 美女久久婷婷| 色色色com| 99∨VTV| 超碰九色| 五月丁香婷婷基地| 久草A片| 婷婷狠狠操| 狠狠色婷婷六月激情网| 狠狠狠狠狠操| 五月丁香六月婷婷亚洲| 热这里| 色播五月丁香婷婷| 亚洲综合视频一下| 玖玖福利视频资源| 天天天摸夜夜夜玩| 色久激情在线| 色五月激情| 色婷婷久综合久久一本国产AV| 激情五月婷婷在线区| 青青草性爱视频| 色九九综合| 丁香六月久久| 婷婷色五月噜噜| 亚洲综合在线伊人婷| 中文AV在线播放| 九九热啪啪| 免费黄色视频网址| 久久激情五月| 电影91久久久| 无码一区二区三区四区五区91c| 日韩国产在线精品| 色都都狠狠色都都色综合色| 99热99操| 99色这里| 99.色| 婷婷午夜天| 九九热在线精品视频| 久久丁香五月| 狠狠操狠狠爱| 色色欧美色色色| 九月停停| 色天堂A| 久久视网36| 色婷婷五月天激情久久| 人人摸人人干人人做| 天天插综合| 色五月欧美| 五月天综合婷婷| 久久99网站| 欧美三9久九观看| 玖玖伊人网| 久久激情五月网| 九九aV| 深爱五月天婷综合| 激情小说婷婷| 丁香五月大香蕉| 婷婷六月香| 玖玖婷婷五月| 精品综合久久久久久五月天| 五月婷婷之综合激情| 97操碰视频| 国产美女无遮挡裸体毛片A片| 婷婷五月天国产传媒| 色色色天堂网| 天天爱天天做天天舔| 岛国AV网站| 色五月婷婷色| 久久se 综合网| 五月开心久久| 成人国产网| 午夜成人综合| 五月天激情啪啪| 日韩AV片| 亚洲综合欧美色丁香婷婷888月图片| 爆乳熟妇一区二区三区爆乳照片| 婷激情五月| 91九色精品熟女内射| 五月丁香婷婷五月色| 噜噜色五月| 99精品视频在线| 久久最新色| 99人妻碰碰久久久禁片| 亚洲综合婷婷| 五月天播播中文字幕| 色色操| 久久久婷婷五月亚洲97号色| 伊人9999| 国产一区二区三区影院| 中文字幕视频在线播放| 人人爱国产| 国产成人精品亚洲线观看| 色婷婷在线影院| 九九热在线视频,| 色综合99| 99色网站| 4438激情网| 青青久久五月天丁香婷婷| 99惹在线精品免费观看| 亚洲午夜视频| 久xxxx| 五月婷婷激情综合视频| 日韩黄在免| 综合激情五月四射婷婷| 五月丁香婷中文| 日韩AV中文字幕在线| 色婷婷国色天香综合| 五月天色色网站| 五月天色五月| 亚洲第一影院高清无码网站| 五月婷婷网五月在线| 五月婷丁香| 91超级碰| 激情五月天色色网| 亚洲色碰| 五月婷婷婷婷| AA丁香综合激情| 色三级色三级| 九久9精品| 亚韩在线视频| 超碰在线人妻| 思思热精品在线| 成人在线视频网| 成人在线不卡| 久久久人妻久久久| 另类视频在线| 免费精品66| 九九这里只有精品| 狠狠五月天婷婷| 天天日天天操心| 这里只有精品热| 九九伊人网| 五月丁色AV| 色播综合| 思思99re这里只有| 丁香五月婷婷操逼| 婷婷五月天电影网| 大香蕉99热| www.zbzhongsen.com| 色狠狠色| 精品一区二区三区免费毛片爱| 欧美va亚洲va| 99人妻碰碰久久久禁片| 99成人免费热视频| 99人人操人人爱久久久| 这里只有精品免费视频| 婷婷五月天,影院| 丁香综合日产精品久久| 丁香婷婷视频在线| 91狠狠综合久久久| 大香蕉久久青青| 思思热AV| 人妻22p| 国产超碰在线| 亚洲激情97五月天| 色婷婷超碰| 五月丁香六月激情在线| 天天干天天 亚洲| 99热久久日本| www.色综合| 狠狠五月天婷婷激情网。| 99热这里都是精品| 色五月天丁香| 成人国产网站在线免费看| 婷婷色av| 看婷婷五月天网| 日韩在线观看网址| 五月丁香激情婷婷| 五月婷婷丁香伦理网| 国产三级在线播放| 色五月丁香五月| 色五月婷婷啪啪五月| 免费AV在线网址| 激情小说婷婷| 五月天婷婷综合免费| 97超碰人人操| 狠狠爱丁香婷| 99精品在线| 欧美成人网99网| WWW,色五月| 特黄三级又爽又粗又大| www.色99| 操逼巨乳91| 日本五月丁香| 99热偷拍| 1234操逼网| 欧洲色区| 五月丁香色色网| 日日艹思思热| 日本色婷婷五月天成人电影| 色热久| 91熟妇大香蕉| 少妇搡BBBB搡BBB搡毛茸茸| 丁香激情网| www.五月丁香av| 五月天激情小说婷婷| 成人AV网站在线| 99精彩视频网站在线| 激情九月婷婷| 一起草无码| 99亚洲精品视频| 99热这里只有精品50| 99色色爰| 五月丁香成人| 97热在线精品| 超碰国产在线观看| 91色欲综合| 精品成人在线| www.超碰97| 色婷婷五月天| 色色a| 久热99| 久久99操| 亚洲成人在线播放| 成人午夜无码视频| 激情av| 九九热re99re6在线精品| 五月婷婷开心综合| 综合一本道| 伊人五月成人| 五月丁查人人| 俺去也五月天婷婷| 噜噜噜久久亚洲精品国产品91| 六月亚洲| 我要射综合| www.av骚货| 五月丁香六月花| 五月天电影网| 五月天婷婷亚洲| 夜夜干夜夜操| 久久婷网| 天天操人人干| 国产人妻777人伦精品HD| 中文字幕 码精品视频网站| 日本九九九九| 一起草AV入口| 精品无码片| 99五月婷| 九九九这里只有精品| 99在线精品观看99| 国产五月丁香在线| 综合热无码| 欧美草久久五月天91| 99热亚洲精品| 久久狼人天堂| 天天做天天爱天天爽| 无码人妻少妇色欲AV一区二区| 五月婷婷综合激情| 色欲久久久久久综合网综合网| 久久99激情| 色狠久| 亚洲旡码| 六月丁香久久| 婷婷丁香色女人| 免费超碰在线| 色婷五月| 五月婷人妻| 激情伊人五月天| 婷婷丁香五月综合免费视频百花| 色婷婷电影网| 国产精品VIDEOSSEX久久发布| 草草色情综合网| 97色视频网| 亚洲1区| 九九家庭影院| 欧美激情凹凸丁香网| 五月久久婷婷天堂视频| 天天骑天天操| 丁香花狠狠婷婷亚洲中文字幕| 日韩精品电影| 99er国产| www夜夜操| 久热伊人| www.激情五月天.con| 在线婷婷| 六月婷婷影院| 综合网色| 国产av网| 亚洲精品乱码久久久久久按摩观| 亚洲丁香网| 欧美亚洲婷婷五月| 色婷婷网| 国产AV成人精品| 亚洲啪啪视频| 国产色色网址网站| 五月婷婷婷自由综合| 一级二级色大片| 国外亚洲成AV人片在线观看| Www99热| 天天狠天天狠| 色五月AV| 99噜噜噜在线播放| 另类视频在线| 99乱视频| 六月婷婷色色网| 亚洲综合久| 色婷婷六月丁香综合欲精品| 五月亭亭开心网| 97碰碰在线观看视频| 99热精品网| 色婷婷欧美| 狼人伊人干| 四五月婷婷| 大香蕉婷婷丁香视频在线| 久在线综合69| WWW五月天| 婷婷伊人綜合中文字幕| 艹色18p| 夜夜骑日日夜夜| 色婷婷狠狠爱| 久久久人妻| 丁香激情综合| 激情图片婷婷| 丁香五月欧美| 亚洲激情网| 五月激情在线| 开心五月婷婷综合在线精品素人| 日韩av干| 日韩成人无码| 开心久久xxx色| 99视频精品| 丁香五月天天| 久久激情五月| 久草视频大香蕉99| 五月婷婷激情综合视频| 久久人妻熟女一区二区| 欧美成人无码高清一区二区三区| 成人欧美日韩| 久久9热| 夜夜骑夜夜撸| 91人人操人人看| 人人射人人高潮| 久热AⅤ| 日本熟女内射| 色婷婷久久7777| 狠狠色 综合色区| 亚洲综合五月天婷婷| 日日干综合| 青青久在线视频免费观看| 五月天色婷好好| 久久人妻视频| 综合五月丁香久久| 欧美色五月| 桃色Av色哟哟| 性一交一乱一交A片久| 热九九在线| 亚洲视频在线观看| 综合色天天| 久草婷婷在线| 婷婷丁香激情综合色情| 七月激情六月婷婷综合在线播放| 婷婷五月天黄色小说| 五月丁香激情啪啪网| 激情五月天在线视频| 伊人玖玖网| 婷婷娌伦网| 噜噜干日本| www,天天干| 天天 日综合| 色欲色欲久久宗合网| 九九热视频精品| 免费看无码视频A级| 97色在线视频| 丁香五月AV综合| 日本色啪| 色综合另类| 色播五月婷婷| 99视频| 99人人操人人爱久久久| AV五月丁香| 丁香五月综合激情久久潮喷| 激情五月婷婷丁香| www.五月天色色.com| 久久综合九九| 色色色色色色97| 日本黄色在线观看| 丰满人妻一区二区三区| 国产精品久久久久久五月天加勒比| 丁香深五月婷婷| 夜夜 操无码| 婷婷亚洲激情在线观看视频| 九九热99精品| 婷婷五月色| 五月丁香色婷婷熟女| 国内久久久精品99| 五月婷丁香| 色偷偷色婷婷| 99极品视频| 久久五月天 91| 亚洲天天| 日日夜夜爽| 色婷婷久久| 97人人操人人拍| av网址在线| 丁香五月六月激情| 久9精品视频| 日本91在线播放| 狠狠狠狠狠狠色| 九九色99| 九月激情网| 婷婷综合干| 亚洲五月天激情| 五月亭亭直播| 99久久a线观| 超碰在线免费9| 婷婷欧美激情综合| 国产色五月| 色婷婷基地在线| 久久日曰| AⅤ网站在线看| 久久性视频| 中文av网| 五月天婷婷导航| 99热色无码| 六月婷婷最新网址| 610018岁成人视频| 黄网在线免费观看| 天天爽夜夜操| 这里只有精品久| 5月色婷婷| 怡红院91a√| 麻豆AV一区二区三区| 91精品综合久久久久久五月丁香| 丁香五月激情综合啪啪| 丁香六月激情综合网| 日本人人草草| 国产亚洲99久久精品熟女| 狠狠操天天干| 五月丁香日本在线视频观看| 久99久99精品免| 99热黄| 午夜天堂一区人妻| 久久激情视频| 四色五月婷婷| 五月天综合久久| 日本色久| 六月天婷婷| 五月婷婷婷婷| 99热精地址| 五月婷婷欧美激情| 亚洲婷婷丁香五月亚洲| 久久6这里只有精品| 久久丁香五月天| 欧美人妻一区二区| 五月天久久激情| 成人国产网站在线免费看| www.婷婷六月天| 亚洲色夜| 天天情色综合网| 在线婷婷| 久9久9久9久9久9久9| 丁香六月婷婷激情| 俺来也狠狠| 超碰人人操人人干| 激情综合色婷婷啪啪六月天| 一级黄色操B| www,五月丁,com| 三年高清大片免费观看国语| 五月天婷婷色五月天| 色色色99| 99视频九九热| 亚洲天堂大香蕉| 国产亚洲精品久久久久苍井松| 激情四射五月天偷偷看婷婷| 久热这里只有精品99re| 69久久99精品久久久久婷婷| 天天干一干| 人人干人人操外国| 色婷婷丁香五月天在线观看| 99爱在线| 欧美狠狠地| 奇米影视777在线_在线观看午夜_h小视频在线观看_岛国大片 | site:ornaments52.com| 120分钟婬片免费看| 丁香五月六月久久综合| 成人精品在线| ww亚洲ww在线观看| 伊人久久婷婷| 激情婷婷五月女| 婷婷精品| 色五月天综合| 五月婷婷香蕉视频| 五月婷婷九月婷婷九月婷婷| 91色色色视频| 日日爽夜夜爽| 香焦网五月天| 天天干天天干天天干天天干天| 91丨九色丨丰满人妖| 色婷婷亚洲婷婷| 久久黄A片| 欧美人与性动交CCOO| 婷婷五月天手机版视频| 五月婷婷色在线| 99热这里只有精品22| 激情五月天色色色| 色爽九九| 久久综合爱| 日产精品久久久久久久蜜臀| 日韩av网址大全| www.玖玖婷婷在线| 原琪琪色影院| 国产1区2区3区在线观| 极品人妻VIDEOSSS人妻| 久久久久人妻精选| 狠狠九九婷婷韩| 久久丁香| 色爱综合视频| 色色热日| 五月综合视频| 三级三久久线久久99久目本WW| www.zbzhongsen.com| 开心五月激情站| www.九月婷婷丁香.com| 婷婷五月天视频免费在线观看| 久久激情网| 99热这里只要精品免费| 丁香五月激情啪啪啪啪| 91色逼| 一起草无码视频| 综合久久十三| 婷婷六月色播| 色五月婷婷综合| 99在线精品免费视频| 99热这里只有在线| 美女激情综合| 内射人妻视频国内| 日本美女五月天| 天天爽天天日人人爱| 五月天久久婷| 婷婷久月| 米奇影视资源777狠狠色婷婷五月天激情网| 卡视频1区2区| 天天日夜夜| 五月丁香婷婷俺| 99自拍视频在线| 日本V在线观看不卡视频网站| 99成人| 综合久久婷婷五月丁香| 天天激情站| 99视频内射三四| 成人欧美Va| 婷婷五月天黄色| 老师的粉嫩小又紧水又多A片视频 粉嫩AV久久一区二区三区 | 狠狠综合网| 丁香六月天| 色欲日日躁| 午夜日韩久久久网站| 色播五月丁香| 五月综合视频| 久久久久99精品成人片| 激情五月天色婷婷综合| 色综合99| 五月婷婷激情| 天天免费日日夜夜夜夜| 亚洲日韩国产黑丝黑丝AVAV一区二区三区| 国产真人做爰视频免费| 深爱激情五月天| 亚洲 小说 欧美 激情 另类| 991国产精选视频在线播放下载| 免看黄大片AA | 狠狠色噜噜色狠狠狠综合久久成人波| 久久色情| 色综合久久88| 国产肥白大熟妇BBBB视频| 久99久视频| 丁香 婷婷 亚洲 熟女| 五月色网| 日韩美女羞羞网站在线观看| 国产看真人毛片爱做A片| 丁香五月激情啪| 婷婷六月丁| 久久五月丁香激情综合| 91日韩在线| 日韩无码91| 91大操| 1000部毛片A片免费观看| 色色色在线观看| 五月丁香中文字幕| 五月天婷婷基地丁香| 色丁香五月天| 久婷婷五月综合欧美| 久久婷婷五月综合色欧美| 五月天精品| www.色婷婷| 深爱五月天| 色 色 色综合com| 亚洲精品久久久久久久久久吃药| 亚洲网站在线鸭子av| 激情久久肏屄视频| 五月天激情综合网| 色情成人五月天| 狠狠噪| 亚洲欧洲中文日韩久久AV乱码| 99热激情| 色情丁香五月婷婷精品| 性热视频99精品| 伊人五月天| 天天插,天天射| 色五月婷婷激情| 久久性爱视频这里只有精品| 婷婷一本和五月丁香| 天天在线天天综合网色| 九月婷婷| 9.1综合网| 桃色Av色哟哟| 亚洲欧美成人在线| 五月婷婷六月天| 日本婷婷| 六月丁香啪啪啪| 9l视频自拍9l九色成人| 99性爱视频| 色中色综合| 9久久精品| 日日操天天操| 777精品久无码人妻蜜桃| 色色亚洲| 天堂无码人妻精品AV一区| 精品夜夜澡人妻无码AV| 国产精品久久久久久久久久| 婷婷五月激情网| 伊人综合网站| www.色多多婷| 日本色99网站| 91大神在线免费看视频全集男男一起操| 日韩有码一区| 99久久色| 激情五月婷| 亚洲第二AV| 91精品人妻少妇无码影院| 97碰| 精品婷婷| 激情精品久久| 六月丁香激情综合| 狠色色狠网| 婷婷五月天基地| 亚州色婷婷| 99精品综合视频| 亚洲第一成人无码A片| 天天综合网~91| 五月天婷婷涩涩| 日本一级| 这里只有精品视频在线观看免费| 性婷婷| 五月天色婷婷网| 1024操逼视频| 99re思思久久| 99视频| 99久久.www| 色哟哟精品| 亚洲精品乱码久久久久久综合| 日本激情五月| 激情综合网五月激情网| 99热日韩| 少妇出轨做爰高潮A片| 天天干在线播放| 综合色影院| 五月丁香久久综合| 婷婷五月久久| 综合久久久| CHINESE熟女老女人HD视频| 久久桃花网色婷婷| 亭亭五月基地在线| 色综久久AV| 99人人操人人摸| 在线观看亚洲视频影院| 97色色视频| 热99.com婷婷| 99日本精品视频热| 婷婷综合网伊人| 色无码| 无码少妇高潮喷水A片免费| 精品久9| 亚洲综合视频网| 久久婷婷操| 9色在线视频| 国产肥白大熟妇BBBB视频| 高清国产一级婬片a免费| 色八月婷婷| 激情五月狠狠| 中文字幕 中文字幕明步| 日韩99无码| 色色激情网| www.亚洲激情| 99热精品中文字幕| 婷婷在线五月综合| 国产亚洲99久久精品| 五月天婷婷高清无码| 成人综合视频在线| 国产婷婷婷| 婷婷六月色| 夜夜操天天爽| 色色无码| 久9久成人精品视频| 婷婷五月激情综合| 婷婷激情五月综合| 欧美大片免费播放器| 999精品乱码77777| 99在线国| 五月香婷婷| 久久九九@| 日本va视频| 五月天婷婷久久| 亚洲综合视频网| 1010日日无码| 99热婷婷| 综合色五月天| 另类激情五月天| 欧美性猛交AAAA片黑人 | 超碰免费大香蕉| 激情纯色婷婷五月天在线不卡视频| 国产亚洲色婷婷久久99精品91| 九九九激情综合| 97色色色色色色色| 九九这里只有精品| 五月丁香在线观看国产| 99r久久这里只有精品| 亚洲成人中心| 五月丁香另类网| 五月亭亭激情综合| 亚洲操人| 操操自拍| 婷婷免费视频| 日本婷婷色| 婷婷五月天xxx| 无码色色色| 色9999日韩国产| 日本久久超碰| 操日挥操日日| www.丁香六月婷婷久久天堂影院.con| 色婷婷久久久| 亚洲综合视频网| 99人人精品| 丁香五月六月| 国产av第一专区| 五月停停丁香| 天堂综合久| 99ri视频在线观看| 这里只有精彩视| 草草色情综合网| www,色中色| 五月丁香啪| 色黑鬼导航| 九九这里只有精品| 五月丁香婷婷久久| 丁香花五月天激情| 欧美日本国产欧美日本韩国99| 婷婷五月天视频免费在线观看| 亚洲精品无码A片一区二区| 五月婷婷色情| 婷婷五月激情欧美大胆视频| 精品国产va久久久久久久| 久久久97| 热99视频精品| 中文字幕无码人妻少妇免费视频| 天天操天天日天天爱| 伊人啪啪网| 99er这里只有精品视频| 欧美日朝成人| 另类天堂| 久久激情五月| 五月激情综合激情五月| 婷婷成人五月天成人文学| 丁香婷婷六月激情文学 | 久久丁香五月天| 五月天合网| 亚洲V国产V欧美V久久久久久| 五月婷婷中文网| 久久精品一区二区三区四区| 欧美天天性| 色婷婷播放| 婷婷色基地| 精品爆操| 久99热| 成人必爱视| 国产肥白大熟妇BBBB视频| 亚洲激情色色| 丁香五月婷婷少妇| 热99在线精品| 超碰av天堂| 丁香六月情| 日日干综合| 丁香花综合永久入口| 十月色综合| 超碰97免费在线| 久久婷婷综合拍| 亚洲 视频 导航 一区| 亚洲另类婷婷综合| 九九色精品| 国产肥白大熟妇BBBB视频| 99色热视频| 亚洲第一av| 亚州色色色| 色五月视频无码播放| 狠狠婷婷综合| 五月天成人综合| 久热伊人| 亚洲激情网| 99视频在线观看欧| 自拍视频在线观看9| 特黄三级片| 美女五月天婷婷| 亚洲欧洲美女在线观| 超碰在线超碰| 六月丁婷婷| 九九婷婷热| 97影院一级片| 色婷婷丁香五月在线| 99热人人操人人操| 热99在线精品| 欧美色骚婷婷五月天| 亚洲成人av在线观看 | 丁香五月天婷婷中文字幕| 91视频一起草| 国产小精品| 天天干电影| 欧日韩AV| 九月性爱网| 丁香婷婷色五月| 99这里只有精彩视频| 91人人爽狠狠狠| 精品夜夜澡人妻无码AV| 色五月播五月| 嫩草综合网| 亚洲综合视频网| 久久婷婷七月丁香|