亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

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

MySQL 8.0性能調(diào)優(yōu)實(shí)戰(zhàn):從配置、索引到SQL與監(jiān)控

MySQL 8.0性能調(diào)優(yōu)實(shí)戰(zhàn):從配置、索引到SQL與監(jiān)控 MySQL 8.0 基礎(chǔ)優(yōu)化實(shí)戰(zhàn)指南從配置到性能調(diào)優(yōu)很多人以為裝好MySQL 8.0、把數(shù)據(jù)導(dǎo)進(jìn)去數(shù)據(jù)庫就算能用了。直到某天業(yè)務(wù)慢得像蝸牛爬開發(fā)跑過來喊了一句數(shù)據(jù)庫卡了你才發(fā)現(xiàn)默認(rèn)配置和真實(shí)負(fù)載之間隔著一整座山。這篇指南就是要把MySQL 8.0從配置文件、索引設(shè)計(jì)、SQL寫法、鎖與事務(wù)、監(jiān)控巡檢這五條線串起來講清楚優(yōu)化時(shí)先動(dòng)哪里、后動(dòng)哪里以及每個(gè)操作背后的原因。不管你是正在接手一個(gè)MySQL 8.0項(xiàng)目的開發(fā)者還是已經(jīng)踩過幾個(gè)坑但想系統(tǒng)梳理一遍的運(yùn)維同學(xué)按這個(gè)順序走一遍基本能把數(shù)據(jù)庫從跑得動(dòng)推到跑得快。我這些年處理過的MySQL性能問題里至少有一半以上不是機(jī)器不行而是配置沒跟業(yè)務(wù)對(duì)齊、索引沒建對(duì)、SQL寫法太隨性。所以這篇指南不給那種裝完點(diǎn)下一步的流水賬只講真正影響性能的關(guān)鍵動(dòng)作。1. 基礎(chǔ)配置優(yōu)化先別急著動(dòng)參數(shù)先搞懂這幾個(gè)關(guān)鍵項(xiàng)MySQL 8.0安裝完用的是一套非常保守的默認(rèn)配置目的只是保證它能跑起來、兼容性最好生產(chǎn)環(huán)境的壓力和這套配置完全不匹配。舉一個(gè)最常見的例子innodb_buffer_pool_size默認(rèn)只有128M假如你機(jī)器有32G內(nèi)存不把這個(gè)參數(shù)調(diào)大InnoDB的緩存池只夠裝十分之一不到的熱點(diǎn)數(shù)據(jù)剩下的請(qǐng)求全部落到磁盤I/O上。磁盤再快也遠(yuǎn)不如內(nèi)存快性能自然上不去。所以我調(diào)優(yōu)的第一件事永遠(yuǎn)是結(jié)合業(yè)務(wù)特點(diǎn)把基礎(chǔ)參數(shù)先立起來然后再談索引和SQL。順序反了的話你后面再努力也可能是在給錯(cuò)誤的配置環(huán)境打補(bǔ)丁。1.1 連接數(shù)別亂調(diào)大要點(diǎn)是算峰值并發(fā)max_connections默認(rèn)是151開發(fā)環(huán)境甚至小網(wǎng)站都?jí)蛴玫坏交顒?dòng)大促或定時(shí)任務(wù)并發(fā)場(chǎng)景就特別容易打滿。打滿之后的表現(xiàn)很典型應(yīng)用日志里全是Too many connections新請(qǐng)求進(jìn)不來老請(qǐng)求又堵著不結(jié)束整個(gè)鏈路雪崩。最簡單的確認(rèn)方式是執(zhí)行下面這條SQL看當(dāng)前連接數(shù)和配置上限的差距SHOW STATUS LIKE Threads_connected; SHOW VARIABLES LIKE max_connections;調(diào)優(yōu)時(shí)你可能會(huì)想那直接把max_connections設(shè)成2000不就完了還真不行。每個(gè)連接都會(huì)占用線程和內(nèi)存資源連接數(shù)設(shè)得太大CPU會(huì)大量浪費(fèi)在線程切換上請(qǐng)求響應(yīng)反而更慢。一般做法是先估算業(yè)務(wù)峰值時(shí)的并發(fā)連接數(shù)然后在這個(gè)基礎(chǔ)上預(yù)留30%-40%的余量。比如你用壓力測(cè)試得出500并發(fā)已經(jīng)能扛住業(yè)務(wù)峰值那么max_connections設(shè)在800左右就差不多了。另外程序側(cè)連接池的設(shè)置也很關(guān)鍵。很多應(yīng)用框架默認(rèn)的連接池是20到50個(gè)連接一個(gè)實(shí)例不夠就多開幾個(gè)實(shí)例這比在數(shù)據(jù)庫端放開幾千個(gè)連接要健康得多。我實(shí)測(cè)過把同樣請(qǐng)求壓力從連接池200個(gè)連接改成數(shù)據(jù)庫2000個(gè)連接連接池方案下的平均延遲小了一個(gè)數(shù)量級(jí)。別把數(shù)據(jù)庫當(dāng)成無狀態(tài)的服務(wù)去猛連連接是個(gè)昂貴的資源。1.2 InnoDB緩沖池與日志文件性能地基innodb_buffer_pool_size是MySQL里最重要的性能參數(shù)沒有之一。InnoDB會(huì)把數(shù)據(jù)頁、索引頁、變更緩沖等都放在這個(gè)內(nèi)存區(qū)域里所有讀寫操作先跟這塊內(nèi)存打交道內(nèi)存不夠了才落盤。經(jīng)驗(yàn)上這個(gè)值可以設(shè)置到物理內(nèi)存的60%到75%。舉個(gè)例子32G內(nèi)存的機(jī)器可以給到20G左右64G內(nèi)存給到40G到48G。如果你的服務(wù)器上不只跑MySQL還要跑應(yīng)用進(jìn)程那得按實(shí)際可用內(nèi)存重新算不要把機(jī)器搞到開始用swap。MySQL 8.0支持動(dòng)態(tài)調(diào)整緩沖池大小方便先看效果再固化到配置文件SET GLOBAL innodb_buffer_pool_size 20 * 1024 * 1024 * 1024;但注意這個(gè)動(dòng)態(tài)設(shè)置在重啟后會(huì)丟失調(diào)整到滿意的值之后記得同步修改my.cnf。緩沖池有沒有起作用看命中率SHOW GLOBAL STATUS LIKE Innodb_buffer_pool_read%;命中的比例越高說明內(nèi)存緩存越有效。再來看innodb_log_file_size。MySQL 8.0默認(rèn)是48M這個(gè)值對(duì)寫密集的業(yè)務(wù)來說實(shí)在太小了。redo log太小意味著日志切換特別頻繁每一次切換都要做一次checkpoint把臟頁刷到磁盤磁盤持續(xù)高負(fù)載整個(gè)數(shù)據(jù)庫的寫性能就會(huì)明顯下滑。在寫多讀少的業(yè)務(wù)里我習(xí)慣把innodb_log_file_size調(diào)整到512M甚至1G同時(shí)也要觀察磁盤空間和恢復(fù)時(shí)間日志太大崩潰恢復(fù)時(shí)花費(fèi)的時(shí)間也會(huì)更長。正常運(yùn)維周期內(nèi)1G這個(gè)檔位對(duì)很多中等規(guī)模業(yè)務(wù)都算合理。innodb_flush_log_at_trx_commit這個(gè)參數(shù)建議你有意識(shí)地選一次。默認(rèn)值1表示每次事務(wù)提交都把日志刷到磁盤最安全但每次提交都要等一次磁盤fsync性能開銷大改成2表示每次提交只寫入操作系統(tǒng)緩存每秒再刷一次盤性能明顯好但MySQL進(jìn)程崩潰時(shí)可能丟最多1秒的事務(wù)。如果是金融交易類業(yè)務(wù)老老實(shí)實(shí)用1大多數(shù)互聯(lián)網(wǎng)業(yè)務(wù)能接受極小概率的秒級(jí)丟失可以用2換性能。很多團(tuán)隊(duì)完全沒有考慮過這個(gè)參數(shù)其實(shí)它和你的可靠性要求是直接相關(guān)的。1.3 字符集、時(shí)區(qū)與幾個(gè)會(huì)話級(jí)參數(shù)的坑MySQL 8.0默認(rèn)字符集已經(jīng)是utf8mb4這比5.7時(shí)代默認(rèn)latin1強(qiáng)很多但建庫時(shí)還是要顯式確認(rèn)一遍。尤其要注意默認(rèn)的排序規(guī)則utf8mb4_0900_ai_ci是不區(qū)分大小寫的如果業(yè)務(wù)要求用戶名、訂單號(hào)查詢時(shí)必須區(qū)分大小寫這個(gè)默認(rèn)值會(huì)讓你查出來的結(jié)果比預(yù)期更多而且還會(huì)讓LIKE查詢帶上額外的排序規(guī)則轉(zhuǎn)換成本。建表時(shí)按實(shí)際需要指定COLLATE utf8mb4_bin或者utf8mb4_0900_as_cs比事后改表省心得多。時(shí)區(qū)這個(gè)坑也很隱蔽。MySQL 8.0的系統(tǒng)時(shí)區(qū)和應(yīng)用服務(wù)器的時(shí)區(qū)如果不一致你存進(jìn)去的DATETIME看著沒問題但用JDBC連接時(shí)如果服務(wù)端時(shí)區(qū)跟客戶端不一致轉(zhuǎn)換出來的時(shí)間完全對(duì)不上。排查問題到最后發(fā)現(xiàn)是時(shí)區(qū)偏移引起的既浪費(fèi)精力又容易誤傷業(yè)務(wù)邏輯。我習(xí)慣在連接串里顯式指定時(shí)區(qū)同時(shí)在MySQL側(cè)把全局時(shí)區(qū)設(shè)為業(yè)務(wù)統(tǒng)一時(shí)區(qū)兩邊對(duì)死。會(huì)話級(jí)參數(shù)里最容易被高估的是sort_buffer_size。它表示每個(gè)連接做排序操作時(shí)能使用的內(nèi)存看上去大一點(diǎn)排序更快但這是每個(gè)連接都會(huì)分配的如果全局設(shè)置了8M200個(gè)連接同時(shí)排序就是1.6G內(nèi)存內(nèi)存瞬間被打爆。正確做法是保持默認(rèn)或小幅調(diào)整然后用狀態(tài)變量Sort_merge_passes觀察實(shí)際排序過程中是否有大量落盤操作如果這個(gè)計(jì)數(shù)很大再針對(duì)性放大排序緩沖。同理還有join_buffer_size別聽網(wǎng)上那些調(diào)大排序緩沖提升性能的配方就亂改會(huì)話級(jí)參數(shù)影響范圍大要謹(jǐn)慎。提示調(diào)參數(shù)最忌諱一次性改十幾個(gè)再重啟觀察出了問題根本不知道是哪個(gè)參數(shù)造成的。一次只改一兩個(gè)每次改完做一輪對(duì)比壓測(cè)或者看一段時(shí)間的運(yùn)行曲線確認(rèn)有效再改下一批。2. 索引優(yōu)化慢查詢的根源大多在索引設(shè)計(jì)配置是地基但真正讓查詢變慢的常見原因還是索引沒建好。MySQL 8.0的優(yōu)化器能力比老版本強(qiáng)了不少但它再聰明也需要一個(gè)合理設(shè)計(jì)的索引結(jié)構(gòu)。很多人遇到慢查詢第一反應(yīng)是機(jī)器性能不行或者SQL寫得爛但EXPLAIN一看全表掃描、沒有可用索引、回表次數(shù)爆炸問題清清楚楚。這一章我會(huì)從最典型的索引失效場(chǎng)景講到執(zhí)行計(jì)劃怎么看最后說聯(lián)合索引的實(shí)用設(shè)計(jì)原則??炊@三塊你排查慢SQL的思路會(huì)清晰很多。2.1 最常見的索引失效場(chǎng)景你大概率踩過幾個(gè)先看一個(gè)典型例子在created_at字段上建了索引查詢條件是WHERE DATE(created_at) 2025-01-01。對(duì)索引列使用函數(shù)以后優(yōu)化器沒法直接利用B樹的有序性做查找只能把索引列全部取出來算一遍函數(shù)再過濾索引就白建了。正確做法是改成范圍查詢WHERE created_at 2025-01-01 00:00:00 AND created_at 2025-01-02 00:00:00。隱式類型轉(zhuǎn)換也是重災(zāi)區(qū)。假如user_id字段是varchar類型但傳入的是數(shù)字WHERE user_id 123456MySQL會(huì)先把索引列轉(zhuǎn)成數(shù)字再比較同樣導(dǎo)致索引失效。判斷方法很簡單看看表結(jié)構(gòu)里這個(gè)字段到底是什么類型然后確保傳入值跟字段類型嚴(yán)格一致。如果程序里傳參類型不統(tǒng)一建議在SQL層做好類型轉(zhuǎn)換讓參數(shù)先變成字符串再進(jìn)條件。前置通配符的LIKE查詢也是很常見的一個(gè)問題。LIKE %keyword這種寫法優(yōu)化器沒有辦法利用B樹順序掃描的特性只能全索引掃描。業(yè)務(wù)上確實(shí)需要模糊查詢時(shí)我一般先評(píng)估數(shù)據(jù)量幾千行的小表全表掃也就幾毫秒不用太糾結(jié)但百萬行以上就得考慮全文索引或者改造業(yè)務(wù)設(shè)計(jì)讓查詢條件盡量變成前綴匹配。最后提一下OR條件。WHERE a 1 OR b 2如果只在a上建了索引b沒有索引優(yōu)化器很可能放棄索引直接全表掃描。MySQL 8.0雖然支持索引合并但沒有索引的列始終是短板。要么給b也建索引要么把OR改寫成UNION兩條獨(dú)立查詢實(shí)測(cè)下來改寫后的執(zhí)行計(jì)劃往往更穩(wěn)定。2.2 學(xué)會(huì)看EXPLAIN優(yōu)化器想什么別猜EXPLAIN是排查索引問題時(shí)需要最先學(xué)會(huì)看的工具但很多人在MySQL 8.0里還是只盯著一列看實(shí)際上有幾個(gè)列的信息量很大。type列反應(yīng)了訪問方式從好到差大致是systemconsteq_refrefrangeindexALL??吹紸LL基本意味著全表掃描是優(yōu)化的頭號(hào)目標(biāo)index雖然也是全索引掃描但至少比表掃描好一點(diǎn)也可能是因?yàn)椴樵冃枰牧卸荚谒饕铩?shí)用的判斷標(biāo)準(zhǔn)是能用range及以上級(jí)別就合格出現(xiàn)ALL就要處理。rows列是優(yōu)化器預(yù)估需要掃描的行數(shù)雖不是真實(shí)值但能看到大概量級(jí)優(yōu)化前后這個(gè)數(shù)字的變化能反映出索引是否生效。Extra列里重點(diǎn)留意Using filesort和Using temporary。出現(xiàn)Using filesort說明排序沒有用到索引順序需要額外排序操作出現(xiàn)Using temporary說明查詢過程創(chuàng)建了臨時(shí)表常見于GROUP BY、DISTINCT或者復(fù)雜的子查詢場(chǎng)景數(shù)據(jù)量大時(shí)性能下降非常明顯。如果看到的是Using index那說明查詢只訪問索引就能拿到全部需要的數(shù)據(jù)這就是最理想的覆蓋索引狀態(tài)。MySQL 8.0.18版本開始有EXPLAIN ANALYZE可以直接輸出真實(shí)的執(zhí)行耗時(shí)、掃描行數(shù)和各步驟耗時(shí)占比。用法很簡單EXPLAIN ANALYZE SELECT ...;結(jié)果比傳統(tǒng)EXPLAIN更直觀連 實(shí)際執(zhí)行了幾次循環(huán)、每次耗時(shí)多少 都給了。我在排查慢SQL時(shí)會(huì)先跑EXPLAIN看結(jié)構(gòu)再跑EXPLAIN ANALYZE看真實(shí)瓶頸兩步配合基本能把問題定位清楚。2.3 聯(lián)合索引與覆蓋索引的組合拳聯(lián)合索引設(shè)計(jì)的最核心原則是最左前綴。比如在(status, category_id, created_at)上建了聯(lián)合索引查詢條件里必須有status才能用上這個(gè)索引只查category_id或者只查created_at是不會(huì)命中這個(gè)聯(lián)合索引的。所以設(shè)計(jì)聯(lián)合索引時(shí)要把等值查詢的列放前面范圍查詢的列放后面。這里有一個(gè)比較容易忽略的細(xì)節(jié)聯(lián)合索引遇到范圍查詢后面的列就失效了。比如WHERE status 1 AND category_id 10 AND created_at 2025-01-01在(status, category_id, created_at)索引上category_id一旦用了范圍條件created_at就沒法用索引繼續(xù)過濾了。所以正確做法是把范圍條件涉及的列盡量放到聯(lián)合索引的最后。如果幾個(gè)條件都是范圍那就只能取舍選擇區(qū)分度最高、過濾效果最好的列放索引里。覆蓋索引是另一個(gè)提升效率的大殺器。簡單說就是讓查詢需要的所有列都包含在某一個(gè)索引中查詢時(shí)不用回表取數(shù)據(jù)行。舉一個(gè)常見的優(yōu)化案例業(yè)務(wù)請(qǐng)求是SELECT id, name FROM user WHERE status 1如果只在status上建了普通索引那么MySQL查到所有status1的主鍵后還得回表讀取整行數(shù)據(jù)再取出id和name但如果建的是(status, id, name)聯(lián)合索引數(shù)據(jù)在索引里就能全部拿到省掉了回表這趟I/O。對(duì)高并發(fā)讀多寫少的場(chǎng)景覆蓋索引帶來的提升非常明顯。索引也不是越多越好。每多一個(gè)索引寫入時(shí)就要多維護(hù)一份B樹結(jié)構(gòu)更新頻繁的表索引太多反而拖累寫性能還占用額外磁盤空間。我的取舍習(xí)慣是每個(gè)表的核心查詢路徑最多設(shè)計(jì)兩到三個(gè)聯(lián)合索引優(yōu)先滿足最重要的業(yè)務(wù)查詢次要查詢?nèi)绻麛?shù)據(jù)量不大走全表掃描也不是不能接受??偸悄盟锌赡艿牟樵儣l件來建索引最終會(huì)把表逼到寫一次要更新十個(gè)索引的境地。3. SQL優(yōu)化實(shí)戰(zhàn)先開慢查詢?nèi)罩驹倬珳?zhǔn)打擊配置和索引都檢查過了接下來要做的是把真正耗時(shí)的SQL找出來。這一步靠猜是猜不出來的必須依賴慢查詢?nèi)罩竞托阅苤笜?biāo)。很多團(tuán)隊(duì)的MySQL默認(rèn)沒開慢查詢?nèi)罩镜扔陲w行員不看儀表盤在盲飛。開了日志你就知道哪些SQL在消耗大量時(shí)間然后再逐條分析、改寫。3.1 慢查詢?nèi)罩镜恼_打開方式MySQL 8.0里可以用下面幾條命令把慢查詢?nèi)罩敬蜷_同時(shí)設(shè)置閾值時(shí)間。默認(rèn)閾值是10秒對(duì)絕大多數(shù)在線業(yè)務(wù)來說太寬松了很多5秒、3秒的SQL可能天天在跑你都不知道。我一般直接設(shè)到1秒或者0.5秒先跑一段時(shí)間把高頻慢SQL暴露出來再說。SET GLOBAL slow_query_log ON; SET GLOBAL long_query_time 1; SET GLOBAL log_queries_not_using_indexes ON;有一個(gè)非常實(shí)用但容易忽略的參數(shù)是log_queries_not_using_indexes它會(huì)把沒有正確使用索引的SQL也記進(jìn)慢查詢?nèi)罩炯词箞?zhí)行時(shí)間沒超過閾值。這對(duì)早期發(fā)現(xiàn)還沒變慢、但全表掃描量大的隱患很有幫助。不過生產(chǎn)環(huán)境不要長期開著這個(gè)選項(xiàng)因?yàn)楹芏嘈”聿樵儽緛砭筒恍枰饕_著會(huì)導(dǎo)致日志量爆炸。我的習(xí)慣是開展優(yōu)化工作前的1到2周開啟收集完問題SQL就關(guān)掉。拿到慢查詢?nèi)罩疽院笙劝磮?zhí)行次數(shù)和平均耗時(shí)排序找出高頻率慢SQL。這里要區(qū)分兩種問題一種是單個(gè)SQL執(zhí)行時(shí)間特別長比如好幾秒另一種是每個(gè)SQL執(zhí)行時(shí)間幾十毫秒但每秒被調(diào)用成百上千次。前者靠優(yōu)化單條SQL解決后者往往要上升到應(yīng)用層加緩存或者限流去治理單靠數(shù)據(jù)庫層面調(diào)優(yōu)很快會(huì)達(dá)到上限。3.2 深翻頁與子查詢的典型優(yōu)化套路分頁查詢?cè)跇I(yè)務(wù)里太常見了但深翻頁問題直到今天依然在大量項(xiàng)目里存在。LIMIT 100000, 20這種寫法數(shù)據(jù)庫不是只取20條而是掃描完前面的100000條再丟掉掃描成本高得離譜。我一個(gè)朋友接手過一個(gè)千萬級(jí)數(shù)據(jù)的列表頁翻到第100頁之后接口就超時(shí)典型的深翻頁問題。優(yōu)化方案之一是延遲關(guān)聯(lián)先通過覆蓋索引查出目標(biāo)主鍵再用主鍵回表取完整數(shù)據(jù)。改造前是SELECT * FROM orders ORDER BY id LIMIT 100000, 20改造后類似下面這樣SELECT o.* FROM orders o INNER JOIN ( SELECT id FROM orders ORDER BY id LIMIT 100000, 20 ) t ON o.id t.id;這個(gè)寫法的思路是先讓子查詢用主鍵索引快速掃描出這一頁需要的20個(gè)主鍵然后再用連接去取完整數(shù)據(jù)避免了整個(gè)大表層面的掃描和回表。如果業(yè)務(wù)上有更明確的排序條件比如按created_at排序可以考慮基于游標(biāo)的方式記錄上一頁最后一條的created_at和id下一頁用條件過濾來拿數(shù)據(jù)這種寫法在千萬級(jí)數(shù)據(jù)下可以做到翻頁成本恒定。子查詢方面MySQL 8.0已經(jīng)從5.7時(shí)代的大部分需要搞成JOIN進(jìn)化到會(huì)用物化或者半連接策略來優(yōu)化但這不是說子查詢可以隨便寫。我的建議是業(yè)務(wù)邏輯簡單、數(shù)據(jù)量小的場(chǎng)景子查詢和JOIN差別不大按可讀性選數(shù)據(jù)量一大比如外層幾萬條、內(nèi)層掃描全表就要實(shí)際壓測(cè)驗(yàn)證。一個(gè)常用的排查方式是EXPLAIN ANALYZE看執(zhí)行計(jì)劃里子查詢被物化了幾次、掃描了多少行如果出現(xiàn)逐行循環(huán)執(zhí)行那就要改寫。3.3 統(tǒng)計(jì)數(shù)據(jù)、直方圖與優(yōu)化器提示MySQL優(yōu)化器選擇執(zhí)行計(jì)劃時(shí)依賴表的統(tǒng)計(jì)信息如果統(tǒng)計(jì)信息嚴(yán)重過期優(yōu)化器可能選擇一個(gè)明明有可用索引但是代價(jià)估算錯(cuò)誤而放棄索引的劣質(zhì)計(jì)劃。這種情況有個(gè)很直觀的表現(xiàn)EXPLAIN里type是ALL但你明明剛剛才確認(rèn)索引是存在的。解決辦法是執(zhí)行ANALYZE TABLE 表名;刷新統(tǒng)計(jì)信息再重新看EXPLAIN。MySQL 8.0新增了直方圖功能對(duì)數(shù)據(jù)分布嚴(yán)重不均勻的列非常實(shí)用。比如status字段99%的行是0、1%的行是1統(tǒng)計(jì)信息里可能只記錄大概平均分布優(yōu)化器如果因此選擇全表掃描去查那個(gè)只占1%的status1性能就很虧。給這類列建立直方圖之后優(yōu)化器能看到更真實(shí)的數(shù)據(jù)分布做出更合理的判斷。創(chuàng)建直方圖可以用ANALYZE TABLE 表名 UPDATE HISTOGRAM ON status;維護(hù)成本不高可以針對(duì)高頻查詢涉及的列做。至于優(yōu)化器提示如USE INDEX和FORCE INDEX我的態(tài)度比較謹(jǐn)慎。它們?cè)谝恍┚o急上線、臨時(shí)救火的時(shí)候確實(shí)有效能強(qiáng)制讓執(zhí)行計(jì)劃走你想走的索引。但如果把這種提示固化在業(yè)務(wù)代碼里將來表結(jié)構(gòu)調(diào)整、索引重命名或者數(shù)據(jù)量變大強(qiáng)制提示反而會(huì)阻止優(yōu)化器選出更優(yōu)計(jì)劃。除非有明確證據(jù)表明優(yōu)化器在可預(yù)見的未來都會(huì)選錯(cuò)否則我會(huì)優(yōu)先讓優(yōu)化器自主決策同時(shí)把統(tǒng)計(jì)信息維護(hù)好。注意排查慢SQL別只盯著執(zhí)行時(shí)間一條還要看平均掃描行數(shù)和返回行數(shù)的比例。掃描100萬行返回10行說明過濾條件沒用好這才是索引設(shè)計(jì)應(yīng)該優(yōu)化的點(diǎn)。4. 鎖與事務(wù)并發(fā)高時(shí)最隱蔽的性能殺手索引和SQL優(yōu)化好了之后單條查詢本身的速度可能已經(jīng)很可觀了但只要并發(fā)一上來數(shù)據(jù)庫就可能卡在另一個(gè)地方鎖等待和事務(wù)沖突。MySQL 8.0的InnoDB默認(rèn)使用行級(jí)鎖但行級(jí)鎖并不是說就不會(huì)鎖沖突了。長事務(wù)、間隙鎖、寫寫沖突、死鎖任何一個(gè)處理不好都會(huì)讓整個(gè)系統(tǒng)的吞吐量直線下降。這一章的很多問題在日常壓測(cè)中不輕易暴露往往人要等到線上并發(fā)真的高了才遇到。所以提前把排查路徑和應(yīng)對(duì)手段整理出來能幫你少走很多彎路。4.1 鎖等待排查先找到誰鎖了誰最常見的報(bào)錯(cuò)是ERROR 1205: Lock wait timeout exceeded; try restarting transaction。遇到這個(gè)錯(cuò)誤很多人的第一反應(yīng)是我把鎖等待時(shí)間調(diào)大一點(diǎn)。這個(gè)思路只能暫時(shí)緩解癥狀因?yàn)槿绻i沒釋放你等再久也一樣超時(shí)還會(huì)讓大量請(qǐng)求堆積在鎖等待隊(duì)列里把連接池打滿。正確做法是先查清楚誰持有鎖、誰在等待。MySQL 8.0的performance_schema和相關(guān)視圖提供了豐富的信息你可以直接查sys.innodb_lock_waits視圖它類似于一張鎖沖突快照包含了阻塞事務(wù)、被阻塞事務(wù)和對(duì)應(yīng)的SQL內(nèi)容。示例查詢SELECT * FROM sys.innodb_lock_waits\G如果嫌這個(gè)視圖信息太細(xì)也可以查information_schema.innodb_trx看當(dāng)前所有事務(wù)的運(yùn)行時(shí)間、狀態(tài)和SQL然后結(jié)合innodb_lock_waits找到阻塞鏈。定位到持有鎖的事務(wù)之后評(píng)估這個(gè)事務(wù)是否能盡快結(jié)束。如果是長事務(wù)誤鎖了大量行要從業(yè)務(wù)代碼層面找到它為什么遲遲不提交是邏輯里夾了慢查詢還是事務(wù)忘記提交。如果持鎖事務(wù)是合理的那就得考慮調(diào)整事務(wù)執(zhí)行順序讓短事務(wù)優(yōu)先拿到鎖。innodb_lock_wait_timeout這個(gè)參數(shù)我建議線上主動(dòng)調(diào)小一點(diǎn)默認(rèn)50秒太長。鎖等待超過5到10秒的業(yè)務(wù)大概率已經(jīng)積壓到用戶能感知的程度了不如讓請(qǐng)求快速失敗讓應(yīng)用層自動(dòng)重試比所有請(qǐng)求阻塞半分鐘最后一起報(bào)錯(cuò)健康得多。我見過的穩(wěn)定業(yè)務(wù)里這個(gè)值大多設(shè)在5到10秒之間。4.2 死鎖分析不是bug但必須管死鎖出現(xiàn)的經(jīng)典場(chǎng)景是兩個(gè)事務(wù)都以不同的順序加鎖。比如事務(wù)A先鎖了訂單表再鎖用戶表事務(wù)B先鎖了用戶表再鎖訂單表兩邊互相等對(duì)方釋放鎖就死鎖了。MySQL檢測(cè)到死鎖后會(huì)自動(dòng)回滾其中一個(gè)事務(wù)釋放資源并在客戶端報(bào)ERROR 1213: Deadlock found的錯(cuò)誤。死鎖發(fā)生后最重要的是拿到現(xiàn)場(chǎng)信息。執(zhí)行SHOW ENGINE INNODB STATUS;輸出內(nèi)容里找到LATEST DETECTED DEADLOCK那一大段里面會(huì)記錄死鎖涉及的兩個(gè)事務(wù)分別執(zhí)行了什么SQL、持有和等待哪些索引記錄。分析這段信息通常能直接看到加鎖順序的矛盾點(diǎn)。應(yīng)對(duì)手段有幾個(gè)方向一是讓所有相關(guān)事務(wù)統(tǒng)一加鎖順序比如始終先操作訂單表再操作用戶表二是縮小事務(wù)范圍事務(wù)里只保留必要的SQL減少持有鎖的時(shí)間三是在業(yè)務(wù)層對(duì)死鎖錯(cuò)誤碼做重試處理。死鎖在并發(fā)系統(tǒng)里不可能完全消除我見過很多團(tuán)隊(duì)把報(bào)錯(cuò)日志當(dāng)成事故來排查其實(shí)更重要的是把重試機(jī)制做好讓偶發(fā)死鎖對(duì)業(yè)務(wù)透明。4.3 隔離級(jí)別與長事務(wù)監(jiān)控InnoDB默認(rèn)隔離級(jí)別是REPEATABLE READ這個(gè)級(jí)別為了處理幻讀引入了Next-Key Lock也就是不僅鎖住某一行還會(huì)鎖住一個(gè)范圍。并發(fā)插入、更新時(shí)間隙鎖帶來的沖突要比想象的更多。如果業(yè)務(wù)對(duì)數(shù)據(jù)一致性要求沒那么嚴(yán)苛比如很多報(bào)表類、讀多寫少類的場(chǎng)景把隔離級(jí)別改成READ COMMITTED可以明顯減少鎖沖突。好處是只有真正匹配的行會(huì)被鎖住但要注意副作用如果業(yè)務(wù)依賴可重復(fù)讀的快照一致性切換之前必須做充分評(píng)估。長事務(wù)是另一個(gè)容易被忽視的問題。一個(gè)事務(wù)跑了幾分鐘甚至幾小時(shí)它的undo log會(huì)不斷膨脹形成大量歷史版本直接影響SELECT的多版本讀性能。同時(shí)長事務(wù)還會(huì)一直持有鎖擋住其他事務(wù)。排查方式很簡單SELECT trx_id, trx_started, trx_state, trx_mysql_thread_id FROM information_schema.innodb_trx;重點(diǎn)看trx_started。如果發(fā)現(xiàn)某個(gè)事務(wù)啟動(dòng)時(shí)間已經(jīng)超過你設(shè)定的閾值比如5分鐘以上基本可以認(rèn)定它是異常長事務(wù)。再順著trx_mysql_thread_id找到對(duì)應(yīng)連接借助performance_schema查到它正在執(zhí)行的SQL就能定位到業(yè)務(wù)代碼里的問題。上線前把長事務(wù)監(jiān)控配置好比事后人工翻日志要省心太多。5. 性能監(jiān)控與日常巡檢別等問題爆發(fā)才動(dòng)手優(yōu)化做到這里配置、索引、SQL、鎖都過了一遍性能多半已經(jīng)很健康了。但數(shù)據(jù)庫是動(dòng)態(tài)系統(tǒng)業(yè)務(wù)量在漲數(shù)據(jù)量在漲訪問模式也會(huì)變。今天健康的索引三個(gè)月后可能因?yàn)樾聵I(yè)務(wù)查詢就變了。所以最后一件事是把監(jiān)控和巡檢機(jī)制建立起來讓問題在發(fā)酵之前就能被發(fā)現(xiàn)。5.1 要盯的指標(biāo)和開源監(jiān)控組合監(jiān)控不需要一開始就追求大而全先盯住跟性能強(qiáng)相關(guān)的幾個(gè)核心指標(biāo)就夠。我日常會(huì)固定關(guān)注以下幾項(xiàng)QPS/TPS數(shù)據(jù)庫整體負(fù)載水平趨勢(shì)異常上升或下降都要有數(shù)。慢查詢數(shù)量慢查詢?nèi)罩緱l數(shù)突增往往意味著某個(gè)索引失效或者某條SQL被調(diào)用量變大。Threads_connected連接數(shù)是否長期高位運(yùn)行接近max_connections時(shí)就要預(yù)警。Buffer Pool命中率長期低于99%要考慮調(diào)大緩沖池或優(yōu)化熱點(diǎn)查詢。臨時(shí)表與臨時(shí)文件說明查詢中出現(xiàn)大量排序或分組需要回到SQL優(yōu)化層面處理。鎖等待次數(shù)與等待時(shí)間判斷并發(fā)事務(wù)沖突是否在惡化。監(jiān)控實(shí)現(xiàn)方面常見的開源監(jiān)控方案是配合一個(gè)MySQL導(dǎo)出器采集狀態(tài)變量再用時(shí)序數(shù)據(jù)庫存指標(biāo)、用圖形面板展示。這套組合的優(yōu)勢(shì)在于社區(qū)成熟、指標(biāo)覆蓋廣而且不用額外購買商業(yè)產(chǎn)品。如果團(tuán)隊(duì)規(guī)模小只想快速看個(gè)概覽MySQL 8.0自帶的performance_schema和sys庫里已經(jīng)有非常豐富的等待事件和診斷信息不需要額外裝東西。5.2 基準(zhǔn)測(cè)試與容量規(guī)劃讓數(shù)據(jù)說話優(yōu)化到底有沒有效果不能靠感覺說好像快了一點(diǎn)要用數(shù)據(jù)說話。壓測(cè)工具上我經(jīng)常用的是sysbench它可以模擬OLTP讀寫混合負(fù)載在優(yōu)化前后分別跑一輪對(duì)比QPS和平均延遲。操作流程基本是幾步先準(zhǔn)備測(cè)試表和測(cè)試數(shù)據(jù)然后分別執(zhí)行只讀、只寫、讀寫混合的壓力測(cè)試記錄結(jié)果。壓測(cè)時(shí)要注意數(shù)據(jù)量不能只是幾百條至少上百萬行才有參考意義否則索引、緩沖池等機(jī)制根本來不及發(fā)揮作用。容量規(guī)劃這塊也能從壓測(cè)里找到線索。假設(shè)單機(jī)壓測(cè)出來能扛1500 QPS業(yè)務(wù)高峰期峰值是800 QPS那當(dāng)前余量充足如果已經(jīng)到1200 QPS了就該提前準(zhǔn)備擴(kuò)容方案或者優(yōu)化熱點(diǎn)。壓測(cè)結(jié)果建議記錄成表格每次調(diào)整完配置或索引都重新測(cè)一輪長期下來就知道系統(tǒng)的性能拐點(diǎn)在哪里了。把歷史壓測(cè)數(shù)據(jù)保存下來對(duì)后續(xù)做資源預(yù)算和新版本評(píng)估都很有價(jià)值。5.3 我自己的巡檢清單每周一查風(fēng)險(xiǎn)前置最后分享一份我的每周巡檢習(xí)慣幾分鐘能跑完但對(duì)穩(wěn)定性的幫助非常大。我會(huì)固定檢查幾項(xiàng)內(nèi)容一是配置參數(shù)和實(shí)際使用的偏差。線上機(jī)器跑了幾個(gè)月當(dāng)時(shí)設(shè)的innodb_buffer_pool_size可能已經(jīng)不夠了但沒人注意到。用狀態(tài)變量對(duì)比一下內(nèi)存和磁盤的使用趨勢(shì)就能發(fā)現(xiàn)該擴(kuò)容的擴(kuò)容、該調(diào)參的調(diào)參。二是慢查詢?nèi)罩镜内厔?shì)。對(duì)比這周和上周同期的慢查詢數(shù)量如果穩(wěn)步上升趕緊看新增的慢SQL是什么如果突然下降也要想想是不是業(yè)務(wù)量下降了或者高峰錯(cuò)開了。沒有任何波動(dòng)的慢查詢量反而可能是日志輪轉(zhuǎn)沒生效。三是鎖等待和死鎖計(jì)數(shù)。查SHOW GLOBAL STATUS LIKE Innodb_row_lock%;和SHOW GLOBAL STATUS LIKE Innodb_deadlocks;這些計(jì)數(shù)一直往上漲說明并發(fā)沖突在增加需要翻一眼最近的鎖等待視圖。四是磁盤空間和binlog大小。binlog增長過快通常意味著有大批量更新或者長時(shí)間未處理的事務(wù)磁盤如果被binlog塞滿MySQL會(huì)直接停止寫入這比慢查詢更致命。五是緩沖池的命中率和臟頁刷新情況。命中率低可以繼續(xù)調(diào)大緩存臟頁比例長期高說明寫入能力強(qiáng)但刷盤能力不足有可能I/O子系統(tǒng)已經(jīng)達(dá)到瓶頸。這一套巡檢做下來大多數(shù)問題都能在變成事故之前被攔截住。優(yōu)化MySQL 8.0不是一次性工作它更像一個(gè)跟業(yè)務(wù)共同演進(jìn)的循環(huán)壓測(cè)、監(jiān)控、發(fā)現(xiàn)問題、再優(yōu)化循環(huán)往復(fù)。最后再分享一個(gè)心得遇到性能問題我總會(huì)先看索引和SQL再看配置最后才懷疑硬件。很多看似配置不夠的場(chǎng)景其實(shí)是索引設(shè)計(jì)不合理導(dǎo)致的假象。你在配置上花再多精力也不如先把最耗時(shí)的那幾條SQL拎出來分析一遍。MySQL 8.0本身的優(yōu)化器已經(jīng)夠強(qiáng)了我們做優(yōu)化的主要工作就是給它提供正確的索引和干凈的數(shù)據(jù)環(huán)境剩下的它會(huì)自己搞定。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
久久久久久99AV无码免费网站| 激情专区综合| 久草婷婷| 青青草华人在线欧美在线| 情色五月天网| 国产13区| 日韩少妇无码| 青青草原人妻| 日本性感人妻91| 天天插天天干| 欧美色图 人妻| 成人av在线播放| 狠狠久久四虎| 欧美成年人性爱视频免费观看| 99久久9| 在线播放一级无码视频| 97色涩| 三级AV入口| 久噜噜| 热99这里有精品综合久久 | 日韩精品 资源| 日韩91网| 久久综合乱子伦国产免费| 欧洲黄色网| 新视频sss国产| 黄色高清无码无码破解免费暗网| 精品久久97| 夫妻四区五区六区| 欧美人人AAA| 精品亚洲天堂| 男人的天堂日本东京热| 日日夜夜干| 国产三级片在线观看| 国产av青草| 日本在线激情一区二区三区| 成人小电影网站tex| 美腿色图| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 亚洲精品蜜桃久久久一区二区三区| 亚洲国产精品成人久久蜜臀| 亚洲电影91| 五月丁香六月| 久草网站免费在线观看| 秋霞Av理论一级在线| 日韩内射视频| 亚洲中文sv| oumeisetu综合| 色综合久久88色综合久久天天| 日韩免费a级毛片无码a∨| 97频视在线| 成人熟女区| 久久婷婷一区二| 九九热精品| 国内毛片国产专区二| 亚洲熟女诱惑| 97视频免费在线| 91色综合色| 欧美日韩亚洲高清不卡一区二区三区| 小情侣高清国产在线视频| 一起草日韩| 一起草日韩| 嫩呦国产一区二区三区AV| 日韩精品一区二区人人人| 激情欧美日韩女同久久| 国内精品久9| 色欧美综合| 综合激情一一91| 国产女人9999| 人人妻人人澡人人爽人人精品浪潮| 熟女熟妇伦久久影院毛片一区二区| 啊啊啊啊好爽好舒服一区二区易域| 成人午夜小视频手机在线看| 亚洲二区精品在线观看| 5278欧美一区二区三区| 午夜欧美女人操逼| 青青草视频久久| 夜夜夜久久| 美女大乳久久久久久久女人18| 青娱乐啪啪视频| 免费的黄片有限公司| 国产亚洲精品A在线观看下载| 亚洲精品毛片在线观看| www.久久| 偷拍色图| 中文字幕黄片在线| 91chinese在线| 韩国三级三级BD在线| 校园春色家庭伦理欧美激情| 亚洲人妻中文在线视频| 五月天伊人| 91男女啊啊啊| 亚洲无992tv| 伊人五月天| 青青草吊丝| 日韩综合97p| 18禁止看精品中文字幕| 久久一二区四| 九九九九热| 国产精品999zyz| 激情一区二区三区在线观看| 五月天人妻综合| 日本日逼高清| 97色97好| 精品国产91av一区二区三区 | 夜夜影视四色| 97频视在线| 乱伦图一区| 97日视频| 亚洲av性爱电影| 午夜天堂精品久久久久91| 麻豆久久久久久久久丝袜 | 99热只有这里有精品| 麻豆精品三区视频| 性爱乱伦网址| 热99re69精品8在线播放| 国产精品99久久久www| 天天干夜夜肏| 日本99热| 五月天婷婷在线看| 无码久| 亚洲AV无码AV吞精久久久久| 天天影视之亚洲综合网| 久久艹逼视频| 日本韩国国产精品一区| 亚欧美无遮挡| 久久久久久性爱视频| 精品久久久高清无码| 久久久久久99999国产精品| 国产精选三级在线观看| 天天综合97| 97在线观看免费视频l| 午夜舔阴达高潮视频免费看| 大香蕉宅男伊人| 最新AV在线| 久久精品中文字幕观看| 夜夜高潮夜夜爽夜夜爱爱一区| 97色色视频| 人人摸.人人色| 噜噜瑟| 隔壁邻居波多野结衣中文字幕| 人人插人人摸人人| 啊啊啊操死我| 伊人991| 九色97| 亚洲国产精品成人无码久久久 | 日韩免费a级毛片无码a∨| 久久人妇| 6080yy午夜理论三级一区二区三区无码| 日韩国产精品人妻无码久久久| 江都AV在线| www.激情| 婷婷五月综合激情| 狠狠操狠狠爱| 日本免费不卡二区| 亚洲一二三精品久久网| 国产精品欧美激在线| 淫荡少妇免费| 国产91影院| 精品一区二区三区麻豆| 亚洲AV不卡在线观看| 久久久穴999| 97香焦色区| 婷婷月色| 大香蕉色网| 色妹子A V| 久久丁香| 亚洲骚逼少妇| 国产精品经典一卡久久久 | 美女被艹尤物视频| 久久婷五月| 久久亚洲精品成人av| 成人26uuu| 亚洲av国产av综合av卡| 国产精品久久伊人| 日韩AV片| 亚欧美综合| 欧美亚洲韩国视频十五区| 亚洲AV免费在线观看| 亚洲不卡AV在线| www.色婷婷| 这里只有精品久久| 久操不卡视频| 欧美精品四区| 亚洲日韩少妇一道本视频| 射丝袜大香蕉| 欧美 精品国产制服第一页| 激情婷婷| 最近的最新的中文字幕视频| 久草精品一区| 综合久久99亚洲人妻中文在线| 台湾佬激情综合| 久久精品小视频| 日本高清_区二区三区| 视频在线观看一二三区| 国模吧 一区二区三区| 青椒国产97在线熟女| 日本人妻一区二区| 欧美的性爱网站免费| 亚洲永久AV无码精品秋霞| 高清国产性猛交xxxx乱大交| 欧美在线干| 激情五月天视频| 久久精品国产Aⅴ| 白丝AV网站| 操逼国产免费| 一区二区高清视频| 日日日骚女人精品| 99亚洲精品| 大香蕉www.超碰| 伊人久久亚洲色欲综合网站| 人人喜人人妻| 亚洲精品久久久久久久蜜桃臀| 中国特猛少妇色xxx| 成人影 天天操 亚洲| 色婷婷视频| 国产美脚女优尤物在线观看| 91成人久久| 亚洲天堂色图| 久久久内射良家| 天天淫人人妻日日色| 人妻丝袜一区二区三区在线| WWW.加勒比人妻一区不卡.com| 国产亚洲精品av一区| 国产青青美女玩逼视频| 天天综合91入口| 久久久99久9| 国产福利影视| 多乙久久久久久| 大香蕉免费3| 亚洲色电影在线| 91视频综合在线| 美国久久一二三四| 欧美精品 - 91爱爱| 狠狠色综合网| 欧美日韩成人在线| 天堂蜜桃无码视频一区二区| 桃色五月天| 精品一二三区久久AAA片| 中国一级操逼视频| 免费一级黄色录像影片| 在线免费观看日韩一区| 亚洲五月婷| 欧美不卡五十路| 亚洲国产综合图区中文字幕| 91热热色| 五十路熟女人妻一区二区三区四区五| 91精片| 香蕉人欧美综合| 男女做爰猛烈动高潮A片免费应用 少妇厨房愉情理伦片bd在线观看 不卡中文字幕aⅴ在线 | 玖玖爱综合网| 另类欧美色| 欧美,日韩综合久久| 日本五十路熟女一区二区| 国产精品福利视频播放| 天天艹天天日| 欧美久热| 樱花草社区www中国| 欧洲亚洲人妻无码中字久久三区四区 | 小视频国产| 欧美一区二区一级岛国大片| 成人性爱av.com| 国产一区二区欧美日本| 91综合天天| 国产 日韩 欧美高清| 八人操人人摸人人看| 熟女中出视频| 99青草| 午夜高清成人在线视频| 亚洲AV色图一区| 亚洲熟女诱惑| 亚洲青青草| 国产又色又粗又黄又爽| 中文一区二区| julia在线观看久久| 国产自产一区视频在线| 超碰在线一区| 日本2020一区二区| 蜜桃臀av在线观看| 欧美性爱系列| 色九月婷婷| 亚洲一区二区AV| 欧美线天码中字| 日本免费人成视频播放120秒| 国产精品粉嫩福利在线| 大鸡巴久久| 91在线精品| 国产玖玖| 任你艹| 口爆综合网| 中文字幕精品码亚洲| 久久综合99| 青青草啪啪网| 黑人娇小av在线播放| 久久熟女人| 99re这里只有精品3| 久久宗合97| 2019亚洲男人天堂| 国产精品久久99日日| 91麻豆天美传媒HD| 99久久精品无码一区二区| 刺激精品视频| 久久精品美女一区| 人妻少妇久久中文字幕一区二区 麻豆 | 白丝在线一区| 婷婷色在线| 超碰免费人妻人人| 自拍亚洲综合| 后入美女国产| 免费黄色A片| 加勒比海人人操超碰在线| 亚洲色图超碰在线| 亚洲一区二区精品福利| 亚洲综合九九| 欧洲精品在线播放| 久久9视频| 91精品人妻偷情| 少好三P| 97超碰天天| 欧美性爱精品一区二区| 强奸乱伦AV网站| 黄页av| 九九九九97| 蜜桃在线观看一区二区三区| 任你爽视频| 久久美女国产| 2020中文在线一区二区三区| 玖玖爱在线视频免费观看| 死我十八禁| 麻豆国产成人精品| 狠狠夜色午夜久久综合在线| 亚洲伊人久久精品狠狠在线| 97人人干| 密桃99999| 国产超碰| 无码99| h无码动漫在线观看| 影音先锋少妇| 综合操逼| 亚洲另类电影| 久久久999日本大片| 一区二区日韩欧美久久| 国产精品久久久久中文字幕| 涩综合导航| 国产午夜福利专区综合| 欧美性爱综合,免费| 无码高清操逼| 日韩激情毛片一级久久久| 亚洲熟女综合一区二区| 天天伊人| 九九久久99| 淫荡熟女乱伦网| 国产不卡免费在线视频| 青女偷拍网| 嗯~啊~快点 死我视频| www网站黄| 天天视频黄| 舔舔啊| 天天摸天天插天天日| 特级毛片特黄久久免费看 | 国产午夜无码片在线观看影视| 97免费在线观看| 日韩精品99久久久久久中文字幕| av天堂影视中文在字幕在线中文| 综合欧美激情网| 91精品国产91久久青草| www男人天堂| 色偷偷超碰亚洲| 日韩精品9999| 九九成人精品| 91美乳| 91网站18在线观看| 久久麻豆一区二区| 日韩美脚一区二区网站| 欧美AB在线观看| 天天综合~91入口| AAA久久| 国产激情片在线观看| 操逼啊啊啊91| 久久人人舔人人爽舔人人av片| 日韩av免费一级电影| 国产精品久久久久婷婷二区次| 精品一区二区久久| 懂色av中文字幕一区二区三区天美| 大香蕉一人在线| 97露脸精品丝袜| 亚洲欧美日韩有码| 91超碰碰在线| 熟女91网| 久草精品在线| 亚洲一区二区AV| 资源新线在线天堂| 色色毛片| 日日操免费视频| 国产美女自拍AV| 翔田千里无码中出中文字幕| 色嗨嗨在线| 日本肏逼视频在线观看| 青草视频在线看看看看看看看看看| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 大学生美女口爆| 日韩免费中文字幕视频| 亚川综合视频| 国产三级日产三级韩国三级 | 人人妻人人爽一区二区三区| 国产精品久久| 国产女乱淫真高清免费视频| 免费黄色片子| 久久久久国产亚洲一区欧美色图日韩| 蜜臀99999| 欧美亚洲国产日本在线,久久精品国产| 色老牛| 久久久极品| 97干色| 中文字幕一区二区日韩网| 老司机老司机午夜影院| 操狠狠| 天天看片麻豆| 天天干18禁| 日韩中文字幕视频| 97久久超碰| 蜜臀av中字字幕网站| 先锋音影AV| 天天色综合影视网| 亚洲囯产精品女人久久久| 激情五月丁香五月| AV99热18这里只有精品| 久久久四区| 国产一级137片内射麻豆| 大香蕉免费乱伦视频| 国产女上位好爽在线| 亚洲少妇色图自慰直播| 欧美精品黑人猛交高潮| 狼狼色丁香久久婷婷综合五月| 97香蕉碰碰人妻国产欧美| 中文字幕天天天天天| 97精品视频在线播放| 欧美片第一页| wwwss在线观看| 青青欧洲黑| 欧美在线91| 在线国产探花| 亚洲熟久久| 91人妻少妇| 18禁超污无遮挡无码免费网| 无码78| 亚洲少妇综合在线播放| 一区二区三区日韩欧美| 亚洲天天在线| 男人兔费天堂| 97超碰护士| 五月丁香亭亭| 亚洲 欧美 日本 国内 首页| 日本色色色视频| 国产九区| 欧美亚洲素人制服精品| 嗯……啊…嗯嗯…啊…好舒服| 欧美性爱一区二区三区| 在线无码操| 超碰天天操| 欧 美 自 拍 偷 拍| 欧美色九九九| 91精品人妻偷情| 麻豆天美国美国产| 国产高清自拍| 91在线免费观看处女| www男人天堂| 色99视频| 欧美爱爱97| 中文字幕五区| 亚洲中文字幕在现观看| 内射中出日韩在线观看视频| 日韩性爱小视频| 婷婷三区| 女同女同恋久久级三级| 久久人爽| 抽插无码高清一区| 天天色综合影视网| 狠狠干综合| 欧美日韩97| 国产高清1234区| 国产精品日本无码A片| 在线天堂999| 91露脸熟女专区| 绯色AV粉色AV蜜臀AV| 精品国产无码中文| 激情文学亚洲| 色av中文字| 青娱乐老司机视频| 国产精品亚洲日韩骚欢乐谷最新地址发布页huanieguty性屋娱乐妖精视频 | 美腿色图| 欧美经典一区二区三区| 91天天综合在线| 亚洲熟妇极品| 男人天堂黄片| 中文字幕一区二区三区四五区| 五月婷色| 成人无遮挡毛片免费看| 欧美日韩美女精品久草一区二区三区| 在线看免费无码AV天堂的| 91欧美网| 欧美视频激情久久久久久| 久久久免费一级黄片| 天天欧美| 天天干天天中出av| 人妻少妇精品一区二区三区| 日本黄色精品专区网站| 高清孕妇孕交 交孕妇| 中文字幕在线观看丝袜| 成人精品一区二区91毛片不卡| 97综合久第一页| 99久久com免费视频′| 欧洲亚洲国产综合在线| 欧美激情内射| 亚洲综合贴图91| 日本在线一二| 性色生活片久久毛片婬片免费放女人一级毛片 | 秋霞色色影院| 天天躁夜夜躁狠狠躁AV| 福利偷拍视频-中文字幕2019国语完整视频大全-S91AV | 一牛影视成人片免费| 日韩欧美女求操每天更新| 美欧老女人97| 久久精品免费| 久久m| 色性综合| 综合网色| 欧美黄片欧美黄片xxx| 伊人天天久久动态图| 男人天堂久久精品不卡| 日日干夜夜操视频h| 伊人久久婷婷| 手机看片1025| 93人人操人人| 国产不良强奸视频免费看| 欧洲人妻视频| 亚州,欧美在线| 亚州色阁| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | 亚洲AV免费在线| 人人摸人人摸人人干| 国产午夜福利专区综合| 97超碰护士| 日本不卡在线二区三区| 五月天日日操夜夜操| 欧美色图人妻| 国产熟女精品区| 久久久久久久78| 亚洲熟女乱色| 97综合日韩| 精品人妻1237| 97视频网站在线观看| 99免费在线视频| 九九Av| 精品婷婷| 99热免费| 色女网日韩| 欧美少妇大量自拍视频在线观看| 男人天堂一区二区| 超碰79人人乐| 丝袜狠狠草尤物人妻av91| 午夜天天碰综合视频| 久久婷婷国产一区二区色| 国产亚洲一黄| 韩日男人的天堂| 日日夜夜骚| 九九成人精品| 亚洲黄色网址| 97亚洲综合在线| 欧美日韩狠狠爱| 日本男人天堂| 中文字幕美女91| 波多野42部无码喷潮在线观看 | 国产精品情侣啪啪| 日本不卡二三区| 欧美在线 亚洲| 欧美色图片欧美色图| 国产精品日日摸天天碰| 老熟女网站| 性久久久| 日本日皮视频逼| 五月丁香影院| yazhousetuoumei| 激情小说亚洲图片| 高清视频一区| 啪啪啪东京| 一区三区啪啪| 中文字幕在线观看第二页| 亚洲综合小视频小说在线观看| 欧美大片一区二区三区 | 色五月av| 十八禁黄色成人网站观看| av久日| 青草成人免费视频一COm| 亚洲成人黄色在线观看| 国产黄色av大片网站| 大稥蕉免费视频这里只有精品| 丁香婷婷激情五月天无毒不卡| 久久久久久无码人妻中文字幕| 国产60页| 黄色二级片网站| 91视频综合在线| 东北女人无套内谢视频| 激情接吻视频久久久久久| 狼天天狼天天大香蕉| 亚拍在线| 中国一级αV| 操屄不卡视频| 狠狠夜色午夜久久综合在线| 欧美人妻制服| 中国国国产一级特黄毛片| 精品久久久九九九孕妇| 黑白配性爱AV成| AV和黑人在线播放| 91超碰人人| 久久午夜神马| 操逼操网| 日韩av色图| 中文操逼字幕| 久久精品一区二区三区不卡| 久久久久久久久国产| 日产欧美电影一区二区三区| 亚洲人成网www| 嫩草91| 午夜福利av电影在线| 久久久亚洲精品电影免费看| 嗯嗯啊啊啊好爽| 乱伦AVxx| 色臀aV| 国产对白刺激视频| 嗯嗯啊啊操死我| 色噜噜国产精品视频一区二区| 多乙久久久久久| 欧美成人色| 国产精品点击进入在线影院| 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 毛片视频白嫩| 中文一区二区三区影院| 久久久久13| 亚洲图片91| 色播综合| 国产精品噜噜噜日日日| 91一起操| 国产熟女无套内射| 亚洲日韩一区电影| 91综合色| 亚洲AV乱码专区国产噜噜亚洲| 亚洲人妻久久| 超碰亚洲欧美日韩无| 99国产精品| 偷拍 精品 另类 四区| 神马久久久久久| 啊啊啊啊啊在线观看网址| 色五月AV| 亚洲第一页欧美| 色y情视频免费看| 97看操| 多毛小伙内射老太婆 | 亚洲色图亚洲无码强奸乱伦| 亚洲国产精品久久久久婷婷老年| 欧美一级黄色18片免费看| 激情文学小说一区二区 | 欧美成人精品一区二区男人蜜臀| 伊人黄色视频免费观看| 操一对老熟妇爽上天视频| 99操视频| 高清国产无码av| 国产成人天堂| 人人操人人狠狠操| 水多多映视AV| 在线观看视频91| 99精品成人免费看| 青草地一本线一区二区三区| 久久一二区四| 99热99在线播放激情| 久久精品国产97欧美精品亚洲 | 热99这里有精品综合久久| 成人综合网 欧美| 国产精品蜜乳AV| 国产精品诱惑| 欧美日本天堂| 99久久9| 欧美传媒| 激情婷婷黑人91| 真实高潮91| 青青操狠狠撩| 中文字幕97| 搡老女人老91妇女熟女| 97天天爽| 播播亚洲小说亚洲| 黑人免费福利视频| 丰满熟女人妻一区二区三五十一路| 日本大片日本一区二区免费高清| 天天谢天天干| 猛猛干| 欧美亚洲成人在线一区二区三区| 日本欧美成人片AAAA| 中文字幕日韩电影人妻| 啊啊啊啊好多水| 在线情色电影 91大| 欧美综合站| 在线视频免费播放一区| 一中国女人毛片水真多| 亚洲自拍小说| 91强在线播放| 国产av青草| 天天干天天拍| 26uuu国产免费观看| 欧美大香蕉久| 九九久久久| com 首页 18岁 禁区 女优 免费 精选 同城| 精品久久久无码| 国产精品自产拍在线观看社区 | 91欧美性| 97色涩| 精品大久久| 天美精品av| 簧片免费看视频| 男女激情黄色网址| 免费福利视频中文字幕| 欧美日韩国产成人高清| 欧美天天弄| 日本媚薬中文字幕在线| 97在线日韩中文字幕| 美日韩一二三区| 久久夜嗨| 久久一二三四不卡| 欧美se亚洲| 蜜桃久久久久久久| 午夜精品99久久久久传媒| 色综合五月天| 99热综合| 日本精品一区三区| 伊人五月天| 免费夜夜爱黄色视频毛片| 国产99热| www.色婷婷| 超碰人人妻| 精品少妇后入一区二区三区四区人妻巨乳| 桃花色涩综合影院| 久久激情视频| 91啪啪| 亚州情色j区| 亚洲人精品久久久喷水| 99re6国产精品99re在线| 激激五月| 亚洲大色堂| 欧美性生活内射| 国产乱码久久久久久| 欧洲亚洲天堂精品| 久久9999 | 欧美色视频在线| 99久久e免费热视| 亚洲日韩成人性爱视频| 4399成人黄A片| 蜜臀少妇一区二区| 久久久不能久久久久| 色狠人在线99| 99热国产| 欧美天堂在线| 亚欧免费观看视频| 在线国产福利网址导航| 2024人人操人人摸| 日韩三四五区| 97在线观看免费视频l| 丰满人妻一区| 久久女人| 国产第12页| 欧美一级黄色18片免费看| 这里只有精品视频在线| 国产欧美一区二区| 久久av无码| 日韩一性一交一A片俄罗斯| 亚洲欧洲综合视频在线| 青青国产精品在线| 福利天堂| 老熟女91视频| 久久综合国产精品国产| 日本午夜操逼| 精品少妇后入一区二区三区四区人妻巨乳| 精品国产污一区二区三区| 亚洲精品 欧美精品| 99久久99九九99九九九| 久久免费99精品久久久久久| 人人射人人操人人摸| 91oumei| 久操影视| 亚洲国产美女久久久久 | 天美传媒精品一区二区三区| 91视频综合| 可以在线观看AV的网站| 天天操av懂色| 亚洲性综合11| 影音先锋乱伦资源| 亚洲男人的天堂亚洲| 福利一级版子| WWW.操逼.COM| 欧美日韩成人在线| 精品一区二区三区四区外站| 97在线视频免费观看| 亚洲天堂7777| 亚洲精品国产精品乱码不卡| 国产三级片在线观看| 亚洲国产高清福利视频| 中日韩久久人妻一区二区| 青青草一区二区高清无码视频| 国产精品第一区第一页| 激情五月天婷婷| 玖日综合网| 国产成人午夜视频网址| 啊好爽受不了无码| 亚洲欧美黄| 国产精品亚洲免费| 亚洲日韩欧美一区二区| 精品人妻1区| 日本天天人人狠狠在线日美女| 色香网| 黄色小视频日本txt| 久久欧洲| 国产欧美日本亚洲精品| 偷拍欧美激情| 日本精品五区| 欧美日韩国产在线| 97亚洲色图| 在线播放中文字幕| 亚洲天堂少妇| 久久精品国产免费观看99| 强奸熟女一区二区三区| 操逼免费视频无码国产| 日日夜夜草草草| 日韩无码精品综合久久| 熟妇熟女一区二三区| 国产女同在线观看视频| 天天操天天射青青草| 久操精品| 夜夜高潮夜夜爽| 青娱乐999| 天天摸夜夜摸| 国产一区二区在线播放量| 91九九九逼| 伊人丁香五月婷婷| 北条麻妃性愛视频| 国产精品麻豆视频网站| 中文字幕综合人妻| 欧美日韩精品一区二区三区高清| 超碰97在线色男人??| 亚洲成a人片在线观看中文!!!| 国产性爱欧美性爱在线 | 狠狠操狠狠燥| 久久99精品视频| 色妺妺AⅤ| 人妻天天爽夜夜爽爽| 亚洲A曰本VA欧美VA视频| 国产天美传媒精品| 一区三区啪啪| 国产精品视频在线观看| 97国产色综合| 一二三四视频中文字幕在线看| 97超碰免费人人性爱| 欧美一级黄色18片免费看| 蜜臀中文无码午夜| 美女啊啊啊啊pc| 国产一区二区三区白丝| 风月影院男女十八禁| 91精品久久久久久综合五月天| 免费视频一二三区| 91九九九逼| 欧美性爱伊人| 欧美精品宗合| 在线亚洲丝袜视频网站| 综合激情婷婷| 两女互慰AV高潮喷水在线观看| ...日韩成人一区二区三区字幕| 99精品热| 日韩av免费一级电影| 亚欧美综合网。| 9 9精品一区二区三区| av九九| 欧美亚洲厕所精品偷拍91| 久久精品91| 色综合久久夜色精品国产天堂| 啊啊啊啊啊好大好舒服想要| 国产成人AV麻豆| 日韩天天本| 精品无人区麻豆乱码1区2区图片 | 天天干1区2区在线| 91校园春色长篇| 国产日韩欧美三级片| 99日精品欧美国产| 78久久久| 精品久久久久综合无码| 在线无码视频| 国产精品久久久视频| 一区二区播放| 亚洲高清男人天堂| 亚洲不雅视频1区二区| 精品人妻视频一区二区三区蜜桃视频| 亚洲av影院在线观看| 欧美亚洲综合高清在线| 国产情色在线| 天天干天天日天天射黄色| 亚洲 日本 国产 综合| 色哟哟av| 久插综合| 九九视品黄色| 91丨九色丨东北熟女| 久久国产逼| 欧美劲爆第一页| 97久久天天综合色天天综合色电影| 久久啊哟| 日韩三级视频一区二区三区| 强奸国产在线| 中文字幕乱码在线观看| 蜜桃臀久久| 亚洲综合九| 中文字幕乱碼在线| 区日韩亚洲乱码av电影| 色婷婷视频| 激情专区综合| 亚洲色图殴美色图激情乱伦| 欧美午夜视频免费观看| 丝袜人妻av一区二区| 亚洲 在线| 好涩综合| 99久久久| 男人天堂毛片| 青青草五月份天| 韩国毛片一区二区三区| 综合97亚洲| 日韩精品电影| 天美传媒Av在线| 天天天天天天天天综合| 福利风月五月天影院| 日韩专区数据列表-第3230页-精品国产一区二区三区香蕉 久久99熟女人妻中文字 | 夜夜国产一区| 大香蕉国产中文自拍| 亚洲熟妇丝袜在线观看| 亚洲人成色9999精品久久| 日韩免费人妻色情网站| 日韩在线76| 国产欧美日韩女同性恋ww喷水精品| 狠狠穞A片一區二區三區| 国产精品大香蕉| 偷拍伦理视频| 人妻碰碰碰碰碰碰| 亚射在线| 天天综合网在线| 麻豆AV96熟妇人妻| 色综合久久夜色精品国产天堂| juliaann丝袜大战黑鬼| 日欧毛片久久| 一区二区三区在线日韩影院观看| 天天热精品| 东京热91| 国产精品视频内谢女人| 欧美性爱日韩高清| 欧美精品99久久久**| 人人操人人大香蕉| 97色婷婷| 9久久9综合| 干B| 九九九九九九九| 天天天肏屄肏屄肏屄欧美欧美| 97超碰中文在线| 欧美性爱免费短视频| 日本视频在线观看污污污| 蜜乳av首页| www鬼畜国产男人的天堂| 你草精品在线视频| 欧美久久人体| 亚洲色图欧美色图另类图片| 成人性爱AV在线免费观看| 一级啊性爱在线视频| 日本精品一区三区| www.AV有限公司一区| 色欲久久99精品久久| 久久大黄片| 午夜福利免费福利视频| 天天摸,夜夜摸| 超碰天天操| 久久久久久久9999| 岛国视频一二三区| 亚洲综合五月天| 99xav| 国产精品久久泡妞网站| 吖在线不卡一区二区国产剧情| 欧亚性爱视频免费看| 国产精品小视频一区二区三区| 经典丝袜一区| 国产精品午夜AV完会免费| 可能人人看人人摸| 97色五月天完| 久久久久久免费电影| 国产成人超碰在线| 亚洲综合五月天| ai欧美亚洲小说| 亚洲成a人v欧美综合天堂下载| 在线观看色视频| 久久本道| 国产精品不卡少妇白| 丁香六月激情| 中文字幕 av v| 国内精品久9| 伦伦成年午夜免费视频| 91亚洲不卡一区| 最新制服中文第一页| 日韩精品一区二区日韩| 后入 亚洲 美女 射| 色欧美在线| 日本www操操操| 欧美A√综合网 | 综合在线导航一区| 欧美日韩黄色片一区二区三区四区人与兽做爱| 欧美日韩人妻精品一区二区三区| 天天插夜夜操| 欧美狠狠操| 亚洲欧美综合| 日韩欧美视频青青| 欧美狠狠狠| 欧美精品1区2区3区| 日韩精品三级片长长久久| 岛国黄片网站| 欧美最婬乱婬爆婬性视频 | 欧美色图天堂在线| 韩日欧亚a级| 激情色色| 精品国产乱码久久久久久久| 欧美国产伊人久久久久| 欧美大战久久久伊人| 成在线人在线观看视频| 欧美另类自拍| 尤物视频一区| 亚洲青色欧美| 超碰在线观看av不卡| 亚洲欧美精品久| 欧美一区二区三区入口| 99re99视频在线免费观看| 思思视频免费看网站| 欧美大香蕉97| 欧美日韩色综合网| 久久久久9| 91成人精品在线播放| 热久久无毒不卡| 99日精品欧美国产| 黑人在线91| 亚洲 欧美 中文 日韩超碰| 激情六月婷婷| 美女好片色日本| 天堂岛av| 天天上日日上日韩精品| 日韩欧美成人大香蕉| 国产丝袜欧美在线视频| 久久久久久久国产| 日韩欧美中文| 九九九九九九综合| 亚洲男人天堂Av| 亚洲人妻在线精品| 色女网日韩| 中文字幕国产| 日韩欧美久久婷婷网站| 国产精品交换一区二区| 亚洲无码电影久久久| 久草精品国产蜜臀 | 久久久久久久久久久97| 午夜男女爽爽爽影院视频| 日韩精品人妻中文字幕久久久| 久久黄色性爱视频| 国产嫩草精品A88AV| 又大又长又爽| www.伪伪| 男人天堂无码| 蜜色网色哟哟| 国产精品成人福利在线| 99在线精品观看视频中文| 蜜桃视频精品一区二区| 无码人妻一区二区三区色欲aⅴ| 欧美日韩青操| 丁香五月性| 久久国产熟女影院| 国产日产欧产美韩系列麻豆免费| 男人兔费天堂| 人妻 中文 日韩| 91人人| 吊色| 蜜桃久久久久久久| 日本精品高清一二区一本到| 精品福利| 精久久久| 欧美日韩淫加| 亚洲精品久久久久久久蜜桃臀| 亚洲丝袜色图| 成人短视频在线观看| 国产伦精品一区二区三区在线观| 久久久蜜桃臀无码视频| 国产一区二区久久| 91xingse| 天天做日日爱夜夜爽| 国产精品com| 日本熟妇自慰性高潮一区二区三区| 欧美三级一级| 国产精品国产拍高清AV| 一区二区三区 日韩欧美| 精品一级| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 色综合1991| 亚洲国产综合久久久性感熟妇| 入口操逼网站| 91香蕉视频在线观看免费| 美女诱惑久久| 久久久久久中文| 亚洲淫色网中文| 国产欧美日韩女同性恋ww喷水精品 | 日本人人操人人操| 综合伊人激情| 蜜臀久久99精品久久久久久婷婷| 国产视频第2页| 亚洲成人一二三区| 2020中文字幕| 亚洲精品亚洲人成人网| 国产97视频免费观看| 制度丝袜99| 人人干黄色| 日本中文字幕不卡视频| 久久久久久久精| 欧美激情在线观看视频| 超碰欧美97资源| 亚洲美女黄色| 人人操人人射人人干| 大香蕉啪啪啪啪在线| 国产视频一区二区三区久久亚洲天堂| 中出在线视频| 美女视频尤物网在线看| 中文字幕蜜乳av| 欧在线一二区| 色色九区| 亚洲天在线| 又黄又硬又粗又长国产视频| 亚欧美色图| 国产精品97超碰| 亚洲男人天堂视频| 精品人妻一区二区蜜桃视频| 无码操逼天堂| 欧亚韩国999| 天美传媒精品久久视频| 97 国产精品| 欧美激情 一区| 老熟乱一区二区三区四区| 久操免费视频| 中文字幕人妻丝袜乱一区三区| 97视频播放| 999久久久| 日本久久女同性恋视频| 日本操逼视频免费| 伊人操你| 超碰成人公开| 91丨熟女丨丰满熟女| 午夜男女爽爽爽在线视频| 久99久视频| 天天操狠狠日夜夜干超碰撸com视频在线观看 | 天天日少妇逼AV| 国内91熟女人妻丝袜天天精品视频在线 |