99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜AV-亚洲一级无码一区二区一-免费国产成高清人在线视频-中文字幕乱码免费观看-国产毛片精品妇女久久久

ARTICLE DETAIL

資訊詳情

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

跨數(shù)據(jù)庫(kù)SQL優(yōu)化:四大引擎的索引、執(zhí)行計(jì)劃與等待事件實(shí)戰(zhàn)指南

跨數(shù)據(jù)庫(kù)SQL優(yōu)化:四大引擎的索引、執(zhí)行計(jì)劃與等待事件實(shí)戰(zhàn)指南 把Oracle上跑得順滑的SQL原封不動(dòng)扔到SQL Server里結(jié)果慢了十幾倍客戶當(dāng)場(chǎng)質(zhì)疑你是不是換了一臺(tái)渣服務(wù)器——這種事我經(jīng)歷過(guò)不止一次。換成MySQL表現(xiàn)可能又不一樣。鍋從來(lái)不在“機(jī)器性能”而在于每個(gè)數(shù)據(jù)庫(kù)引擎各自那套存儲(chǔ)模型、統(tǒng)計(jì)信息、鎖機(jī)制和優(yōu)化器邏輯。本文把主流引擎MySQL InnoDB、SQL Server、Oracle、PostgreSQL的SQL優(yōu)化方案放到同一個(gè)舞臺(tái)上拆開講核心目的只有一個(gè)讓你搞清楚同一類SQL在不同引擎里為什么會(huì)有截然不同的命運(yùn)以及當(dāng)慢SQL報(bào)出來(lái)時(shí)該怎么按引擎對(duì)癥下藥。內(nèi)容會(huì)涉及索引設(shè)計(jì)、執(zhí)行計(jì)劃、等待事件、深翻頁(yè)、去重、窗口函數(shù)、并行度這些高頻場(chǎng)景適合正在做跨數(shù)據(jù)庫(kù)開發(fā)的工程師、剛接手?jǐn)?shù)據(jù)庫(kù)優(yōu)化任務(wù)的DBA以及那些被“換個(gè)庫(kù)就翻車”折磨過(guò)的人。1. 為什么同一句SQL在不同引擎里表現(xiàn)天差地別——優(yōu)化思路的起點(diǎn)1.1 存儲(chǔ)模型決定數(shù)據(jù)“怎么被找到”很多人習(xí)慣把“優(yōu)化SQL”當(dāng)成一套萬(wàn)能公式加索引、避免SELECT *、減少子查詢。這些確實(shí)通用但它們只是戰(zhàn)術(shù)真正決定上限的是數(shù)據(jù)庫(kù)底層怎么存數(shù)據(jù)。MySQL InnoDB是典型的聚簇索引表。整張表就是一棵B樹葉子節(jié)點(diǎn)直接放行數(shù)據(jù)。主鍵就是聚簇索引二級(jí)索引的葉子節(jié)點(diǎn)存儲(chǔ)的是主鍵值。所以走主鍵查詢等于直接定位走二級(jí)索引要先查一遍索引拿到主鍵再回聚簇索引取完整數(shù)據(jù)這就是“回表”。設(shè)計(jì)主鍵時(shí)如果用了UUID之類的隨機(jī)值插入時(shí)會(huì)發(fā)生大量頁(yè)分裂和日志寫入放大這也是為什么InnoDB從業(yè)務(wù)角度都建議用自增主鍵。SQL Server不一樣。它可以建堆表也可以為表指定聚簇索引。堆表的數(shù)據(jù)頁(yè)之間沒有邏輯順序通過(guò)IAM頁(yè)追蹤聚簇索引表則按聚簇鍵物理排序。在頻繁插入且聚簇鍵變化大的場(chǎng)景堆表反而能減少頁(yè)分裂但大多數(shù)生產(chǎn)場(chǎng)景下合理的聚簇索引對(duì)范圍查詢幫助極大。這里沒有絕對(duì)的“誰(shuí)更好”只有“你的查詢模式更適合哪種”。Oracle和PostgreSQL都是堆表結(jié)構(gòu)。Oracle通過(guò)ROWID直接定位物理行索引葉子節(jié)點(diǎn)存ROWIDPostgreSQL的索引存的是行指針并且靠可見性映射Visibility Map來(lái)加速M(fèi)VCC判斷。堆表的回表代價(jià)并不一定比聚簇索引高因?yàn)閿?shù)據(jù)頁(yè)可能已經(jīng)在Buffer Pool里。但這也意味著“回表”這件事在每個(gè)引擎里的成本模型是完全不同的。你拿MySQL的經(jīng)驗(yàn)去判斷Oracle的回表開銷從一開始就錯(cuò)了。1.2 優(yōu)化器邏輯與統(tǒng)計(jì)信息的“個(gè)性化差異”SQL優(yōu)化不能只談存儲(chǔ)執(zhí)行計(jì)劃由優(yōu)化器生成而優(yōu)化器吃的是統(tǒng)計(jì)信息。MySQL 8.0的優(yōu)化器比老版本強(qiáng)了不少支持直方圖但整體對(duì)復(fù)合索引、OR條件的處理仍然偏保守。經(jīng)典翻車場(chǎng)景一張表兩個(gè)單列索引WHERE a 1 OR b 2MySQL經(jīng)常直接放棄索引合并做全表掃描而Oracle通常能走INDEX合并或BITMAP轉(zhuǎn)換。這跟引擎能力有關(guān)不是你的SQL寫錯(cuò)了。SQL Server的CBO非常成熟尤其是基數(shù)估計(jì)Cardinality Estimation2014年之后的默認(rèn)CE模型對(duì)“多列獨(dú)立謂詞”的預(yù)估更接近真實(shí)分布。但它也有自己的坑參數(shù)嗅探。第一次執(zhí)行的參數(shù)值決定了執(zhí)行計(jì)劃后面換個(gè)參數(shù)值可能讓計(jì)劃變得極差。Oracle的CBO是目前最復(fù)雜的優(yōu)化器之一支持自適應(yīng)計(jì)劃、統(tǒng)計(jì)信息自動(dòng)收集但綁定變量窺視、分區(qū)裁剪失效這些老問題仍然存在。PostgreSQL則給用戶留了很大的自定義空間seq_page_cost、random_page_cost這些成本參數(shù)可以直接影響優(yōu)化器選擇。這些差異告訴我們一個(gè)核心道理跨引擎優(yōu)化第一步永遠(yuǎn)是重新評(píng)估執(zhí)行計(jì)劃而不是把上一個(gè)庫(kù)的“成功經(jīng)驗(yàn)”直接搬過(guò)來(lái)。1.3 “優(yōu)化”的本質(zhì)不是抄方案而是拆場(chǎng)景我接觸過(guò)的很多團(tuán)隊(duì)把SQL優(yōu)化做成了“經(jīng)驗(yàn)搬運(yùn)”MySQL慢就把Oracle那套調(diào)優(yōu)寶典拿來(lái)試試不通就怪?jǐn)?shù)據(jù)庫(kù)。實(shí)際上一個(gè)SQL慢下來(lái)你第一件要做的事不是改語(yǔ)句而是分清楚瓶頸類型IO密集型全表掃描、回表過(guò)多、排序落盤、日志寫入慢CPU密集型大量表達(dá)式計(jì)算、嵌套循環(huán)在超大集上運(yùn)行、并行度過(guò)高導(dǎo)致爭(zhēng)用鎖/等待密集型鎖塊、鎖升級(jí)、死鎖重試、日志同步等待這三個(gè)類型的優(yōu)化手段幾乎不重疊。IO瓶頸看索引和執(zhí)行計(jì)劃CPU瓶頸看表達(dá)式和算子等待瓶頸要看等待事件和并發(fā)配置。接下來(lái)幾節(jié)我會(huì)把索引、慢SQL定位、實(shí)戰(zhàn)場(chǎng)景和配置陷阱逐一展開。2. 索引設(shè)計(jì)的分水嶺從B樹到列存各引擎的索引脾氣2.1 主鍵與聚簇索引InnoDB的“必選”與SQL Server的“可選”索引設(shè)計(jì)是SQL優(yōu)化里最容易被低估的一環(huán)。很多人以為“建了索引就快了”但索引建錯(cuò)了效果可能比不建還差。MySQL InnoDB里聚簇索引是躲不掉的沒有主鍵時(shí)引擎會(huì)挑第一個(gè)非空唯一索引實(shí)在沒有就生成一個(gè)隱藏的rowid列。這意味著你在MySQL里設(shè)計(jì)主鍵本質(zhì)上是在設(shè)計(jì)整張表的物理存儲(chǔ)形態(tài)。隨機(jī)主鍵會(huì)導(dǎo)致頁(yè)分裂讓插入性能斷崖式下跌過(guò)長(zhǎng)的主鍵比如字符串型業(yè)務(wù)單號(hào)會(huì)讓每個(gè)二級(jí)索引都變得臃腫因?yàn)槎?jí)索引葉子節(jié)點(diǎn)要存主鍵值。SQL Server給了你選擇權(quán)。堆表和聚簇索引表各有適用場(chǎng)景如果數(shù)據(jù)是流水型追加寫入范圍查詢少、既沒有主鍵的排序需求堆表可能更合適但如果存在大量區(qū)間掃描或需要按特定順序輸出聚簇索引能把隨機(jī)IO變成順序IO。SQL Server還要關(guān)注填充因子Fill Factor和碎片率。索引碎片率超過(guò)30%時(shí)即便SQL走對(duì)了索引IO也可能高得離譜。運(yùn)維周期性重建索引這件事在MySQL里不常見但在SQL Server里是常規(guī)操作。Oracle和PostgreSQL的主鍵索引只是普通索引不承擔(dān)數(shù)據(jù)存儲(chǔ)職責(zé)。它們的表數(shù)據(jù)按插入順序放在堆里索引負(fù)責(zé)指向行的物理位置。這種架構(gòu)讓“插入”更輕量但也要注意堆表上頻繁更新會(huì)使行遷移舊位置留下轉(zhuǎn)發(fā)指針查詢會(huì)多一次IO。PostgreSQL的UPDATE會(huì)生成新版本行如果表膨脹嚴(yán)重索引掃描會(huì)掃描大量死元組導(dǎo)致查詢速度越來(lái)越慢——所以autovacuum的配置對(duì)PostgreSQL來(lái)說(shuō)不是“可選優(yōu)化”而是“保命設(shè)置”。2.2 覆蓋索引、索引下推與搜索條件寫法索引設(shè)計(jì)的高級(jí)玩法是讓索引“覆蓋”查詢避免回表。每個(gè)引擎都支持覆蓋索引但觸發(fā)條件不一樣。MySQL里如果SELECT的字段全部在二級(jí)索引中優(yōu)化器會(huì)用Index Only ScanExtra列顯示Using index回表完全省掉。SQL Server里叫“覆蓋索引Covering Index”常用INCLUDE語(yǔ)句把不需要參與排序、但需要輸出的列掛到索引葉子上。Oracle支持在索引里額外放一些列即“Include Column”讓索引能覆蓋更多查詢。PostgreSQL同樣支持INCLUDE。還有一種被忽略的能力是索引下推。MySQL的ICPIndex Condition Pushdown會(huì)在索引遍歷階段就過(guò)濾部分條件減少回表行數(shù)Extra列出現(xiàn)Using index condition就說(shuō)明下推生效。Oracle對(duì)復(fù)合索引的“謂詞推入”也有類似行為但要看執(zhí)行計(jì)劃的Predicate信息。寫SQL時(shí)把條件能寫成區(qū)間就寫成區(qū)間能避免函數(shù)包裹列就避免函數(shù)包裹列。這個(gè)原則四個(gè)引擎都適用但MySQL的感知最強(qiáng)烈因?yàn)樗膬?yōu)化器沒有Oracle那么“會(huì)兜底”。2.3 列存索引與分析型查詢另一個(gè)維度的“優(yōu)化”說(shuō)到索引不能不提SQL Server 2016之后主推的列存儲(chǔ)索引Columnstore。它把同一列的數(shù)據(jù)連續(xù)存放配合批模式執(zhí)行和頁(yè)壓縮分析類聚合查詢的IO量可以比行存少一個(gè)數(shù)量級(jí)。同樣的思路也是ClickHouse、Spark SQL這類分析引擎提速的核心。從OLTP角度做優(yōu)化時(shí)我們的思維是“減少行的訪問”而分析型場(chǎng)景的思維是“減少列的訪問”。如果你手上有一批報(bào)表SQL在SQL Server里給大表加一個(gè)列存索引通常比瘋狂優(yōu)化SQL寫法有效得多。Oracle也有列存選項(xiàng)Exadata上的Cell多級(jí)緩存、In-Memory列式格式MySQL則主要靠第三方引擎補(bǔ)位。這個(gè)例子最能說(shuō)明“不同數(shù)據(jù)庫(kù)引擎優(yōu)化方案”的差異方案不是靠某一條金句總結(jié)出來(lái)的而是靠理解引擎各自的強(qiáng)項(xiàng)。3. 慢SQL定位三板斧執(zhí)行計(jì)劃、統(tǒng)計(jì)信息與等待事件3.1 執(zhí)行計(jì)劃怎么看先看實(shí)際行數(shù)與估算行數(shù)的偏差慢SQL排查很多人第一反應(yīng)是看SQL文本試圖“用眼睛優(yōu)化”。但真正專業(yè)的第一動(dòng)作永遠(yuǎn)是拽出執(zhí)行計(jì)劃。四個(gè)引擎看計(jì)劃的方式完全不同你至少要會(huì)用自己手上的那個(gè)MySQLEXPLAIN或者EXPLAIN ANALYZE查看實(shí)際執(zhí)行時(shí)間與行數(shù)。重點(diǎn)看typeALL代表全表掃描range代表索引范圍掃描ref代表普通等值匹配、rows預(yù)估值、Extra里的Using filesort、Using temporary。SQL ServerSET STATISTICS IO ON和SET STATISTICS TIME ON可以輸出邏輯讀和耗時(shí)更直觀的是在SSMS里開啟“包含實(shí)際執(zhí)行計(jì)劃”。重點(diǎn)看每個(gè)操作符的Estimated vs Actual Row數(shù)、IO統(tǒng)計(jì)。OracleEXPLAIN PLAN FOR SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR)如果要看實(shí)際行數(shù)需要設(shè)置STATISTICS_LEVELALL然后再執(zhí)行這樣才能看到A-Rows和E-Rows的對(duì)比。PostgreSQLEXPLAIN (ANALYZE, BUFFERS)最實(shí)用能同時(shí)看到實(shí)際行數(shù)、啟動(dòng)成本和Buffer讀寫信息。我看執(zhí)行計(jì)劃有一個(gè)固定習(xí)慣先對(duì)比操作符的“估算行數(shù)”和“實(shí)際行數(shù)”。如果兩者偏差巨大比如估算1萬(wàn)行、實(shí)際跑了100萬(wàn)行那十有八九是統(tǒng)計(jì)信息過(guò)期。這時(shí)候再怎么改SQL都是治標(biāo)不治本。3.2 統(tǒng)計(jì)信息過(guò)期如何坑掉一條好SQL統(tǒng)計(jì)信息的采集機(jī)制在四個(gè)引擎里各有套路但“過(guò)期”帶來(lái)的問題都一樣災(zāi)難性。舉個(gè)我排查過(guò)的真實(shí)案例一張?jiān)吕塾?jì)訂單表平時(shí)1000萬(wàn)行月底批量清洗后只剩10萬(wàn)行。優(yōu)化器不知道表已經(jīng)“瘦身”仍然按1000萬(wàn)行估算給一個(gè)十幾行的結(jié)果集選了哈希連接加全表掃描接口響應(yīng)從20毫秒暴漲到5秒。引擎的自動(dòng)更新機(jī)制并不總是及時(shí)。MySQL的自動(dòng)統(tǒng)計(jì)更新基于變化行數(shù)超過(guò)表大小的閾值指數(shù)級(jí)變化時(shí)通常能觸發(fā)但如果你是用大批量DELETE清數(shù)據(jù)后馬上查還是建議手動(dòng)執(zhí)行ANALYZE TABLE。SQL Server的自動(dòng)更新閾值在舊版本里也是基于百分比頻繁小量更新時(shí)統(tǒng)計(jì)信息可能長(zhǎng)期滯后定期維護(hù)計(jì)劃里加上UPDATE STATISTICS是DBA的基本功。Oracle的自動(dòng)統(tǒng)計(jì)任務(wù)一般在夜間窗口白天大批量導(dǎo)入數(shù)據(jù)后也需要手動(dòng)DBMS_STATS.GATHER_TABLE_STATS。PostgreSQL的autovacuum在默認(rèn)配置下對(duì)大多數(shù)場(chǎng)景夠用但高頻UPDATE的短表仍然容易統(tǒng)計(jì)失真。排查慢SQL時(shí)我建議把“刷新統(tǒng)計(jì)信息”放在前面做掉——成本低、見效快還不會(huì)像改SQL那樣引入新風(fēng)險(xiǎn)。做完再重新抓執(zhí)行計(jì)劃往往問題就消失了。3.3 等待事件SQL Server的writelog與Oracle的log file sync有些慢SQL執(zhí)行計(jì)劃完美索引全都用上了但就是快不起來(lái)。這時(shí)候要看的不是執(zhí)行計(jì)劃而是時(shí)間花在哪里了。SQL Server里有一個(gè)很常見的等待類型WRITELOG。它表示會(huì)話在提交事務(wù)時(shí)需要等待日志記錄被寫入磁盤。凡是高頻小事務(wù)場(chǎng)景——比如循環(huán)逐行INSERT、頻繁UPDATE單行——都能看到大量WRITELOG等待。根因通常是磁盤的fsync延遲太高HDD、共享云盤、日志文件與數(shù)據(jù)文件混用或者日志文件初始化太小導(dǎo)致頻繁自動(dòng)增長(zhǎng)。優(yōu)化辦法把事務(wù)日志文件放到低延遲獨(dú)立磁盤、合并小事務(wù)為批量提交、合理預(yù)分配日志文件大小。別小看這個(gè)等待它經(jīng)常是“CPU不忙、磁盤不忙、但接口就是慢”的元兇。Oracle里對(duì)應(yīng)的等待是log file sync和log file parallel write背后邏輯高度相似提交事務(wù)時(shí)LGWR進(jìn)程要確保日志緩沖寫入聯(lián)機(jī)日志文件。排查方法比SQL Server稍微復(fù)雜可以從AWR報(bào)告的Top 5 Timed Events入手確認(rèn)Wait Event是不是log file sync再檢查redo log所在磁盤IO能力。MySQL的對(duì)應(yīng)參數(shù)是innodb_flush_log_at_trx_commit1時(shí)的每次提交刷盤如果業(yè)務(wù)允許改成2會(huì)有數(shù)量級(jí)的性能提升但代價(jià)是丟最多1秒的事務(wù)日志。這個(gè)取舍沒有標(biāo)準(zhǔn)答案要看業(yè)務(wù)對(duì)數(shù)據(jù)安全的要求。等待事件分析的價(jià)值在于它幫你把“SQL慢”拆成了“SQL自己慢”和“環(huán)境讓它慢”。前者靠索引和執(zhí)行計(jì)劃解決后者靠配置和磁盤布局解決。很多DBA只盯著SQL文本忽略等待類型這是排查慢SQL最容易走的彎路。4. 實(shí)戰(zhàn)拆解去重、分頁(yè)、窗口函數(shù)在四大引擎中的優(yōu)化做法4.1 去重DISTINCT、GROUP BY與ROW_NUMBER的代價(jià)差異“去重”是搜索引擎里最常見的SQL需求但不同引擎對(duì)去重的執(zhí)行方式完全不同。很多人以為DISTINCT就是簡(jiǎn)單的“選不同”實(shí)際它的代價(jià)往往被嚴(yán)重低估。DISTINCT在四個(gè)引擎里核心執(zhí)行方式無(wú)非兩種哈希去重或排序去重。沒有索引時(shí)MySQL可能使用臨時(shí)表SQL Server可能走Sort算子并觸發(fā)tempdb溢出Oracle默認(rèn)傾向HASH UNIQUEPostgreSQL在work_mem不足時(shí)會(huì)把HashAgg退化成SortGroupAggregate。實(shí)操中我遇到過(guò)最坑的寫法是先JOIN再DISTINCT。用訂單表和訂單明細(xì)表關(guān)聯(lián)最終結(jié)果希望得到“有哪些客戶下單”第一版SQL往往寫成SELECT DISTINCT c.customer_id ... FROM customers c JOIN orders o ON ...。這種寫法會(huì)把明細(xì)表放大后才去重中間結(jié)果驚人。正確的做法是改成EXISTS子查詢SELECT customer_id FROM customers c WHERE EXISTS (SELECT 1 FROM orders o WHERE o.customer_id c.customer_id)。執(zhí)行計(jì)劃直接從HASH JOIN變成SEMI JOIN行數(shù)少了一個(gè)量級(jí)。不同去重手段的選擇也要看業(yè)務(wù)語(yǔ)義需求推薦方式原因簡(jiǎn)單取唯一值SELECT DISTINCT col引擎有專門算子寫法直觀按某字段分組取其他字段GROUP BY 聚合函數(shù)不依賴窗口函數(shù)執(zhí)行計(jì)劃更清晰每組內(nèi)取最新一條/前N條ROW_NUMBER() OVER(PARTITION BY ... ORDER BY ...)窗口函數(shù)語(yǔ)義最強(qiáng)SQL Server 2012/MySQL 8.0/Oracle/PostgreSQL均支持注意一個(gè)細(xì)節(jié)DISTINCT對(duì)NULL的處理是“去重后只保留一個(gè)NULL”GROUP BY會(huì)把NULL當(dāng)成一個(gè)分組常規(guī)業(yè)務(wù)上兩者等價(jià)但如果你寫的是多列去重務(wù)必確認(rèn)NULL列的處理是否符合預(yù)期這一塊容易出隱蔽的語(yǔ)義Bug。4.2 深翻頁(yè)OFFSET不慢慢的是丟棄分頁(yè)是所有業(yè)務(wù)系統(tǒng)躲不開的SQL場(chǎng)景。淺分頁(yè)沒壓力深翻頁(yè)才是真正的性能殺手。四個(gè)引擎都支持LIMIT/OFFSET或等價(jià)語(yǔ)法但原理一樣先掃描出從第1行到第(offsetlimit)行的全部數(shù)據(jù)丟棄前面的offset行返回最后limit行。頁(yè)數(shù)越深掃描和丟棄的行越多。MySQL的經(jīng)典寫法是LIMIT 1000000, 20它會(huì)掃到第100萬(wàn)行再丟掉SQL Server用OFFSET 1000000 ROWS FETCH NEXT 20 ROWS ONLY底層也是排序后跳過(guò)Oracle老版本用ROWNUM嵌套子查詢12c以后有FETCH FIRST但深分頁(yè)的本質(zhì)沒有變化。PostgreSQL的LIMIT/OFFSET同樣避免不了這個(gè)問題。解決深翻頁(yè)最有效的方案是Keyset Pagination也叫游標(biāo)分頁(yè)。不用OFFSET而是帶一個(gè)排序鍵的WHERE條件-- 傳統(tǒng)深翻頁(yè)慢 SELECT * FROM orders ORDER BY id OFFSET 1000000 ROWS FETCH NEXT 20 ROWS ONLY; -- Keyset Pagination快 SELECT * FROM orders WHERE id 1000000 ORDER BY id FETCH FIRST 20 ROWS ONLY;Keyset方式的執(zhí)行計(jì)劃是典型的索引范圍掃描理論上可以做到翻到第N頁(yè)都只有20行的開銷。前提是排序鍵絕對(duì)唯一且穩(wěn)定。如果業(yè)務(wù)排序需要多字段比如ORDER BY created_at DESC, id DESCWHERE條件也要按同樣順序帶上游標(biāo)值。字符串排序、日期排序同樣適用。實(shí)測(cè)數(shù)據(jù)最直觀一張200萬(wàn)行訂單表傳統(tǒng)OFFSET翻到第1000頁(yè)每頁(yè)20行耗時(shí)約為280毫秒改為Keyset后穩(wěn)定在0.5毫秒左右。所以如果你正在負(fù)責(zé)一個(gè)有深翻頁(yè)需求的接口建議趁早改造不要等用戶報(bào)告“越翻越慢”。4.3 窗口函數(shù)與并行分析需求在不同引擎里的落地姿勢(shì)窗口函數(shù)是SQL優(yōu)化工具箱里的高頻武器。SQL Server從2012版本開始支持ROW_NUMBER、RANK、DENSE_RANK、SUM() OVER()等再早只能靠自連接實(shí)現(xiàn)MySQL從8.0才開始支持之前只能用變量模擬Oracle和PostgreSQL自帶完整的窗口函數(shù)支持它們的執(zhí)行器對(duì)這一類算子優(yōu)化也更成熟。舉一個(gè)十分常見的例子“查每個(gè)客戶最近一筆訂單”。用窗口函數(shù)可以寫成SELECT customer_id, order_id, order_date FROM ( SELECT customer_id, order_id, order_date, ROW_NUMBER() OVER(PARTITION BY customer_id ORDER BY order_date DESC) AS rn FROM orders ) t WHERE rn 1;這段SQL在四個(gè)引擎里都能跑但注意如果orders表非常大窗口函數(shù)的PARTITION BYORDER BY需要一次全局排序。優(yōu)化點(diǎn)是建立復(fù)合索引(customer_id, order_date DESC)讓窗口排序直接走索引有序掃描避免顯式排序。MySQL 8.0對(duì)索引有序性的依賴最強(qiáng)索引建立不對(duì)時(shí)執(zhí)行計(jì)劃會(huì)出現(xiàn)Using filesort數(shù)據(jù)量大時(shí)性能差距能達(dá)幾十倍。SQL Server則可能更依賴內(nèi)存里的Sort算子配合列存索引時(shí)有時(shí)能獲得更激進(jìn)的批處理加速。再說(shuō)并行SQL優(yōu)化。Oracle的并行DML、并行查詢能力很強(qiáng)可以在SQL上加PARALLEL Hint讓一個(gè)復(fù)雜聚合查詢同時(shí)跑多個(gè)并行服務(wù)進(jìn)程SQL Server用MAXDOP設(shè)置并行度PostgreSQL從9.6開始引入了并行順序掃描和并行聚合但并行度受限于planning參數(shù)。MySQL至今沒有原生的“一條SQL自動(dòng)并行”能力一個(gè)高成本查詢只能單線程執(zhí)行。這個(gè)差異意味著同樣的分析SQL在Oracle和PG上可以通過(guò)調(diào)整并行度實(shí)現(xiàn)質(zhì)的飛躍在MySQL上則必須靠?jī)?yōu)化語(yǔ)句本身、建物化視圖或引入分析引擎來(lái)解決問題。跨引擎優(yōu)化時(shí)必須先認(rèn)清有些特性是這個(gè)引擎天生沒有的與其死磕不如改變架構(gòu)方案。5. 常見陷阱與規(guī)避從SQL寫法到引擎配置的教訓(xùn)5.1 參數(shù)化與SQL注入安全底線也是性能底線搜索引擎熱詞榜里永遠(yuǎn)有SQL注入這不是偶然。很多運(yùn)維和開發(fā)把“SQL注入防護(hù)”當(dāng)成純安全議題實(shí)際上它與SQL優(yōu)化是同一件事。參數(shù)化查詢Prepared Statement除了能防注入還能提升執(zhí)行計(jì)劃復(fù)用率。以SQL Server為例如果業(yè)務(wù)代碼每次都拼接一個(gè)新的SQL文本提交每次都需要硬解析生成新的執(zhí)行計(jì)劃CPU壓力升高、計(jì)劃緩存命中率下降改成參數(shù)化寫法后同一個(gè)計(jì)劃模板可以被反復(fù)復(fù)用。Oracle的綁定變量、MySQL的PREPARE、PostgreSQL的PREPARE也都是一樣的邏輯。反過(guò)來(lái)說(shuō)SQL注入的根因就是非參數(shù)化的字符串拼接?;ヂ?lián)網(wǎng)上流傳的所謂“繞過(guò)手法”本質(zhì)上都是利用拼接邏輯的缺陷做字符串逃逸。修復(fù)方式?jīng)]有捷徑全部改成參數(shù)化查詢數(shù)據(jù)庫(kù)賬號(hào)按庫(kù)表權(quán)限最小化應(yīng)用層再做一層白名單校驗(yàn)。參數(shù)化一上注入漏洞攻擊面立刻歸零計(jì)劃緩存利用率同步提升——一次改造安全性和性能雙收益。5.2 隱式轉(zhuǎn)換與函數(shù)包裹讓索引瞬間失效的寫法這是跨引擎優(yōu)化里最統(tǒng)一的一條經(jīng)驗(yàn)在索引列上做函數(shù)運(yùn)算或隱式類型轉(zhuǎn)換絕大多數(shù)情況下會(huì)讓索引失效。MySQL里最常見的翻車現(xiàn)場(chǎng)是字段類型是VARCHARSQL寫成了WHERE phone 13800138000MySQL會(huì)先把字段轉(zhuǎn)成數(shù)值再比較索引直接報(bào)廢。解決辦法就是讓參數(shù)類型與字段類型保持一致寫成13800138000字符串。SQL Server也有類似行為字符列與數(shù)值常量比較時(shí)常會(huì)觸發(fā)隱式轉(zhuǎn)換執(zhí)行計(jì)劃里會(huì)出現(xiàn)CONVERT_IMPLICIT掃描行數(shù)瞬間暴增。日期函數(shù)包裹列是另一個(gè)通病。WHERE DATE(create_time) 2024-01-01這種寫法會(huì)把create_time列塞進(jìn)函數(shù)里即便該列有索引也掃不了。改成WHERE create_time 2024-01-01 00:00:00 AND create_time 2024-01-02 00:00:00既能走索引邏輯上也等價(jià)。引擎差異在這里也有體現(xiàn)。Oracle里你還能用函數(shù)索引如TO_CHAR(create_time, YYYY-MM-DD)建索引兜底MySQL 8.0也支持函數(shù)索引SQL Server可以通過(guò)計(jì)算列加索引實(shí)現(xiàn)類似效果。但我的習(xí)慣仍然是優(yōu)先改SQL寫法而不是為不合理的寫法建特殊索引。因?yàn)楹瘮?shù)索引對(duì)寫入有額外維護(hù)成本而且應(yīng)用一旦換寫法索引就浪費(fèi)了。5.3 系統(tǒng)性“偽慢SQL”監(jiān)聽、連接池與臨時(shí)文件最后一類慢SQL其實(shí)SQL本身是無(wú)辜的。比如Oracle報(bào)錯(cuò)ORA-12518“監(jiān)聽程序無(wú)法分發(fā)”這個(gè)錯(cuò)誤的本質(zhì)往往不是SQL性能問題而是監(jiān)聽進(jìn)程無(wú)法fork新的服務(wù)器進(jìn)程——常見原因是processes參數(shù)打滿、操作系統(tǒng)進(jìn)程數(shù)限制、SGA/PGA內(nèi)存不足。排查方向是調(diào)大processes、sessions參數(shù)限制應(yīng)用的空閑連接數(shù)檢查系統(tǒng)內(nèi)存。如果你只盯著SQL調(diào)優(yōu)永遠(yuǎn)看不到問題。連接池配置同理。很多接口慢不是SQL慢而是連接池里線程都在排隊(duì)等連接。HikariCP、Druid這類連接池的maximumPoolSize設(shè)置過(guò)小高并發(fā)時(shí)請(qǐng)求全部阻塞在獲取連接階段設(shè)置過(guò)大數(shù)據(jù)庫(kù)端又會(huì)資源爭(zhēng)用。我在實(shí)際優(yōu)化項(xiàng)目里見過(guò)接口P99從800毫秒降到80毫秒的案例改動(dòng)僅僅是調(diào)整連接池大小和空閑超時(shí)SQL一行沒改。臨時(shí)文件和日志文件也經(jīng)常被忽視。SQL Server的tempdb如果默認(rèn)配置且與其他庫(kù)共用硬盤排序和哈希連接一旦落盤就會(huì)拖慢所有查詢MySQL的tmp_table_size過(guò)小時(shí)GROUP BY會(huì)轉(zhuǎn)到磁盤臨時(shí)表PostgreSQL的work_mem直接決定Sort/Hash操作是走內(nèi)存還是走磁盤默認(rèn)4MB對(duì)一個(gè)稍大排序來(lái)說(shuō)小得離譜。所以當(dāng)你面對(duì)一條“查了半小時(shí)還不出來(lái)”的SQL排查順序我建議是統(tǒng)計(jì)信息→等待事件→執(zhí)行計(jì)劃→SQL改寫→索引調(diào)整→系統(tǒng)配置。前面幾步可以快速排除環(huán)境因素后面幾步才是真正的SQL優(yōu)化。順序反了很容易在一個(gè)錯(cuò)誤的方向上耗費(fèi)半天。做數(shù)據(jù)庫(kù)優(yōu)化這些年我最深的體會(huì)是優(yōu)化不是背答案而是理解每個(gè)引擎是怎么存、怎么找、怎么鎖的。同一套經(jīng)驗(yàn)換一個(gè)數(shù)據(jù)庫(kù)往往就失真所以每次跨庫(kù)排查我都默認(rèn)自己是個(gè)新手從頭看執(zhí)行計(jì)劃和等待事件。很多團(tuán)隊(duì)迷信所謂的“大廠調(diào)優(yōu)參數(shù)”拿一套配置到處套結(jié)果連基礎(chǔ)的數(shù)據(jù)文件布局都沒看。老老實(shí)實(shí)按“統(tǒng)計(jì)信息是否新鮮、等待事件是否異常、執(zhí)行計(jì)劃是否合理、索引是否被有效使用”這個(gè)順序走一遍多數(shù)慢SQL問題都能在半小時(shí)內(nèi)定位。最后再分享一個(gè)實(shí)戰(zhàn)習(xí)慣每次只改一個(gè)變量。改完SQL跑一次驗(yàn)證建完索引再看一遍執(zhí)行計(jì)劃。多個(gè)優(yōu)化點(diǎn)一起上出了問題你根本不知道是誰(shuí)的鍋。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
色五月丁香五| 四虎成人精品永久免费AV九九| 手机AVAV天堂看网| 中文字幕九九九九| 97在线天堂| 97操操操| 欧美色色色色色色| 五月天色区| 久久久久9| 色九四色| 国产精品第一国产精品| 五月综合色| 免费观看的婷婷五月视频在线| 97碰久久| 久久免费9| 五月综合人妻| 中文字幕有多少字| 日日鲁鲁鲁夜夜爽爽狠狠视频97| 婷婷五月天av| 五月天社区| 久99在线视频| 啪啪婷婷五月天激情| 五月婷婷六月激情网| 婷婷五月天网址| 五月激香蕉网| 婷婷婷狠狠| 思思热视频在线| 亚洲天堂色色| 五月丁香啪| 操逼在线视频| 亚洲、热| 六月丁香影院| 夜夜夜夜夜骑撸| 亚洲AV激情五月综合网| yazhou seshipin| 9精品视频在线观看| 亚洲亚洲人成综合网络| AA片在线观看视频在线播放 | 99热官网| 99色热视频| 色久天| 日日干日日s| 人人爽人人射-美女久久久久久久久久-成人AV | 免费试看小视频 99| 另类激情五月| 久久这里只有精彩| 婷婷六月爽| 色狠狠五月天| 五月婷六月天| 久久人妻www| 五月天婷婷五月| yazhouzonghesese| 亚州操人在线视频| 人妻激情综合| 精品人妻一区二区三区四区不卡在| 五月丁香婷中文| 天堂综合久久| 五月天偷拍| 97人妻碰碰中文无码久热丝袜| 超碰97干| 熟女人妻一区二区三区免费看| 五月婷婷综合在线| 亚洲狠狠爱婷婷| 青青草青青草五月天| 婷婷综合视频| 婷婷丁香先锋资源网站| 99ri在线| 色婷婷丁香中文在线播放| 激情图片婷婷| 婷丁香五月天| 99国产精品久久久久久久久久久| 一区无码| 亚洲五月婷婷| 五月婷婷网五月在线| 丁香五月激情啪啪| 久久久久99精品成人网站| 香蕉五月婷婷| 97色色色色| www.精品99| 麻豆123区| 婷婷综合精品视频97| 国产欧洲欧洲精品久久| 色人久久| 欧美伊人9| 九热精品| 中文网av| 91狠狠综合久久| 午夜天堂啪啪| 国产成人在线不卡AV| 影音先锋色婷婷| 久久老码第一| 天天操婷婷| 久色网址| bukadeavzaixian| 日韩人妻无码专区| 久久精品视频在这里有| 一本大道嫩草AV无码专区| 狠狠爱丁香婷| 日本va欧美va精品发布视频| 超碰97干| 婷婷五月天丁香久久| 99热这里都是精品| 久久九九热视频| 婷婷的99视频网站| 亚洲四色五月| 思思久热6| 色情久久久| 99热国品| 色视频2025| 天天狠狠夜夜狠狠2023| 激情6月| 91色综合网| 丁香五月婷婷丫| 99这里| 天天爽天天| 综合精品99| 六月婷婷无码| 另类天堂| 亚洲综合99| 久久婷婷五月天激情| www.五月天色色.com| 风流少妇A片一区二区蜜桃| 色色色色区| ...婷婷国产成人亚洲日韩| 一丁香五月天月AV| 青青草五月天| 色五月婷婷激情| 丁香五月天之婷婷影院| 五月丁香| 丁香五月电影| 99久.| 激情综合网五月激情网| 九月色婷婷综合亚洲| 久久精品99| 精品人妻一区| 激情丁香五月AV| 最新亚洲色色网| 狠狠综合网| 丁香视频| 干一干xxxx| 国产精品电| 亚洲区,视频区,视频区免费| 这里只有精品免费视频| 啪啪啪大香蕉| 色播五月婷婷| 亚洲综合网激情五月天| 狠狠干最新地址| 五月丁香啪啪激情| 91打屁股免费看| 丁香蜜臀黄色婷婷五月天| 思思热视频在线| 丁香五月婷婷激情97| 天天五月香欧美| 99九九综合久久九九| 综合色婷婷| 五月天俺去也| 91疯狂操操操操| 五月成人天| 九九久久偷拍| 另类精品视频在线观看| 色五月天影视| 高潮毛片又色又爽免费| 狠狠干夜夜干| 婷婷色亚洲| 丁香五月手机在线| 天天 青草 丝袜制服 在线| 激情五月天网站| 人操综合| aaaaa黄色| 香蕉婷婷| 综合色五月天| 91热手机在线| 色五月欧美| 亚洲精品网站色视频| 色99网| 在线va网站| 夜夜操狠狠操| 色色a| 亚洲精品国产成人AV在线| 婷婷午夜精品久久久| 日本久久性| 亚洲AV网站在线观看| 九九aV| 丁香五月天堂网| 六月婷婷网站| 激情九月综合| 婷婷色网址| 激情五月丁香亭亭| 狠狠做六月爱婷婷综合aⅴ| 国产亚洲在线观看| 丁香五月天婷婷中文字幕| 99激情在线| 九九AV| 色丁香五月婷婷在线| 天堂综合久久| 国外亚洲成AV人片在线观看| 97热在线精品| 99热精品一| 久re热视频| 欧美日综合| 思思精品热在线| 久久久性爱视频| 久久婷婷伊人| 一片AV片免费播放| 天天日天天插| 欧美婷婷日本| 五月天婷婷激情在线色图| 九九碰九九爱97超碰| 国产国产乱老熟女视频网站97| 五月丁香啪啪综合| 激情婷婷五月天伊人在线观看| 啪啪五月综合| 69热91天堂| 9久精品视频| 婷婷五月天免费视频在线观看| 熟女网站久久| 啪啪东京热| 丁香色五月 97干| 婷婷五月天黄色小说| 97在线精品| 日本美女97在线视频| www久久99| 26uuu另类| 欧美内射AA| 激情婷婷22月间| 九九人人操| 丁香婷婷激情六月五月开心| 无码 色| 另类五月婷婷| 亚洲精品网站色视频| 99伊人婷婷在线| 艳妇野外情欲放荡HD| 日日操夜夜撸| 丁香五月五月婷婷| 97人人操人人干| 五月婷婷在线视频| 九九青草热| 婷婷综合五月色播| 被男人添B超爽视频| 九九九九国产| 亚洲人妻av| 色爱99| 精品A√| 成人网站免费sxj| 99色色热热| 玖玖激情五月天| 久久艹网| 9久久AV| 激情婷婷99| 精品香蕉99久久久久网站| 天天干天天色综合| 五月婷婷丁香六月| 乱精品一区字幕二区| 色色色五月婷婷| 丁香五月天堂| 免看黄大片AA | 荡乳尤物3HP1V5| 五月婷婷色| 噜噜视频| 久久无码成人| 综久久久| 激情综合网五月丁香| 极品另类| 色狠狠综合| 激情六| 99热国产在| 狠狠搞综合色| 日日噜狠狠色| 色色吧综合| 九九精品热| 超碰在线91| 精品久热69| 综久久久| 超碰97人人操| RenRenSe在线视频网站| 色播激情五月天| 色综合99| 久久伊人大香蕉| 夜精品无码A片一区二区蜜桃| 日日躁夜夜躁狠狠久久AV| 三级黄色大片视频| 国产精品人妻在线网址| 丁香婷婷五月天色综合| 丁香六月婷婷综合在线| 狠狠操综合| 91性高潮久久久久久久久| 国产午夜精品一区二区三区四区| 成人人操| 五月天激日本色情在线| 人妻久久久久久久 | 免费看欧美成人A片无码| 久久在线视频免费观看| 五月久久网| 大香蕉九九| 思思久久96热在精品国产,| 天天色天天爱天天爱天天爱y| 五月丁香激情综合久久| 成人做爰高潮A片免费视频| 六月婷婷综合网2| 婷婷五月色情| 午夜精品777| 婷婷开心激情| 国产美女无遮挡裸体毛片A片| 热99.com婷婷| 婷婷6月综合网| 婷婷五月天激情五月天网站| 久热这里只有精品6| 欧美顶级少妇做爰HD| 99在线免费视频播放| 97操操| 99热精地址| 国产 码在线成人网站| 丰满少妇猛烈A片免费看观看| 久久99日本精品视频免费观看| 超碰在线9| 超碰91在线| 九九热91| 天天综合天综合| 99性色| 丁香五月激情啪啪啪| 国产日产成人亚洲欧美国产VA| 五月天激情婷婷小说| 亚洲五月婷| 婷婷五月另类网站| 天天干天天干天天干天天干天天干天天干天天 | 色婷婷久久综合| 91精品国产综合久久密臀| www.99精品在线| 精品欧美性爱超级爽| 婷婷综合五月天| 国产三级秋霞| 亚洲av另类在线观看| 玖玖视频福利| 色5月婷婷| 国产成人在线不卡AV| 五月丁香欧美在线| 丁香五月天大香蕉啪啪| 久久有码| 精品久9| 五月婷婷综合色啪| 亚洲亚洲人成综合网络| 婷婷六月激情啪啪| 女人高潮内射99精品| 大香蕉久| 国产精品美女| 五月激情婷婷开心五月| 最近中文字幕大全免费版在线 | 亚洲精品国产成人AV在线| 久久久久er热| 99热线观看9| 99久久大片| 狠狠操狠狠色| 五月天婷a| 五月丁香综合激情| 天天做天天爱天天日| 五月激情啪啪| 中文字幕婷婷| 色墦五月丁香| 婷婷成人五月天| 9+1视频网址| 操日视频| 婷婷操逼| 亚洲人妻av伦理| 婷婷丁香六月五月天| 丁香五月色| 秋霞A V毛片| 影音先锋一区二区三区| 五月婷色| 99精品网| 婷婷丁香五月天亚洲| 1024在线一区| 97色色综合| 美国不卡视频| 99久在线精品99re8热| 久久婷丁香五月| 五月丁香婷草| 色婷婷电影| 久99久视频| 九月婷婷综合八月丁香在线观看| 欧美A片在线视频免费观看| 91小黄书网址在线观看| 久久一伦| 天天插天天插| 婷婷噜噜| 六月丁香啪啪| 六月色 亚洲| 类似婷婷激情综合网站| 五月天六月丁香| 黄桃AV无码免费一区二区三区| 久久婷婷欧美| 欧美人人操| 成人视频网| 天天操天天日天天操| 综合激情肏逼网| 99热8| 久久99热这里只频精品6学生| 色久婷婷网| 婷婷丁香大香蕉| 五月婷婷六月色| 中文字幕婷婷| 99热在线极品极品| 91chinese在线| 3p日韩网站视频| 亚洲一区二区 成人网站戴套| 91色逼| 亚洲mm色| 99精品在线观看| 婷婷.com| 久久婷婷亚洲| 久久伦乱| 亚洲热久久| 婷婷综合久久| 丁香五月婷婷99| 激情综合久久| 超碰色综合| 丁香婷五月天| 97干在线视频| 狠狠情色| 色五月天婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷 | 可以看的AV| 色很很96| 黄色成人网站在线播放| 97操碰免费视频| 99亚洲天堂| 99免费在线| 狠狠操之狠狠操| wWW九九在线播放| 婷婷五月色播天| 久久最新色| 日本色色影片| 激情六月天| 亚洲美女高潮久久久久久69| 夜夜爱网站| www.思思99热| 欧美激情丁香五月天久久婷婷一区| 欧美超级视频97| 69热91天堂| 亚洲精品视频在线| 五月天社区| 五月婷婷六月色| 婷婷五月丁香六月天亚洲综合| 性爱AV天堂| 五月丁香激| 亲子乱av一区二区三区的| 色噜噜狠狠色综无码久久合欧美| 国产色色视频| 九九成人| 任你爽视频| 久久久久久9| 天天透天天爱| 爱草人视频| 婷婷五月丁香伊人| 日日.c| 这里只有精品视频99| 五月噜噜| 色永久| 丁香六月婷婷综合在线| 五月丁香六月综合激情无码软件亮点 | 成人色五月天婷婷| 激情五月深爱五月观看| 五月激情四射婷婷丁香| 六月婷婷狠狠| 午夜不卡成人一区二区| 五月天婷a| 人妻精品久久久久久久| 色播五月网| 五月丁香六月婷婷啪啪| 久久92| 99操碰| 五月婷婷性爱| 99免费在线视频| 蜜桃人妻无码AV天堂三区| 久久精彩视频| 玖玖99婷婷| 狠狠色综合无线观看| 久久综合香蕉国产国产蜜臀AV| www.久99| 黄色笑话深爱激情网丁香五月婷婷啪啪啪啪啪| 这里只有精彩亚洲视频推荐| 99热这里全都是精品| 色婷婷国产精品综合在线观看| 成人在线日韩欧美| 99网| 国产精品男人AV不卡| 五月丁香六月婷婷综合| 日韩黄黄| 婷婷五月天成人影片| 九一99| 无码髙清| 国产精品A成V人在线播放| 日韩专区五月天婷婷丁香| www久久久久久久| 一本色道久久88加勒比—| 五月丁香另类图片| 色小说婷婷五月天天天| 99网99热| 开心五月色婷婷综合开心网| 超碰在线94| 黄色片区子| 六月丁香射婷婷欧美色图片| 色婷婷色99国产综合精品| 久9热在线视频| 天天日天天舔| 精品人妻在线| 婷婷五月天论坛| 久久激情天堂| 清纯唯美 激情四射| 另类国产区| 人人色人人摸人人看| 人妻尝试久久久久久久久久久久| 99re免费精品视频| 九九精品9| 亚洲AV人人操| 色99网| 亚洲成人综合在线| 大香蕉人在线65| 色噜噜狠狠色综合日日免费| 午夜天堂啪啪| 亚洲色综合色网| www.夜夜操.con| 五月天伊人| 欧美内射AAAAAAXXXXX| 日韩精品成人在线| 五月天俺去也| 免费无码毛片一区二区A片| 五月婷婷色啪| 五月天激情AV| 不卡的AV网站| 79亚洲精品少妇| 热99精品视频五月| 久久码久久无清| www.伊人天堂偷偷婷婷| 亚洲色视频| 99噜噜噜| 色婷婷社区| 国产欧美精品AAAAAA片| 综合激情伊人影视在线| 99热这里只有精品1025| 色婷婷情片| 巴基斯坦粉嫩无码视频| 少妇性BBB搡BBB爽爽爽电影| 色情性爱视频网址| 超碰国产在线| 五月婷婷影院| AV在线免费播放| 六月激情网| 欧美婷婷五月| 亚洲狠9| 丁香八月综合激情| 青柠影视免费高清电视剧| 丁香五月久久| 丁香五月婷婷影院| 综合色播| 国产色色视频| 噜综合| 色五月激情五月天| 99久久精彩视频。| 亚洲免费看片| 婷婷爱综合| av九九| www.激情.com.| 久草大| 超碰人人艹| 五月丁香激情深爱婷婷| 婷婷五月色播| 99九九玖玖| 婷婷五月天亚洲综合| 99热九九在线| 激情99| 无码髙清| 99这里只有| 丁香六月婷婷开心| 五月天成人综合| 五月丁香日本在线视频观看| 精品一二三区久久AAA片| 五月天丁香啪啪综合| 99久久网站| 五月天婷婷色紫薇阁| 年轻的妺妺伦理HD中文 | 青柠影视免费高清电视剧| 五月激情综合婷婷| 色9999综合久久| www.婷婷五月| 国产激情综合五月久久| 国自产拍偷拍精品啪啪一区二区| 韩国久久少妇视屏| 99热只有精品在线| 婷婷丁香人妻天天爽| 久久色频| WWW.HENHENL.| 99视频35精品视频在线观看| 久久五月天精品视频| 日日干夜夜干| 婷婷丁香人妻天天爽| 欧美色图天堂网色| 日本高清久久| 色五月人妻| 丁香九月激情| 三日本无码| 4399高清无码视频| 五月丁香五月婷婷| 天天天天天久久久久久| 超碰操网| 丁香,开心成人,久久| 免费观看的av| 天天日天天摸天天| 2020日日干| 丁香婷婷大香蕉| 狠狠操狠狠干综合| WWW久久久| 日本三级成人秘书精品片| 婷婷播5月| 欧美成人Va| av人人操| 久久久久婷婷| 播五月开心婷婷欧美综合| 狠狠色婷婷7| 男人天堂AV在线一区二区| 天天干电影| 色婷婷丁香五月在线观看| 大香蕉啪啪啪| enecarbon-materials.com污K127封锁请涟系@wip1688 | 另类少妇人与禽zOZZ0性伦| 色女伊人| 五月丁香婷婷激情久久| 久久综合丁香| 国产女人十八水真多1| 色五月在线播放| 婷婷五月天狠狠| 丁香五月六月久久综合| 日熟女| 久久99久久99精品,久国产,久久精品免费,99久在线,久久久久国产精品免费网站,9 | 婷婷五月天男人影院色色网| 综合亚洲六月婷婷在线| 七七色色综合| 激情五月最新网址| 亚洲妇女熟BBW| 九九亚洲视频| 五月丁香色婷婷色| www.深爱激情| 99性感视频| 丁香婷婷精品视频| 91人妻人人做人碰人人爽九色| 天天综合区| 亚洲乱码日产精品BD在线观看| 91狠狠综合网| 开心婷婷五月| 另类小说激情五月天| 五月丁香啪啪啪啪| 婷婷激情综合色五月久久,色婷婷丁香花,丁香婷婷五月情天,久久婷婷五月综合色 | 色丁香五月婷婷| 特黄三级片| 婷婷激情图片| 亚洲va在线∨a天堂va欧美va| 丁香五月狠狠综合欧美| 婷婷五月天国产手机在线视频观看| 久综合色| 亚洲愉拍99热成人精品| 久久精品99久久| 国产无人区大片| 日本三日本三级少妇三级66| 婷婷97C| 丁香五月亚洲综合| 欧美97超碰| www婷婷色| 久久五月婷天天干| 欧美日韩成人h| 99五月香婷婷丁香在线视频| 五月婷婷亚洲天堂97色婷婷| 久久综合26p| 九月丁香八月婷婷加勒比| 亚洲亚洲人成综合网络| 黄桃AV无码免费一区二区三区 | 99免费在线| 在线另类| 夜夜操狠狠操| 青青久久五月| xxxx五月天色色| yiqicaoav| 91日视频| 色婷婷XXXXX| 婷婷久久午夜网| 五月激情精品视频| 天天爽天天透天天爱| 久热这里只有精品视频6| 天天檫天天爽| 美女五月狠狠| 婷婷五月天久久久| 欧美大肥婆大肥BBBBB| 日韩人妻白浆视频系列| 午夜福利8055| 99久久99九九99九九九| 五月婷高清视频| 另类图片婷婷五月天| 丁香六月婷婷综合欧美| 色域五月婷婷丁香| 91狠狠色丁香婷婷综合久久精品| 91男女视频在线观看| 玖玖@三月天天丁香婷婷| 成年视频免费观看| WWW,激情五月天,COM| 丁香五月天婷婷中文| 婷婷五月天六点丁香五月| 六月久久婷婷| 无码色| 五月天丁香花婷婷| 99re热视频这里只有综合亚洲| 高清无码 一区 二区 三区| 婷婷 月 丁香| 91欧美| 丁香五月开心七月| 国産精品| 99视频精品8 | 久久婷婷视频| 五月婷婷丁香| 丁香五月777| 99精品这里只有免费视频| 天天狠狠干| 久久天天| 日韩五月婷婷| 99爱在线| 99热日| 婷婷丁香中文字幕| 久久久五月天| 中文AV网站| 天天爽天天爽| 色色色干| 婷婷五月激情天| 99婷婷| 五月婷婷婷| 六月丁香五月激情网| 五月丁香色色| 人操91在线| 性 色 婷婷| enecarbon-materials.comWu染请涟系Bao护@wip1688 | 中文字幕日本最新乱码视频 | 亚洲天堂久久| 任你搞网站| 婷婷射婷婷舔| A片试看120分钟做受视频红杏 | 色婷婷五月天激情综合| 91热久久| 综合色影院| 狠色色狠网| 人人操AV| 久久只有这里精品免费| 五月天成人免费视频| 五月天丁香久久综合 | 九九九九九九九热| 99这里只有精品| 国产成人在线精品| 色婷婷激情| 色吊丝99| 俺去也在线视频| 无码日本精品XXXXXXXXX | 五月婷婷性爱| 日韩无码专区| 天天综合网91| 99狠狠色| 天天综合 99久久婷婷| 天天舔天天操| 精品视频网| 99re这里只有精品在线观看| 性生生活大片又黄又| 色A网| 久热大香蕉| 9.1综合网| www.婷婷五月| 视频综合网| 99这里| 九月丁香| 开心激情婷婷| 激情综合自拍五月婷婷色五月| 超碰碰碰碰| 91热在线| 综合网天天| 丁香婷婷精品视频| 色综合天天| 婷婷五月天国产手机在线视频观看| 中文av网| 无码G高清天| 97在线观视频免费观看| 久香草视频在线观看| 99色热综合| 夜夜撸天天操| 色综合视频| 色婷婷免费观看| 亚洲婷婷视频| 婷婷97狠狠成人网站| 五月婷婷五月天天| 色婷婷av综合网| 久久精品视频在这里有| 婷婷五月天久久综合88| www.99热在线观看| 婷婷五月丁香综合亚洲| 538在线精品| 久久这里有精品在线观看| 在线日本www| www婷婷| 久久婷婷五月天懂色| 天天天天操| 婷婷五月天手机版视频| 九九在线91| 激情99| 激情五月图| 九久久九精品视频| 久久丁香五月天| 中文字幕在线免费观看视频| 婷婷99| 337午夜福利| 人妻aV在线| 久久香蕉网| 色婷婷色婷婷五月| 97视频91| 日本色色影片| 九色无码| 日日干夜夜撸夜夜骑| 9在线9在线婷婷在线国产| 超碰免费99| 人人人人人人人人人草| 超级97碰碰| 色色色色网| 99热这里只有精品最新| 人人妻人人澡| 五月激情四射网站| 五月天激情图片| 噜噜噜噜在线| 色色五月天丁香| 色婷青青| 直接看的AV| 色婷视频| 五月丁香六月婷婷,婷| 另类图片五月天婷婷| 亚洲操B| 丁香久久| 久草五月天电影网| 色婷婷久久天天性爱| 色爆五月| 色五月婷婷五月| 天天舔天天操| 色天天综合色| 久久综合爱| 五月色丁香婷婷综合| 伊人久久婷婷| 99日本黄站| 深情五月天| WWW.桔色成人.COM入口| 99热新网址| 日韩久久日| 国产FREESEXVIDEOS性中国| 99视频九九热| 色狠狠色噜噜AV天堂五区消防| 五月丁香网av| 翔田千里 50岁 无码| 丁香深五月婷婷| 中文字幕无码人妻少妇免费视频| 亚洲最大在线| 亚洲操B| 狠狠色 综合色区| 亚洲网站在线鸭子av| 丁香六月激情四射| 久久五月情| 五月天操逼激情| 欧美大肥婆大肥BBBBB| 91 九色 熟女| 色玖玖导航| 五月激情婷婷在线| 一区二区三区四区无码| 噜色精品| 梁铮版《蜘蛛女侠》在线| 99热大香蕉| 婷婷五月激情的图片| www.9色色色| 久久视9精| 色色色五月天婷婷| 国产露脸150部国语对白| 五月开心久久| 可以看的av| 99热在这里只有精品| 玖玖99免费视频| 五月天激情国产综合婷婷婷| 伊人五月天在线| 天天爽天天摸| 精品A√| 日本颜色视频人人爱| 色性五月天| 免费视频这里只有精品| 婷婷五月精品中文字幕| 婷婷之六月丁香| 五月天婷婷色播在线网| 亚洲综合色丁香五月天| 亚洲成人电影aaaa| 开心五月婷婷在线视频免费观看| 五月色导航| 天天 青草 丝袜制服 在线| 日本色婷婷五月天成人电影| 激情五月天之六月婷婷| 欧美视频在线观看噜噜| 九九热精品6| 丁香六月婷婷综合欧美| 丁香五月婷婷AV在线| 五月花婷婷| 丁香花五月天激情| 综合五月婷婷| 成人国产欧美大片一区| 9|人妻人人操| 日韩大片艹艹| 91色综合网| 99久久99视频只有精品| 色五月aV| 天天做天天爱综合| 婷婷综合一二三| 色欲天天综合网| 色一情一乱一乱一区91Av| 99在线精品免费视频| www.99riav99| 国产精品国产| 九九人妻福利| 六月五月婷婷| 九月色婷婷综合| www.五月.com| 黄急一级视频| a在线免费v| 亚洲午夜精品久久久久久人妖| 538久久| 怡红院一二三| 亚洲中文字幕av| 夜夜爽77777妓女免费下载| 亚洲色99综合天堂| 99干视频| 五月天婷婷色播| 五月色综合网| 五月天成人综合| 蜜臀综合久草| 五月色婷婷中文字幕| 天天做天天爰天天爽天天无遮挡| 丁香五月亚洲| 狠狠干天天日| 亚洲影院婷婷色| 天天色天天搡| 婷婷色爱| 婷婷丁香成人| 色婷婷啪啪| 六月丁香啪| 五月天激情婷婷久久| 久久九九色| 日本全黄一级999| 伊人丁香六月婷婷| 99热久| 无码少妇高潮喷水A片免费| 欧美日韩中国| 婷婷五月天xxx| 任你日视频| 婷婷亚洲在线| 六月亚洲婷婷6月中文字幕| 欧美丁香婷婷五月天| 综合久久婷婷| 无码髙清| www.亚洲激情| 99热| 五月婷精品| 亚洲综合色棒| 99综合网| 日韩成人网址| 激情五月天婷婷在线网址发给我| 天堂无码人妻精品AV一区| 99热碰碰热| 五月播播| www.色五月| 精热在线综合网| 五月婷婷|欧美| 五月天婷婷狂暴白浆| WWW·天天操·视频?| 97婷婷丁香| 日韩一级淫乱片一区二区三区| Xx色综合| 色五月琪琪| 色婷婷文字幕| 激情婷婷综合五月少妇| 大地9中文在线观看免费高清| 五月婷婷丁香综合| 天天日天天插| 久久色吧| 五月丁香花婷婷玉莉AV| 久久AAAA片一区二区| 俺也去在线久久精品23欧美综合视频网站,丰满人妻一区二区三区在线视频53,丰满 | 97色色色色| 99热9999| 婷婷久久性爱| 99爱在线免费视频| 超碰人人妻| site:feetmall.com| 99热精品在线观看| 夜夜涩涩涩| 欧美色五月| 天天射影| 五月天色区| 亚洲1区| 婷婷亚洲影院| 日本久热| 在线不卡视频| 欧美日韩成人在线| 91成人性爱视频| 激情五月天色色| 超碰91在线| 婷婷综合网站| 久久丁香五月天| 掩去也综合五月视频| 日日夜夜婷婷| 亚洲综合激情五月天婷婷| www夜夜| 五月激情丁香六月狠狠干| www久久99| 99re思思精品视频在线观看| 日韩婷婷| 丁香五月激情站| 婷婷婷婷婷婷婷婷婷婷丁香| 狠狠干伊人| 啪啪九九色| 五月丁香六月欧美综合网站| 丁香六月青青草| 伊人玖玖婷婷| 97色婷婷成人综合在线观看| 亚洲av骚货| 婷婷五月天伊人在线| .精品久久久麻豆国产精品| 婷婷综合网伊人| 五月丁香六月停停停| 五月激情小说网| av激情在线| 久月婷婷| 成人五月天在线视频在线观看| AV成人在线网站| 婷婷五月天激情诱惑| 久热69| 天天插天天插| 激情综合亚洲色婷婷五月| 免费在线a| A片一曲| 婷婷AV丁香| 97操碰人免费| 激情av在线| 亚洲综合视频天天精品| 91无码一起草| 久久99久久99精品免观看粉嫩| 这里只有精品视频视频在线观看| 日本熟妇乱妇熟色A片蜜桃| 丁香五月亚综合图片| 日本啪啪网| 嫩草AV久久伊人妇女超级A| 欧美日韩一区二区三区四区| 色狠狠色综合久久久绯色AⅤ影视| 五月激情站| 久久久久人妻中文| 日本欧美国产| 日韩成人无码| 五月激情天| 亚洲天堂亚洲色色色| 亚洲精品九九| 看片视频在线免费日产在线看| 丁香色五月婷婷91桃色| 五月丁香六月婷婷啪啪| 97精品人人A片免费看| 五月天激情视频| 午夜理论片最新午夜理论剧| 9久热在线视频| 99综合视频| 亚洲最大视频| 久久狠色噜噜狠狠狠狠97| 国产亚洲av片| 五月天激情婷婷| 六月激情网| 啪啪婷婷五月天激情| 激情五月天的婷婷| 亚洲视频综合网| 丁香五月综合婷婷| 久久思思热视频| 亚洲Va成人| 91性人人| 男同91| 超碰人妻在线| 婷婷色正月| 五月婷婷熟女| 狠狠色婷婷7777久| 2013AV天堂| 风流少妇A片一区二区蜜桃| 91丨九色丨熟女丰满| 这里只有精品视频在线看| 天天日日夜夜爽| av激情在线| 婷婷久久爱| 亚洲亚洲人成综合网络| 国产精品大香蕉| 五月丁香五月婷婷| 伍月婷婷六月丁香| 色色是色N一| 五月婷在线影院| 九九热99在线视频| 玖玖爱伊人网| 伊人激情AV一区二区三区| 97碰免费视频在线| 天天干天天爽| 一起草性爱不卡视频| 婷婷五月丁香基| 激情五月图| 大香蕉婷婷| 五月色婷婷影院| 77777亚洲午夜久久| www99精品日韩| 国产欧美性成人精品午夜 | 丁香五月激情五月| 色狠狠色综合久久久绯色aⅴ影视| 激情图片五月天| 91啪啪视频| 91大神操美女| 性热视频99精品| 久久激情五月| 亚洲国产99| 久久丁香五月| 看久久性爱99视频| 婷婷丁香五月在线播放| 久久婷婷五月综合啪| 99精品久久久久久久婷婷久久| 情欲综合网| 丁香五月骚喷水视频| 五月香蕉综合| 日本精品。999| 婷婷久久五月天亚洲欧美国产日韩在线观看 | 九九成人精品| RenRenSe在线视频网站| www.爱操com.| 精品九九视频| 99精品无码网站| 天天做综合网色综合| 色噜综| 五月天激情社区| 五月天综合图片| 丁香五月激情啪啪| 久久久天天啊| 超碰99资源站| 另类图片色五月| 婷婷五月天色| 色婷婷基地| 丰满少妇乱A片无码| 97碰碰九九视频| 成片免费观看大全| 亚洲顶级VA在线观看-高清完整版在线影院观看-S022AV | 亚洲美女裸体被操在线观看| 欧美综合激情五月丁香| 久这里只有精品99| 五月婷婷色综图片| 色综合网综合| 五月婷激情| 激情综合无码| 大香蕉五月天婷婷| 狠狠精品干练久久久无码中文字幕| 色五天综合| 丁香五月婷婷色偷偷| a九九热www| 五月激情丁香久久综合网| 99热这里有精品24| av中文网站| 五月婷婷六月丁香玖玖玫瑰91| 欧美色色色色色| 色色国产| 丁香婷婷久久综合在线| 96精品久久久久久久久| 秋霞电影一级黄| www开心激情网| 久久五月天色婷婷| 91丨九色丨大屁股| 九九99视频精品| 97人人看| 天天射综合网天天插| 天天天天干| 人人爱操| txt五月激情四射网综合俺也来了| 九九人人自拍| 99热香港| 真实亲子乱子伦高清在线观看| 五月丁香香蕉| 久久性爱网| 成人av观看| 亚洲五月丁| 日韩在线99| 中文字幕乱码亚洲精品一区| 色婷亚洲五月丁香| 五月丁香综合激情在线观看| 色五月婷婷丁香五月| 婷婷丁香人妻天天爽| 97操资源婷婷| 91碰碰| 丁香婷婷综合激情五月色| 五月婷婷黄色| 99在线视频观看| 九九综合九九| 日日夜夜狠狠干| 久久人妻视频| 久操人| 初夜av| 99精品久久| 婷婷六月天| caobi四区| 超碰二区| 1024在线视频| 丁香五月天婷婷久久综合| 9久久久久久久久久久| 91聚色综合网| 99热精品网| 成人网在线视频| 九色综合五月天婷五月| 五月综合激情久久| 五月天丁香成人| 大香焦A∨| 99小精品| 五月丁香婷婷综合久久| 婷婷激情五月天桃花网| 成人天天爽| 99热日韩| 伊人三级激情| 五月婷婷六月基地| 狠狠干综合| 五月天色色色| 五月丁香久人妻中文| 九九Y精品热播| 深爱开心五月天| 九九热在线视频| 97精品欧美91久久久久久久| 天天日本夜夜谢| 亚洲av电影在线| 色欲香综合网| 五月婷婷激情综合| 久久久精品AV| 99热只有| 五月天激情黄色网址| 五月丁香六月情婷婷久久| 97五月天| 97丁香花五月天激情小说| 久久久18| 久久五月网| 人人妻人人澡| 九九大香蕉黄色影院| 综合在线色婷婷| 97自拍视频网| 色婷婷综合网站| 久久九九Com| 五月天色裸体视频| 久久精彩视频18| 激情婷婷六月| 九九丁香社区欧美激情| 色五月婷婷丁香婷婷| 婷婷丁香社区| 天天综合天天做天天综合| 天天做天天爱天天高潮| 午夜理论片最新午夜理论剧| 综合色图区| 新99思思视频| 精品一二三区久久AAA片 | 丁香五月先锋| 天天操中文字幕| 久久9视频欧美| 九月丁香婷婷综合| 99热在线只有精品| 色色色视频免费无码| 久久精品99国产精品日本| 五月综合激情综合久|