色五月色开心色婷婷色丁香,五月婷婷丁香花综合网,婷婷丁香五月激情综合在线,五月婷婷六月丁香动漫,婷婷丁香五月激情综合在线,丁香花中文字幕在线观看,播五月色五月开心五月网,开心激情综合网,狠狠色丁香婷婷综合最新地址,丁香视频在线观看,狠狠做六月爱婷婷综合av,久久激情五月丁香伊人

ARTICLE DETAIL

資訊詳情

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

在線客服系統(tǒng)雙數據庫兼容實踐:MySQL與PostgreSQL適配全解析

在線客服系統(tǒng)雙數據庫兼容實踐:MySQL與PostgreSQL適配全解析 我的在線客服系統(tǒng)從第一版上線到現在跑了兩年多后端數據庫一直用的 MySQL 8.0業(yè)務上沒出過什么大問題。直到上個月簽了一個私有化部署的客戶對方既有技術棧統(tǒng)一是 PostgreSQL數據庫、備份策略、監(jiān)控體系全部圍繞 PG 搭建我?guī)缀鯖]有猶豫老老實實開始給客服系統(tǒng)增加 PostgreSQL 支持。這個改造過程比我想象中要復雜不少。雖然兩個庫都支持標準 SQL但真到了生產級適配數據類型、SQL 方言、事務模型、連接參數、備份恢復、索引策略幾乎每個環(huán)節(jié)都有差異。既然踩了一輪坑就把整個過程整理成一篇手記重點講清楚兩件事一是怎么讓在線客服系統(tǒng)同時跑在 MySQL 和 PostgreSQL 上二是這兩個數據庫在同樣的業(yè)務場景下到底差在哪里各自適合什么情況。無論你是獨立開發(fā)者、小團隊技術負責人還是正在做技術選型這篇內容應該都能給你一些參考。1. 項目背景為什么客服系統(tǒng)需要同時兼容 MySQL 與 PostgreSQL1.1 在線客服系統(tǒng)的數據模型與存儲需求先交代一下我這套在線客服系統(tǒng)的數據模型方便后面講差異的時候有具體的業(yè)務載體。核心表有這幾張會話表conversation保存每一次訪客和坐席之間的會話包含租戶 ID、訪客 ID、坐席 ID、狀態(tài)字段排隊中、接入中、已結束、渠道類型Web、小程序、App消息表message保存聊天內容字段包括會話 ID、發(fā)送方類型訪客/坐席/系統(tǒng)、消息內容、發(fā)送時間訪客表visitor記錄訪客信息和擴展屬性我用了一個 JSON 字段存諸如地區(qū)、來源頁面、設備信息等非結構化數據坐席表agent和操作日志表operation_log相對簡單以讀寫為主。這個業(yè)務場景有幾個比較鮮明的存儲特征消息表寫入非常頻繁屬于典型的持續(xù)追加型數據會話狀態(tài)會不斷更新排隊轉接入、接入轉結束、坐席改派運營后臺需要做大量歷史會話查詢和聚合統(tǒng)計客服經常要按關鍵詞搜索聊天記錄。用一句話總結就是高寫入、有更新、重查詢、需要全文檢索。這些特征在后續(xù)對比 MySQL 和 PostgreSQL 時會反復提到。1.2 獨立開發(fā)者的默認選擇MySQL大部分獨立開發(fā)者做項目的第一反應都是 MySQL我也不例外。理由很現實資料多、社區(qū)活躍、云上隨便都能買一個兼容實例出了問題搜索一下基本都能找到答案。MySQL 8.0 的 JSON 類型、窗口函數、CTE公共表表達式這些能力也已經補齊對于客服系統(tǒng)這個體量的應用來說功能上完全夠用。另一個關鍵點是運維成本。獨立開發(fā)者沒有專職 DBAMySQL 的默認配置相對“友善”InnoDB 引擎做了大量自適應工作redo log、buffer pool 這些機制基本不需要人工干預。相比之下PostgreSQL 的 autovacuum、checkpoint、WAL 歸檔這些概念初次接觸的人容易懵。所以早期選擇 MySQL 是一個非常典型的“確定性優(yōu)先”決策先把業(yè)務跑起來把精力放在功能迭代上。1.3 客戶環(huán)境倒逼PostgreSQL 的入場這次的私有化部署客戶點名要求 PostgreSQL原因也很簡單他們內部所有業(yè)務系統(tǒng)都在 PG 上已有的監(jiān)控平臺、備份腳本、權限體系都是圍繞 PG 做的不愿為新系統(tǒng)再引入一套 MySQL 運維鏈路。這其實是獨立開發(fā)者做 to B 業(yè)務時經常遇到的場景——技術選型不完全由你決定客戶現有的基礎設施就是約束條件。我沒有選擇直接遷移而是定了“雙數據庫兼容”的改造方向。理由是我現有的存量客戶還在 MySQL 上不可能逼他們切換新客戶要 PG就同時支持兩邊。這意味著代碼層面要抽象出數據庫無關的訪問方式SQL 層要做好方言隔離測試矩陣要從單庫變成雙庫。代價不小但收益也很實在后續(xù)再接任何客戶數據庫這一環(huán)就不會再成為商務談判的障礙。1.4 雙庫兼容的改造策略與成本評估改造前我先做了一個粗略的成本評估。我的系統(tǒng)是 Java Spring Boot MyBatis 技術棧MyBatis 本身不限制數據庫方言復雜的 SQL 寫在 XML 里因此適配思路分為兩層第一層是基礎設施適配包括多數據源配置、驅動切換、連接參數調整第二層是 SQL 方言適配涉及所有 XML 里的 SQL 語句逐條審計。這里要給獨立開發(fā)者一個非常直白的建議如果你正在做類似的雙庫兼容改造在項目早期就定好一條鐵律——所有新寫的 SQL 必須預先考慮雙庫兼容性不要等代碼寫完了再來一句一句改。另外能交給 ORM 框架處理的就不要手寫 SQL比如簡單的 CRUD 完全可以交給 MyBatis-Plus 或 Spring Data JPA 的自動方言適配去處理復雜報表和特殊查詢才需要手寫方言。我這次改造里大概有 70% 的 SQL 通過框架自動適配掉了剩下 30% 的高風險 SQL 全部重寫一遍。這個比例供你參考。2. PostgreSQL 與 MySQL 的核心差異動手前的必修課2.1 連接層與驅動JDBC URL、SSL 與連接池兩個庫在 Java 生態(tài)的連接方式非常接近但細節(jié)差異很磨人。MySQL 的驅動是com.mysql.cj.jdbc.DriverJDBC URL 長這樣jdbc:mysql://localhost:3306/kf_system?useUnicodetruecharacterEncodingutf8useSSLfalseserverTimezoneAsia/ShanghaiallowPublicKeyRetrievaltruePostgreSQL 的驅動是org.postgresql.DriverJDBC URL 則是jdbc:postgresql://localhost:5432/kf_system?sslmodedisable最容易踩坑的是 SSL 配置。MySQL 8.0 默認認證插件是caching_sha2_password如果不加allowPublicKeyRetrievaltrue某些 JDBC 版本在非 SSL 連接下會報錯而useSSLfalse和 PG 的sslmodedisable雖然看起來都是“關閉 SSL”但語義完全不同。MySQL 的 useSSL 主要決定客戶端是否使用 SSL 加密傳輸PG 的 sslmode 則是一個多級策略disable表示完全不加密prefer表示優(yōu)先加密但允許降級require表示強制加密但不驗證證書verify-ca和verify-full則要求校驗證書。生產環(huán)境我建議 MySQL 側開啟 SSL 并配置證書PG 側至少用require以上級別單純圖省事全關掉在公網環(huán)境是有風險的。連接池我用的是 HikariCP大部分參數兩個庫可以共用但有兩個地方需要注意。一是 PG 連接的maxLifetime建議設置得略短一些官方說明是 PostgreSQL 的連接空閑超時后會被服務端回收如果客戶端連接池的 maxLifetime 太長可能出現連接已被服務端關閉但客戶端仍在使用的情況我這邊 PG 數據源設置的maxLifetime是 150000ms15分鐘MySQL 則用默認的 1800000ms30分鐘。二是 validation query兩個庫都支持SELECT 1或SELECT 1;PG 驅動其實自帶連接校驗機制配置了也可以不配置也沒問題。2.2 數據類型自增主鍵、布爾、JSON 和時間這一塊是改造中改動量最大的部分兩種數據庫的數據類型映射差異直接決定了 DDL 怎么寫。先說自增主鍵。MySQL 是AUTO_INCREMENT建表時直接寫在字段定義里然后可以用LAST_INSERT_ID()拿到剛插入的 ID。PostgreSQL 有兩種做法傳統(tǒng)的是SERIAL/BIGSERIAL偽類型它底層會創(chuàng)建一個序列sequence新一點的是標準 SQL 的GENERATED ALWAYS AS IDENTITY本質上也是序列但更符合規(guī)范。兩個庫對應用層來說最大的區(qū)別在于MySQL 插入一條記錄后需要在同一條連接上執(zhí)行LAST_INSERT_ID()獲取 ID而 PG 可以在INSERT語句后面直接跟RETURNING id把主鍵帶出來更加干凈。布爾類型也是典型差異。MySQL 沒有原生的布爾類型習慣上用TINYINT(1)存 0 和 1PostgreSQL 提供真正的BOOLEAN類型接受true、false、1、0等輸入。這個差異會影響查詢參數的寫法比如 MyBatis 里傳一個 Boolean 類型的參數MySQL 分支需要做一下類型轉換否則有些驅動會把 true 變成字符串 true 導致 SQL 報錯。JSON 列是兩個數據庫差異最大、也最容易引發(fā)問題的地方。MySQL 8.0 的 JSON 類型是二進制存儲查詢用JSON_EXTRACT(json_col, $.key)或json_col-$.key提取字段去掉引號再用JSON_UNQUOTE()包裹。PostgreSQL 則區(qū)分json和jsonb兩種類型其中jsonb 是二進制格式推薦使用提取字段用json_col-key語法。兩個庫的 JSON 操作符長得完全不一樣后續(xù)我會講到具體改寫方案。時間類型的選型更值得重視。MySQL 常用的DATETIME不帶時區(qū)信息TIMESTAMP帶時區(qū)但范圍有限且受會話時區(qū)影響。PostgreSQL 里TIMESTAMP不帶時區(qū)和TIMESTAMPTZ帶時區(qū)語義區(qū)分非常嚴格。我的建議是客服系統(tǒng)所有時間字段統(tǒng)一存TIMESTAMPTZ/TIMESTAMP并在 JDBC URL 上明確指定時區(qū)應用層讀寫都按 UTC 處理展示時再轉本地時區(qū)。這樣能省掉后面報表統(tǒng)計差 8 小時一類的無妄之災。2.3 SQL 語法分頁、更新、UPSERT 與窗口函數如果只用最基礎的分頁查詢兩個數據庫的體驗幾乎一樣LIMIT ? OFFSET ?兩個庫都支持??又饕卦诩毠?jié)里。舉一個最常見的例子MySQL 存在LIMIT 20, 10這種“偏移量在前、行數在后”的舊寫法PostgreSQL 只認LIMIT 10 OFFSET 20。如果團隊里有人養(yǎng)成了 MySQL 的舊習慣適配時容易漏。另外兩個庫對NULL排序的默認行為也不同PostgreSQL 升序默認NULLS LASTMySQL 升序時NULL永遠排在最前面。如果你的業(yè)務邏輯依賴排空值順序一定要顯式寫ORDER BY col ASC NULLS LAST或等價寫法PG 直接用NULLS LAST關鍵字MySQL 則需要ORDER BY ISNULL(col), col ASC這種技巧。更新關聯表是另一個高發(fā)差異區(qū)。MySQL 支持UPDATE ... JOIN語法直接把兩張表關聯后更新而 PostgreSQL 沒有這個語法要用UPDATE ... FROM子句實現相同效果。這個差異在客服系統(tǒng)里特別常見典型場景是“把 VIP 訪客在排隊中的會話自動分配給某個坐席”我下面會給出兩邊完整寫法。UPSERT 的差異也要留意。MySQL 用INSERT ... ON DUPLICATE KEY UPDATEPostgreSQL 用INSERT ... ON CONFLICT (id) DO UPDATE SET ...。看起來實現效果差不多但 MySQL 的DUPLICATE KEY觸發(fā)條件是所有唯一索引沖突都算PG 的ON CONFLICT必須明確指定沖突的列或約束名。窗口函數方面MySQL 8.0 和 PostgreSQL 都支持ROW_NUMBER()、RANK()這些標準函數語法幾乎一樣。但如果你還維護著 MySQL 5.7 的存量客戶那窗口函數就用不了只能改用變量寫法或子查詢關聯復雜度直接上一個臺階。這算是我這次改造里最深刻的一條認知雙庫兼容的難度很多時候取決于你最低要兼容的 MySQL 版本。2.4 事務、MVCC 與鎖并發(fā)模型完全不同MySQL InnoDB 和 PostgreSQL 都基于 MVCC 實現多版本并發(fā)控制但內部機制差異非常大。MySQL 的 MVCC 建立在 undo log 上舊版本數據存在回滾段里新版本寫在原數據頁上所以更新操作時頁上只有一份數據加上回滾段里的舊版本。PostgreSQL 則是每個元組會保存多版本更新時產生一個新版本元組舊版本元組留在頁面里等待 VACUUM 清理。這個機制差異直接帶來一個影響PostgreSQL 在頻繁更新下會產生表膨脹bloat需要 autovacuum 持續(xù)工作MySQL InnoDB 沒有這個概念undo log 會被自動回收。客服系統(tǒng)的會話表恰恰是更新頻繁的代表每次坐席接入、結束會話都會觸發(fā) UPDATE因此 PG 側的表膨脹維護是我上線后重點關注的問題后面第 5 章會詳細說。隔離級別上MySQL 的默認級別是REPEATABLE READPostgreSQL 默認是READ COMMITTED。在客服系統(tǒng)中如果需要在同一個事務里多次查詢某個統(tǒng)計數字并期望結果一致PG 默認級別下第二次查詢可能看到新提交的數據需要把事務級別手動調成REPEATABLE READ或SERIALIZABLE。PG 的 SERIALIZABLE 實現是 SSI可串行化快照隔離沖突檢測能力很強適合對一致性要求較高的結算類場景。鎖行為差異也很明顯。MySQL InnoDB 在 REPEATABLE READ 下會使用間隙鎖gap lock防止幻讀高并發(fā)插入時鎖沖突概率比 PG 高容易出現死鎖。PG 的常規(guī)行鎖不會阻塞讀取寫不阻塞讀是其核心賣點之一。另外一個冷門但好用的特性是 PG 提供pg_advisory_lock咨詢鎖適合實現“同一訪客只能被一個坐席接入”這類分布式互斥需求比 MySQL 的GET_LOCK()更靈活。2.5 索引與擴展能力從 B-Tree 到 GIN 和 BRIN兩個數據庫默認索引都是 B-Tree基礎查詢場景差距不大。差距體現在高級索引類型上。MySQL 8.0 的索引體系相對集中B-Tree、空間索引、FULLTEXT全文索引。PostgreSQL 則是“瑞士軍刀”提供 GIN適合 JSONB、全文檢索、BRIN適合超大表按物理順序掃描、表達式索引直接對函數結果建索引、部分索引只索引滿足條件的行等一堆能力。表達式索引和部分索引在實際業(yè)務中特別有用。比如訪客表里存了用戶昵稱如果要按昵稱忽略大小寫搜索MySQL 只能先把昵稱轉成小寫存一列再建索引或者創(chuàng)建生成列PostgreSQL 則可以CREATE INDEX idx_visitor_name_lower ON visitor (LOWER(nickname))查詢時寫WHERE LOWER(nickname) ?就能命中索引。部分索引則可以只索引當前在線的會話減少索引體積。還有一點值得注意PostgreSQL 的 BRIN 索引非常適合消息表這種數據按時間順序插入、查詢通常限定時間范圍的場景。BRIN 索引體積只有 B-Tree 的幾十分之一在超大表上能顯著減少存儲開銷但它的掃描性能取決于數據的物理順序和相關性。如果消息表經常刪除舊數據導致物理順序混亂BRIN 的效果會打折扣需要配合定期CLUSTER維護。3. 客服系統(tǒng) PostgreSQL 適配實操從連接池到 SQL 改寫3.1 多數據源配置與驅動整合改造的第一步是把應用改成多數據源結構開發(fā)環(huán)境同時連接 MySQL 和 PostgreSQL方便隨時切換驗證。我用的是 Spring Boot 的DataSourceBuilder動態(tài)創(chuàng)建兩個數據源然后在一個通用查詢方法里根據一個dbType枚舉路由到不同連接。這里不展開 Spring 多數據源的完整實現只給一個最小配置示例spring: datasource: mysql: jdbc-url: jdbc:mysql://localhost:3306/kf_system?useUnicodetruecharacterEncodingutf8useSSLfalseserverTimezoneAsia/ShanghaiallowPublicKeyRetrievaltrue driver-class-name: com.mysql.cj.jdbc.Driver username: kf_user password: xxxxxx postgresql: jdbc-url: jdbc:postgresql://localhost:5432/kf_system?sslmodedisable driver-class-name: org.postgresql.Driver username: kf_user password: xxxxxx關鍵點在于兩個數據源對應的實體 Bean 必須設置Primary標記否則 Spring 在自動注入時會因為存在多個 DataSource Bean 而報錯。另外連接池參數別只配一份兩種數據庫的推薦值是有差異的簡單復制配置容易埋坑。3.2 核心表結構改造DDL 對比直接看我改造后的兩張核心表 DDL 對比。MySQL 版本CREATE TABLE conversation ( id BIGINT NOT NULL AUTO_INCREMENT COMMENT 會話ID, tenant_id BIGINT NOT NULL DEFAULT 0, visitor_id BIGINT NOT NULL, agent_id BIGINT DEFAULT NULL, status TINYINT NOT NULL DEFAULT 0, channel VARCHAR(20) NOT NULL DEFAULT web, ext JSON DEFAULT NULL, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (id), KEY idx_tenant_status (tenant_id, status), KEY idx_visitor (visitor_id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4; CREATE TABLE message ( id BIGINT NOT NULL AUTO_INCREMENT, conversation_id BIGINT NOT NULL, sender_type TINYINT NOT NULL, content TEXT, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), KEY idx_conversation (conversation_id, created_at) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4;PostgreSQL 版本CREATE TABLE conversation ( id BIGSERIAL PRIMARY KEY, tenant_id BIGINT NOT NULL DEFAULT 0, visitor_id BIGINT NOT NULL, agent_id BIGINT, status SMALLINT NOT NULL DEFAULT 0, channel VARCHAR(20) NOT NULL DEFAULT web, ext JSONB DEFAULT NULL, created_at TIMESTAMPTZ NOT NULL DEFAULT now(), updated_at TIMESTAMPTZ NOT NULL DEFAULT now() ); CREATE INDEX idx_tenant_status ON conversation (tenant_id, status); CREATE INDEX idx_visitor ON conversation (visitor_id); CREATE TABLE message ( id BIGSERIAL PRIMARY KEY, conversation_id BIGINT NOT NULL, sender_type SMALLINT NOT NULL, content TEXT, created_at TIMESTAMPTZ NOT NULL DEFAULT now() ); CREATE INDEX idx_conversation ON message (conversation_id, created_at);這份對比能看出一堆有意思的差異。MySQL 建索引是寫在建表語句內部的PG 則通常分開寫CREATE INDEX語義上沒有本質區(qū)別但 MySQL 的索引名是表級命名空間PG 的索引名是模式級命名空間也就是說 PG 同一模式下所有索引名必須全局唯一。這個問題在小項目里不容易暴露一旦表多了索引名沖突會讓你抓狂。ON UPDATE CURRENT_TIMESTAMP是 MySQL 的一個語法糖PG 原生不支持需要寫觸發(fā)器或者完全在應用層賦值。我的處理方式是統(tǒng)一在應用層每次更新時顯式設置updated_at now()徹底拋棄數據庫自動更新反而讓行為更可控。自增主鍵BIGSERIAL在 PG 里只是方便真正的長期推薦是GENERATED ALWAYS AS IDENTITY因為 SERIAL 和普通 sequence 綁定后續(xù)做表結構遷移、序列重置時不如 IDENTITY 順手。不過這次為了和存量腳本保持風格統(tǒng)一我用的還是BIGSERIAL。3.3 關鍵業(yè)務 SQL 的方言適配下面挑幾個客服系統(tǒng)里最高頻的 SQL給出兩個數據庫的具體寫法。第一個是“把 VIP 訪客的排隊會話自動分配給某個坐席”的關聯更新。MySQLUPDATE conversation c JOIN visitor v ON v.id c.visitor_id SET c.agent_id 1001, c.status 1, c.updated_at NOW() WHERE v.vip_level 1 AND c.status 0;PostgreSQLUPDATE conversation c SET agent_id 1001, status 1, updated_at now() FROM visitor v WHERE v.id c.visitor_id AND v.vip_level 1 AND c.status 0;兩個寫法的語義類似但 PG 的FROM子句在復雜場景下功能更強可以在FROM里放子查詢、JOIN 多個表自由度更高。第二個是“每個會話取最新一條消息”的分組排序需求。MySQL 8.0 和 PG 都可以用窗口函數SELECT * FROM ( SELECT m.*, ROW_NUMBER() OVER (PARTITION BY conversation_id ORDER BY created_at DESC) AS rn FROM message m ) t WHERE rn 1;這個 SQL 在 MySQL 8.0 和 PG 完全通用但如果你的最小 MySQL 版本是 5.7就不得不換成變量寫法或者GROUP BY GROUP_CONCAT這類土辦法而且行為還未必一致。所以我在項目里強制要求如果某個 SQL 必須依賴 MySQL 8.0 才能寫簡潔版那就在代碼里按版本分支處理不要讓老版本 MySQL 硬扛新語法。第三個是所謂 UPSERT用于“坐席心跳狀態(tài)更新”。MySQLINSERT INTO agent_status (agent_id, status, updated_at) VALUES (1001, 1, NOW()) ON DUPLICATE KEY UPDATE status VALUES(status), updated_at NOW();MySQL 8.0.20 以后VALUES()函數已經被標記為過時官方建議改成行別名語法所以我實際生產里用的是新寫法INSERT INTO agent_status (agent_id, status, updated_at) VALUES (1001, 1, NOW()) AS new ON DUPLICATE KEY UPDATE status new.status, updated_at new.updated_at;PostgreSQL 對應的寫法是INSERT INTO agent_status (agent_id, status, updated_at) VALUES (1001, 1, now()) ON CONFLICT (agent_id) DO UPDATE SET status EXCLUDED.status, updated_at EXCLUDED.updated_at;注意 PG 的ON CONFLICT后面必須指定唯一的沖突列或約束否則語法報錯這一點比 MySQL 嚴格得多。3.4 全文檢索讓聊天記錄可以被搜索客服業(yè)務里幾乎必有“按關鍵詞搜索聊天記錄”的功能。這個需求在兩個數據庫上實現路徑差異巨大。MySQL 的 FULLTEXT 索引用法比較簡單中文場景建議使用ngram解析器ALTER TABLE message ADD FULLTEXT INDEX ft_content (content) WITH PARSER ngram; SELECT * FROM message WHERE MATCH(content) AGAINST(退款 IN BOOLEAN MODE) AND conversation_id 123;MySQL 的 ngram 分詞器內置了對中文的分詞支持雖然粒度比較粗但勝在開箱即用對絕大多數客服搜索場景足夠。PostgreSQL 的全文檢索體系更強大也更復雜。核心概念是tsvector文檔向量和tsquery查詢向量用操作符做匹配。但PG 默認沒有內置中文分詞器這是最大的坑。如果你直接用默認配置中文內容會被當作連續(xù)的一整段處理to_tsquery(退款)匹配不出任何結果。常用的解決方案有兩個一是安裝zhparser或pg_jieba擴展做中文分詞二是不夠裝擴展的時候用pg_trgm模塊配合 LIKE 查詢實現近似效果CREATE EXTENSION IF NOT EXISTS pg_trgm; CREATE INDEX idx_message_trgm ON message USING GIN (content gin_trgm_ops); SELECT * FROM message WHERE content LIKE %退款% AND conversation_id 123;pg_trgm對中文的處理是按每連續(xù)三個字符切分 trigram雖然語義理解不如真正的分詞器但做模糊搜索和關鍵詞匹配效果已經很能打。我的線上方案是能裝zhparser的客戶環(huán)境用全文檢索不能裝擴展的降級用pg_trgm兩邊給用戶的搜索體驗差異不大。這也算是我這次改造中比較深刻的體會在線客服系統(tǒng)的全文搜索MySQL 開箱即用PG 要額外付出分詞器選型和安裝的成本。如果你們的客戶環(huán)境卡得比較死不允許裝擴展那 PG 側的中文搜索體驗會明顯弱于 MySQL。3.5 存量數據遷移與校驗因為不是整體遷移而是新環(huán)境直連 PG我這邊沒有做全量歷史數據搬移只需要把存量客戶的 MySQL 數據導出備份再在 PG 上從零初始化。但如果你要把一套已經跑了好幾年、積累了大量歷史消息的系統(tǒng)從 MySQL 遷到 PostgreSQL推薦直接用pgloader這個工具。pgloader 一條命令就能把表結構和數據搬過去它內置類型映射規(guī)則會把 MySQL 的AUTO_INCREMENT轉成 PG 的BIGSERIALTINYINT轉成SMALLINTDATETIME轉成TIMESTAMP還能自動創(chuàng)建序列?;居梅╬gloader mysql://kf_user:passlocalhost/kf_system postgresql://kf_user:passlocalhost/kf_system遷移后有一個必須做的手動步驟因為BIGSERIAL的序列不會跟著顯式 ID 插入自動更新如果不修復接下來新插入的記錄可能直接主鍵沖突。手動把序列跳到當前最大值即可SELECT setval(conversation_id_seq, (SELECT max(id) FROM conversation));遷移后的校驗建議分三層做先比對表數量和行數是否一致再對每張表做關鍵維度聚合比對比如 count、max 時間、sum 某數值列最后隨機抽幾十條業(yè)務記錄逐一對比字段值。只比對行數是最容易通過的字段類型的隱式轉換造成的精度差異往往藏在明細數據里。4. 客服場景下的實測對比性能、運維與選型4.1 讀寫壓測消息寫入與會話查詢改造完成后我在同一臺 8 核 16G 的測試機上分別裝了 MySQL 8.0.36 和 PostgreSQL 16.2用同樣一套客服系統(tǒng)的讀寫腳本做壓力測試。壓測模型是這樣的模擬 200 個坐席在線1000 個訪客持續(xù)發(fā)消息每秒并發(fā)寫入約 500 條消息同時每 5 秒執(zhí)行一次“取每個會話最新消息”的列表查詢和“按訪客昵稱模糊搜索會話”的查詢。先說結論在 500 TPS 的寫入壓力下兩個數據庫的消息插入響應時間幾乎沒有明顯差距都在個位數毫秒級別。這說明對于客服系統(tǒng)這個量級瓶頸根本不在數據庫引擎本身而在應用層的連接管理、磁盤 IO 和網絡開銷。真正拉開差距的是兩類查詢一類是大范圍的聚合統(tǒng)計比如按小時統(tǒng)計 30 天內的消息量PG 的優(yōu)化器在一些復雜 JOIN 場景下估算更準執(zhí)行計劃更穩(wěn)定另一類是 JSON 字段的過濾查詢PG 的jsonb配合 GIN 索引比 MySQL 的 JSON 類型更順手索引命中率更高。但 MySQL 也不是全面落敗。在純并發(fā)插入混合少量更新的場景下MySQL InnoDB 的聚簇索引結構讓主鍵范圍掃描非常高效消息表按時間范圍拉取歷史記錄的查詢MySQL 的響應速度甚至略快于 PG。這種差異和存儲結構強相關InnoDB 是聚簇索引數據按主鍵物理存儲主鍵連續(xù)插入時順序 IO 效率高PG 的 heap 表結構下數據按插入順序堆存索引掃描后需要回表隨機 IO 占比更高。4.2 運維機制MVCC 清理、備份與監(jiān)控運維層面的差異獨立開發(fā)者感受最明顯。MySQL 的 InnoDB 引擎把 MVCC 舊版本放在 undo log 里自動管理用戶幾乎不需要干預purge線程會后臺清理。PostgreSQL 則不一樣每次 UPDATE 產生的新版本舊元組必須由VACUUM機制清理。雖然 PG 默認開著 autovacuum但在消息表這種寫入量大、更新頻繁的表上如果 VACUUM 跟不上產生速度表膨脹會越來越嚴重查詢性能直線下滑。我上線 PG 后遇到過一個問題會話表的膨脹率在兩周內從 1 倍漲到 3.5 倍統(tǒng)計 SQL 從 80 毫秒退化到 600 多毫秒。原因是我的會話狀態(tài)更新非常頻繁一個會話生命周期里要 UPDATE 好幾次舊版本堆積而 autovacuum 的閾值觸發(fā)不夠積極。解決辦法是把這張表的 autovacuum 參數調得更激進ALTER TABLE conversation SET (autovacuum_vacuum_scale_factor 0.05, autovacuum_vacuum_threshold 1000);同時定期手動執(zhí)行VACUUM (ANALYZE, VERBOSE) conversation;備份方面MySQL 的主流方案是mysqldump邏輯備份加上 binlog 增量PostgreSQL 則常用pg_dump邏輯備份配合pg_basebackup物理備份和 WAL 歸檔。兩者能力對等但命令參數和恢復流程完全不同運維腳本要分別維護。監(jiān)控方面MySQL 用SHOW ENGINE INNODB STATUS、performance_schemaPG 用pg_stat_activity、pg_stat_user_tables、pg_locks等系統(tǒng)視圖兩者監(jiān)控維度都很全但長期運維你需要兩套監(jiān)控看板。還有 checkpoint 這個要點。PG 的 checkpoint 負責把 WAL 日志中已提交的事務刷到數據文件里checkpoint_timeout和max_wal_size的配置會影響崩潰恢復時間MySQL 的 redo log 是循環(huán)寫入自動管理用戶基本不用管。對于獨立開發(fā)者來說這就是“省心”和“可控”之間的權衡。4.3 功能與生態(tài)對比速查表我把這次改造中實際對比過的維度整理成一張速查表方便你直接拿來參考。對比維度MySQL 8.0PostgreSQL 16默認隔離級別REPEATABLE READREAD COMMITTED自增主鍵AUTO_INCREMENTSERIAL / IDENTITY SEQUENCE布爾類型TINYINT(1)BOOLEANJSON 類型JSON無 jsonb 概念json / jsonb中文全文檢索FULLTEXT ngram 開箱即用需裝 zhparser / pg_jieba或用 pg_trgm復雜 JOIN 優(yōu)化8.0 優(yōu)化器升級明顯基因算法 并行查詢更強UPDATE 關聯UPDATE ... JOINUPDATE ... FROMUPSERTON DUPLICATE KEY UPDATEON CONFLICT ... DO UPDATE分組取每組最新窗口函數或走變量窗口函數表達式/部分索引不直接支持原生支持表膨脹維護無undo 自動回收需要 autovacuum / vacuum 手工干預備份工具mysqldump / binlogpg_dump / pg_basebackup / WAL 歸檔并發(fā)寫入鎖沖突RR 下間隙鎖較多行鎖不阻塞讀沖突更少適合場景通用 CRUD、中小型業(yè)務、團隊熟悉 MySQL復雜查詢、JSON/全文檢索、強一致性要求4.4 到底該選哪一個經過這次改造和實測我自己的判斷是不要帶任何品牌感情去選型邊界條件決定結果。如果你的在線客服系統(tǒng)是標準 SaaS 形態(tài)自己控制運行環(huán)境團隊對 MySQL 熟悉業(yè)務查詢以 CRUD 為主報表復雜度有限那么 MySQL 8.0 會是非常省心的選擇。它開箱即用、運維壓力小、中文全文檢索體驗好而且云廠商生態(tài)最成熟。反過來如果客戶環(huán)境強制 PG或者你的業(yè)務對 JSON 數據建模、復雜聚合統(tǒng)計、地理空間查詢這類能力有強需求同時團隊愿意投入精力學習 PG 的 VACUUM、WAL、并發(fā)模型這些運維知識那么 PostgreSQL 16 能給你更長期的功能成長空間。我個人的態(tài)度是“誰都能跑但你要知道它在為什么場景最優(yōu)”。雙庫兼容本身不復雜復雜的是把兩邊的運維差異和 SQL 方言都測試到位。5. 排坑實錄那些文檔里查不到的問題5.1 大小寫敏感導致的“幽靈丟數據”上線第一周客戶反饋“訪客昵稱搜索經常漏人”。我查了很久最后定位到是排序規(guī)則差異MySQL 的默認排序規(guī)則utf8mb4 下通常是 utf8mb4_general_ci 或 utf8mb4_0900_ai_ci大小寫不敏感WHERE nickname ABc能匹配abcPostgreSQL 默認的排序規(guī)則是大小寫敏感的ABc和abc是兩個完全不同的字符串。看起來是個小問題但會在搜索、去重、登錄校驗等各種環(huán)節(jié)悄無聲息地出現。解決方案是在 PG 側安裝citext擴展讓某個列在比較時忽略大小寫CREATE EXTENSION IF NOT EXISTS citext; ALTER TABLE visitor ALTER COLUMN nickname TYPE citext;也可以不加擴展、保持原始列類型但在查詢條件里統(tǒng)一寫LOWER(nickname) LOWER(?)并配合第 2.5 節(jié)說的表達式索引。建議業(yè)務早期就定好統(tǒng)一規(guī)則不要等線上出了數據問題再回頭補。5.2 JSON 字段查詢語法與索引的坑MySQL 的JSON_EXTRACT(ext, $.city)和 PG 的ext-city語法不一致這是繞不開的。更隱蔽的是索引問題MySQL 雖然支持對 JSON 列建多值索引和生成列索引但操作符匹配路徑有限PG 則可以對jsonb直接建 GIN 索引然后使用操作符做包含判斷CREATE INDEX idx_visitor_ext ON visitor USING GIN (ext); SELECT * FROM visitor WHERE ext {city: 上海};這個查詢能走索引性能非常好。但注意 PG 里ext-city 上海這種寫法通常不會命中 GIN 索引要走 B-Tree 表達式索引或接受全表掃描。我一開始沒搞清楚這一點壓測時發(fā)現走了Seq Scan數據量一大就慢了。所以 JSON 查詢不要只看語法對不對要結合 EXPLAIN ANALYZE 確認索引有沒有用上。5.3 時區(qū)與 TIMESTAMPTZ客服報表差八小時報表統(tǒng)計顯示“會話量少了一半”排查發(fā)現是時區(qū)問題。測試時直接往 PG 庫插數據應用連接沒有指定時區(qū)數據庫now()存的是 UTC報表查詢用date_trunc(hour, created_at AT TIME ZONE Asia/Shanghai)才能得到北京時間的小時分組。而 MySQL 側因為serverTimezoneAsia/Shanghai配在 JDBC URL 里行為始終一致。這個問題的根源在于MySQL 的時間行為更依賴于連接參數PG 的時間行為更依賴于數據庫會話配置兩邊沒有一個統(tǒng)一的“標準答案”。我的處理是應用層統(tǒng)一用Instant或帶時區(qū)的OffsetDateTime存時間數據庫層 PG 全用TIMESTAMPTZMySQL 全用DATETIME并確保 JDBC 時區(qū)和服務器時區(qū)一致報表查詢一律顯式轉換時區(qū)。5.4 SSL 連接報錯與 MySQL socket 問題第 2.1 節(jié)已經講過useSSLfalse和sslmodedisable的語義區(qū)別這里補充一個真實報錯場景。有一天新同事的本地環(huán)境連 MySQL 一直報ERROR 2002 (HY000): Cant connect to local MySQL server through socket /tmp/mysql.sock排查發(fā)現是他本機 MySQL 服務沒有啟動而客戶端默認走 Unix socket 而不是 TCP。解決辦法是確保 MySQL 服務啟動或者連接時強制走 TCPmysql -h 127.0.0.1 -P 3306 -u kf_user -p。PG 側類似的坑是 JDBC 驅動版本和服務器版本差異。PG 的 JDBC 驅動對sslmodeprefer的處理在歷史上有些微妙變化如果服務器不支持 SSL 而驅動又強行要 SSL會報一個看起來像“連接被重置”的錯誤排查半天才發(fā)現是 SSL 握手失敗。我的建議是本地開發(fā)和內網環(huán)境直接顯式sslmodedisable不要依賴默認值。5.5 自增序列錯亂與數據遷移這個坑在 3.5 節(jié)已經提過數據導入后不重置序列新插入記錄直接主鍵沖突。這里補充一個更隱蔽的場景即使沒有做數據遷移只要有人在 PG 里手動插入過顯式 ID 的行比如管理員手工補數據序列同樣不會自動更新。和 MySQL 的AUTO_INCREMENT在插入大號 ID 后會自動修正的行為不同PG 的序列是“事不關己”的必須手動同步。一個通用修復腳本SELECT setval( pg_get_serial_sequence(conversation, id), (SELECT max(id) FROM conversation) );建議在每次手工導入數據后都跑一遍并且把它寫進部署手冊防止下次忘記。5.6 表膨脹、VACUUM 與性能劣化4.2 節(jié)講了膨脹率的問題這里給出一個量化判斷方法。檢查表的膨脹情況SELECT relname, n_live_tup, n_dead_tup, CASE WHEN n_live_tup 0 THEN round(n_dead_tup * 100.0 / n_live_tup, 1) END AS dead_pct FROM pg_stat_user_tables WHERE relname IN (conversation, message);當dead_pct長期超過 20% 時就該重點處理了。除了調高這張表的 autovacuum 頻率還可以在業(yè)務低峰期執(zhí)行VACUUM FULL回收物理空間。注意VACUUM FULL會持有表級鎖如果在線客服系統(tǒng)是 7x24 小時運行的要慎重安排窗口或者干脆不用它只做普通 VACUUM 讓 autovacuum 持續(xù)工作。還有一個容易忽略的點checkpoint_timeout和max_wal_size的配置直接影響 WAL 刷盤頻率和恢復時間如果 WAL 頻繁觸發(fā) checkpoint磁盤 IO 會被拖累表現為整體響應變慢。我的測試環(huán)境里把max_wal_size調大到 2GB、checkpoint_timeout保持默認 5 分鐘寫峰值下 IO 平穩(wěn)了很多。5.7 死鎖與鎖等待排查雙庫兼容后死鎖排查思路完全不同。MySQL 側排查死鎖SHOW ENGINE INNODB STATUS;重點看LATEST DETECTED DEADLOCK段落它會打印出兩個事務各自的 SQL 和鎖住的記錄。PG 側沒有直接打印死鎖詳情的命令需要結合系統(tǒng)視圖SELECT pid, state, wait_event_type, wait_event, query FROM pg_stat_activity WHERE wait_event_type Lock; SELECT * FROM pg_locks WHERE NOT granted;PG 的死鎖信息會寫到數據庫日志里log_lock_waits on參數開啟后可以在日志中看到鎖等待超過閾值的會話。建議從一開始就把log_lock_waits和deadlock_timeout配置到合理值比如deadlock_timeout 2s否則鎖問題排查全靠猜。5.8 問題速查表癥狀MySQL 排查方向PostgreSQL 排查方向連不上數據庫服務是否啟動、socket 路徑、useSSL 配置服務是否啟動、sslmode 配置、驅動版本中文搜索查不到FULLTEXT 索引是否用 ngram是否安裝中文分詞擴展 / pg_trgm 是否生效時間統(tǒng)計差幾小時JDBC serverTimezone 是否一致是否使用 TIMESTAMPTZ、查詢是否顯式轉換時區(qū)字符串匹配漏數據排序規(guī)則是否大小寫不敏感是否受默認大小寫敏感影響需 citext插入主鍵沖突較少見AUTO_INCREMENT 自動修正序列未 setval需要手動修復表越來越大查詢變慢InnoDB 自動管理關注慢查詢日志n_dead_tup 偏高檢查 autovacuum死鎖SHOW ENGINE INNODB STATUSpg_stat_activity pg_locks 數據庫日志關聯更新報錯UPDATE ... JOIN 語法 OK需要改寫為 UPDATE ... FROM6. 改造完成后的幾點體會6.1 雙庫兼容的隱性成本遠超預期這次改造最深的感受是讓一套系統(tǒng)同時跑兩個數據庫真正的成本不在寫代碼而在持續(xù)測試和運維。SQL 改寫是有限的工作量改完就完了但每個版本迭代都要在兩個數據庫上回歸測試每個客戶環(huán)境可能需要兩套不同的備份、監(jiān)控和調優(yōu)方案這些才是長期成本。如果你只是為了“多支持一個數據庫”而支持沒有實際客戶需求在背后驅動我不會建議你去做。另一個容易被低估的點是團隊認知成本。你的代碼里會到處出現dbType判斷同事每次寫一條新 SQL 都要想“這個語法兩個庫都支持嗎”這個思考負擔會持續(xù)消耗生產力。我的緩解辦法是寫了一份內部 SQL 編寫規(guī)范明確列出哪些語法不允許直接使用比如 MySQL 的LIMIT offset, count、PG 的NULLS FIRST如果要對齊兩邊就得繞開哪些場景必須走方言分支。規(guī)范雖然不能消除全部成本但至少讓團隊有據可依。6.2 給獨立開發(fā)者的一句話經驗如果你也是獨立開發(fā)、正在做在線客服類產品或任何數據密集型業(yè)務我最后想分享幾條實際經驗第一數據庫選型要跟著客戶和場景走不要有“個人偏好”這種情緒。MySQL 很親切PG 很強大但沒有一個數據庫能覆蓋所有場景能用基礎設施約束直接解決商務問題才是最重要的。第二如果你預感到未來可能會適配 PG那從第一天開始就盡量少寫方言特性。能用LIMIT ? OFFSET ?就用這個能用標準 SQL 窗口函數就不要碰 MySQL 特有的GROUP_CONCAT替代方案。寫 SQL 時多問自己一句“這條語句換一個數據庫還成立嗎”后面返工最少。第三工具的差異值得擁抱。PG 的pg_stat_activity、pg_locks、EXPLAIN 的豐富程度確實比 MySQL 更細反過來 MySQL 的SHOW ENGINE INNODB STATUS在很多死鎖場景又比 PG 直觀。兩套工具都學會不虧。改造完成到現在已經跑了一個多月線上 PG 和 MySQL 兩邊都穩(wěn)定運行。最后再分享一個小技巧雙庫兼容的項目一定要在自動化測試里同時跑兩個數據源的用例。我最初只在 MySQL 數據源上跑單測結果上 PG 環(huán)境后一連暴露了好幾個只有 SQL 方言差異才會觸發(fā)的 bug。把兩個數據源納入 CI 之后這類問題基本絕跡了。數據庫沒有絕對的好壞能讓業(yè)務高效跑起來、團隊維護得起、客戶接受得了那這個選擇就是對的。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
艾草av| 亚洲狼狼干综合1| 欧美日韩小说| 一直超碰| 午夜AV污污污| 高跟伊人julia ann| 欧美日韩人妻少妇 一区二区三区| 国产女人成人精品视频| 国产成人久久久精品免费AV| 日韩成人精品| 啊啊啊爽爽| 亚州欧美总和| 加勒比伊人影院| 啊啊啊好湿久久| 99天堂网| 婷婷综合在线| 操91| 亚洲精品久久久久久久蜜桃臀| 日本成人在线不卡一区二区三区| 麻豆天美91| 亚洲色图欧美色18直播在线| 麻豆色约约| 久草婷婷| 1024午夜激情男人的天堂| 精品国产一区二区三区久久久蜜臀| 五月天婷婷色| 一区二区 韩日AV| 精品性爱无码在线播放| 久久久精品视频免费观看| 黄色香蕉视频网站一区| 日韩Va亚洲va欧美Ⅴa久久| 亚洲美女AV无码| 99热这里只有精品18| 在线观看啊啊啊啊啊| 97超碰免费生活| 久久少妇视频| 天堂涩涩| 欧美综合自拍亚洲综合图| 91精品免费| 天天看高清麻豆| 级品肉射| 黄站在线免费观看| 97国产精品一区二区传媒公司| 91色射| 天天综合欧美黑人| 日韩国产精品人妻无码久久久| 91久久久久久久久18| 中文字幕第2页| 久久东京热久久| 在线观看一卡二卡| 国产伦精品免编号公布| 青青草在线成人视频| 精品人妻夜夜草| 亚洲人妻熟妇三十三区| 九九九影院| 中文字幕天天操| 国产一区二区三区,在线观看观看| 欧洲亚洲人妻无码中字久久三区四区| 夜夜 中文视频rt| 99久久网站| 在线岛| 中国一级操逼视频| 91碰碰| 亚洲国产精品乱码在线观看| 午夜精品久久久久久久99热影院| 精久久久| 国产亚洲精品无码三区| 午夜男人一级A片7777| 五月天啪啪| 亚洲人在线成线成人| 亚洲少妇在线影音| www国产精品| 精品人体无圣光凹凸| 丁香九月激情啪| 久久久久国产亚洲一区欧美色图日韩| 欲香欲色天天天综合和网| 国产熟码AV| 青青草好吊色| 国产成人手机视频激情| 国产免费大片| 99re国产中文字幕| 人妻天天爽夜夜爽爽| 亚州综合AⅤ| 婷婷三区| 欧美日韩大陆黑人少妇99| 操淫穴亚洲五月丁香 | 日本亚洲熟女视频| 欧美综合色站| 欧美成人一级麻豆| 亚州国产精品乱| 青青草色插素人| 天堂性色| 亚洲精品视频在线播放| 久久人爽| 亚洲精品aa久久伊人| 殴美日韩m| 怡春院久久| 东北丰满熟女国产一区| 91nbbbbbb| 中文字幕精品码亚洲| 亚欧视频在线| 久热网| 黄色激情电影在线观看| 成人久久精品| 中文字幕精品一区欧美| 精品视频久久区| 日韩操逼HD| 一区二区三区网站日日骚| 日本媚薬中文字幕在线| 国产精品久久久鸭无码的功能| 国模不卡一本二本三电影| 91色色网站| 丁香六月婷婷综合| 久久精品无码一区二区三区| 亚洲熟妇自偷自拍另欧美| 亚洲中文sv| 亚洲午夜福利在线影院| 久久华人网| 精品中文字幕第一页| 欧美老妇综合网| 国产三级在线现体验区| 熟女高潮合集-永久久久-成人AV | 天天爽天天干| yiqicaoav| 日本二三四区| 91久久精品国产| 久热精品在线| www.狠狠操| 亚洲中文字幕熟女少妇一区二区| 久久97| 中国和日本人色哪个不下载能放| 91在线视频免费中出| 久久久999| 暖暖精品二区三区观看| 日韩中文字幕视频| 日本高清一本二本免费不卡| 五月丁香| 国产在线视频午夜精华在| 九九精品美女高溯喷水| 黄aaaaaaaaaaaaaaaaaa色网站| 婷婷久草| 人妻久久久久久久久久久久久久久| 国产超碰97| 五月丁香啪啪网| 久午视频| 日韩av色图综合| 日本午夜操逼| 欧美性91| 久久精品99久久久久久| 人妻人人操| 在线视频免费观看午夜| 欧美性综合| 久操大香蕉手机视频在线看| 国产精品久久久久久久AV大片| 国产妇女精品视频青青草| 中文字幕成人理论在线| 很很操在线| 操死我了啊啊啊| 日本免费中文一区二区三区四区| 国产精品亚洲高清在线| 蜜臀99久久精品久久久久| 日韩人妻网站| 台湾肥佬网一区二区三区| 美女主播色欲91抠b在线播放| 91天天日| 怡红院久久老司机| 人人妻人射| 九九九九一区| 久久久婷婷| 国产欧美日韩在线不卡第一页| 欧美激情视频一区二区| WWW美腿丝袜香蕉中文| 国产精品一二三免费网站| 国产又色又粗又黄又爽| 一摸二插三插| 麻豆精品三区视频| 裸模AV女优| 伊人99热| 亚洲av淫乱| 欧美激情视频在线一区| 日日摸天天爽夜夜欢| 天堂伊人久久| 高清不卡国产| 色色五月丁香| 国产视频不卡在线观看| 日韩精品在线放| 激情在线青青操| 亚洲淫色网中文| 江都AV在线| 熟女精品一区二区三区| 九九综合久久| 黄色视频特级毛片| 亚洲人妻中文高清| 天天干天天狼在线视频| 一本一道波多野毛片中文在线| 久久伊人最新网址视频| 人妻铁牛TV| 青青草这里只有精品| 超碰在97| 职场同事知名国产国产精品久久欧美日韩| 欧美狠狠鲁| 嗯嗯啊啊操死我| 综合色图亚洲欧美| 中文字幕丝袜人妻| 国产精品久久久久久久久久久久久久久久久久 | 天天干天天狼在线视频| 中文字幕 国产 精品| 日本一区二区三区四区免费观看| 99久久e免费热视| 岛国毛片在线观看免费| 无码av永久免费专区网站| 欧美精品一区二区少妇免费A片| 国产精品美女久久久久久网站| 日韩有码中文字幕女同性恋| 操东北女人| 丰满人妻一区二区三区四区| 久久久人妻| 亚洲中字幕日本一区二区三区| 天天cao在线| 欧美美女视频| 国产精品毛片?v一区二区三区 | 日韩精品在线观看网站| 久久人人爽人人爽人人片Ⅴ| 久99久视频| 婷婷五月天_亚洲小说欧美激情另类_精品久久国产字幕 | 国产一区二区三区影片| 亚洲综合另类| 秋霞男人网| 97久久免费| 青青草一区二区三区四| 91色香| 亚洲av国产av综合av卡| 无码自拍SM| 农村妇女一级二级三级视频| 日韩中字av一区| 国产天美传媒精品| 欧美色97| a一区二区三区乱码在线| 日韩探花精品在线视频| 综合色图亚洲欧美| 亚洲精品1区| 美女91网址 | 99热99在线| 少妇被玩视频二三区| 福利天堂| 亚洲精品久久久久久久蜜桃臀| 亚洲欧洲日本精品中文a∨| 97人妻免费中文字幕| 日日夜夜摸| 久久一级无码精品毛片6| 夜夜骑夜夜操| 丁香五月综合| 亚洲吊色| 日韩有码 一区二区三区| 白天啪啪晚上啪啪视频| 99热精品免费| 岛国999| 热99这里有精品综合久久 | 成人精品久久| 国产又黄又粗的视频| 天天天天天干夜夜夜夜夜操| 淫骚熟女一区二区三区| 97免费在线视频| 秋霞蝌科网日本一区| 中美日韩毛片| 亚洲综合97| 国产精品香蕉热久久新品| 国色天香av| 亚洲第二页| 曰韩操B| 精品网站9999| 亚洲天堂精品日韩电影| 久久精品人体| 亚州综合色| 99操逼| 超碰无码五月97| 国产1024在线播放| 久无码| 91成人久久| 区一在线观看| 精品78| 99精品无码| 熟女久久久| 精品高清一区二区三区三州| 欧美日韩黄色片一区二区三区四区人与兽做爱 | 亚洲精品天天影视综合网 | 2019午夜福利视频| 久久精品国产亚洲AV嘿嘿| 久久一区,青青青青草视频在线播放| 精品传媒在线一区| 久久综合久久综合人久久夜精品| 欧美精品成人一区二区在线观看 | 国产精品69久久久久久久| 日本欧美韩国国产在线| 欧美少妇性乱| 日本欧美一区二区三区免费| 亚洲色丰满少妇高潮| 人人贴人人摸| 91碰碰| 六月婷婷综合| 在线视频资源| 台欧久久精品视频| 波多野42部无码喷潮在线观看| 78p欧美| 人妻一区二区三区视频| 欧美色图91p| 亚洲色图亚洲无码强奸乱伦| 东京热,男人的天堂| 久久久999国产精品| 强奸乱伦日韩AV| 精品在线78| 精品人人| 乱伦图av| 蜜臀99久久精品久久久久久| 国产人妻精品久久久一区二区三区 | 精品亚洲国产成人av网站| 欧美人人天天网| 亚洲一区二区性爱电影| 久久久久国产精品久久久| 亚州操操穴网| 亚洲精品天堂久久A∨51成人漫| 欧美性视频二区三区| 97人人超| 日本一区视频在线观看| 中国韩国明星一极片一区乱码毛片人妻熟女一区二区三区 | 亚洲日韩国产精品| 日噜夜夜夜夜夜夜夜夜夜夜爽爽爽爽爽爽爽爽爽爽爽爽 | 日欧亚洲二三区大片不卡| 九九免费影片| 蜜臀精品1区2区| 亚洲高清国产理伦片| 色原狠狠天天天| 色婷婷成人综合| 日韩性爱免费视频在线网站| 人妻欧美| 久久超碰av在线| 人妻啊啊人妻啊| 日韩熟女乱伦中出| 大肥女高潮bbwbbwhd视频| 99re6国产精品99re| 丁香五月成人| 强奸乱伦大香蕉网| 1级黄色夫妻对换性交免费看| 伊人欧美大香蕉视频| 人妻天天爽夜夜爽精品2| 粉嫩粉嫩一区性色AV片| 日韩性爱一级片| 国产精品午夜精品| 97公开久久| 久久这里都是精品| 亚洲熟女中文字幕在线| 在线岛| 久久久久亚洲Av无码专区老牛影视| 久久骚| 99re在线观看| 国模限制级电影| 91干熟女| 91精品伊人久久久大香线蕉91| 亚洲性爱成人| 精品九九九九| 特色a在线上| 欧美色亚洲色| 999国产精品999久久久久久| 91女优在线观看| 精品小视频在线| 中文有码第五页| 国产人妻精品久久久一区二区三区 | 久久久久久久亚洲Av无码| 亚洲欧美国产va在线播放频| 97超级久久| 亚洲色性| 天堂亚洲欧美| 好吊色青靑草| 一级性爱视频免费观看| 欧洲在线性爱视频| 不卡av免费在线网址| 激情文学88| 男人的天堂va| 加勒比综合网| 国产成年女黄特黄| 欧美第一页| 精品人妻一区二区三区在| www国产天美久久久| 午夜大香蕉| 综合网久久| 人人妻人人玩人人澡人人爽| 中文字幕 av v| 亚洲中字慕不卡| 精品二区三四区五电影 | 丁香激情五月天| 欧美性爱系列| 99热这里只有精品9| 麻豆国产96在线| 色色色色电影网| 日本高清久久| 色妺妺在线视频| 日本亚洲vr欧美不卡高清专区| 国产伦精品免编号公布| 超碰免费欧美7| 激情文学小说一区二区| 91九色丨风韵犹存| 国产粉嫩蜜臀av一区二区三区| 最新无码国产| 亚洲黄色a级片| 人妻嗯啊啊在线播放| 中文字幕日韩综合| 九九九九九九成人| 78m成人视线| 97超碰精品| 国产精品网址| 久久99视频| 精品免费一区二区三区在线亚洲人成| 欧美精品 - 91爱爱| 日韩中文9| 偷拍盗拍亚洲色图图片| 超碰97人人cao| 日本不卡高清视频| 2010男人的天堂| 日韩人妻网站| 国产日韩美女小穴视频网站不卡| 久久久久久久强迫| 午夜电影在线观看无码专区| 亚洲欧洲小说图片视频| 四虎影视永久在线观看精品免费网站| 啊啊啊免费视频| 精品无码不卡视频| 夜夜操二区| 伊人网在线视频| 久久久久久久性爱| 免费啪啪啪网站18岁| 九九九久千久久激情蜜桃在线看 | 欧美国产日韩清纯唯美| 极品色电影院| 精品国产91内射久久| 插欧洲美女欧美精品| 91AV老熟女视频| 中文字幕日韩情色| www.av在线视频| www鬼畜国产男人的天堂| 日日碰视频网| 成人一级性爱| 91女网站| 亚洲精品久久久久毛片A片拉屎| 探花在线免费观看视频国产一区| 大香蕉在线视频重口味毛片在线| 国产女大学生AV| 天天综合网久久ww| 欧美少妇大量自拍视频在线观看| 人妻喷水| 风流老熟女一区二区三区l| 亚洲精品一二三四区| 日韩有码中文字幕女同性恋| 久久久精品视频免费观看| 精品久久久久黄少妇| AV天堂因数| 久久精品色欧美aⅴ一区二区| 欧美 日韩 国产传媒| 精品欧美乱码久| 国产成人无码网站在线视频| 青青欧美| 成人免费在线网站| 国产吹潮女在线观看| 99久久精品欧美国产| 97精品国产97久久久| 91天堂丝袜美腿| 少妇高潮对白在线观看| 青青欧美| 婷婷中文网| 在线免费试看60秒| 亚洲一卡2卡3卡4卡乱码网站| 成人热久久精品| 秋霞一级鲁丝片A片| 日韩伦理久 久久 清纯| 懂色中文一区二区三区| 欧洲精品一区二区三区| 日本成人A片免费看| 久久深夜无码| 国产不卡免费在线视频| 中文一区二区| 久操不卡视频| 欧美天堂在线| 少妇六月天| 免费?级毛片无码?∨蜜芽试看| 日韩99神马视频播放| 国产不良强奸视频免费看| 啊啊啊啊啊好大好舒服想要| 日韩性爱毛片操骚逼| jiujiujiujingpin| 亚洲 欧美日韩 另类| 亚洲精品蜜桃久久久| 久久婷婷六月综合| 水多多映视AV| 狠狠干妹子| 色婷婷丁香五月| 性综合网| 91丨精品丨国产丨丝袜| 综合色色婷婷| 欧美18老人禁| 亚洲综人| 爆乳免费黄网站| 色欲av一区二区三区蜜芽| 伊人色综合欧美| 久碰视频| 日日日日做夜夜夜夜无码| 久久天堂网| 欧美九九爱| 日韩Va亚洲va欧美Ⅴa久久| 久久香蕉国产线看观看亚洲女人| 中文字幕 一区二区 亚洲无码| 亚洲囯产精品女人久久久| 亚洲,欧美,综合网| 91中文精品日韩欧美在线| 国产小u女在线观看| 久久日本熟妇熟色一区| 操曰本熟女| 嗯……啊…嗯嗯…啊…好舒服| 欧美色图偷拍另类| 五月色丁香| 日韩熟女乱伦中出| 思思热国产高清| 亚洲一二三四区在线免费看视频| 日本不卡高清免v欧美日韩在线观看| 在线A日本| 四虎精品永久在线播放| 国产乱不卡| 久久熟妇五十路一区| 97福利视频| 亚欧性爱无码| CCYY草草影院地址入口| 亚洲一区二区三区婷婷| 蜜汁欧美| 国产熟女自拍| 精品久久九| 97色97好| 久久久久久久少妇| 日韩另类色图| a网站免费观看| 大香蕉免费乱伦视频| 牛牛操视频逼| 欧美一级黄色免费专区| 综合欧美亚洲| 亚洲人综合19| 激情小说激情视频| 国产怡红院在线| 狠狠干妹子| 青青草啪啪网| 精品无人区麻豆乱码久久久| 国内精品999| 五月婷婷影院| 五月婷婷激情| 国产精品色色| 大香蕉伊人久久| 色欲天天综合网| 亚洲精品美女久久久久久久久| 亚洲制服aⅴ中文字幕| 国产亚洲福利第一页丝袜| 亚洲国产综合图区中文字幕| 国产老太乱伦一区| 日本中文字幕不卡视频| 天天爽夜夜爽夜夜爽精| 无码外流操逼视频| 人人潮人人摸| 69精品久久久久中文字幕| 欧美激情中文字幕另类小说| 日韩黄色成人性爱| 五月天婷婷影院| 91美女精品| 色婷婷九月天天综合| 被男人添B超爽视频| 一级@啪啪视频| 国产高清26uuu| 国产精品激情久久久久久久| 五月天黄色激情视频| 一区二区三区欧美激情| 农村妇女一级二级三级视频| 麻豆亚洲Av成人无码一区精品| 九九九午夜| 97碰碰日本乱偷人妻中文的| 啊啊啊啊啊啊啊网址在线观看| 91处女在线视频| 日本黄色精品| 亚洲欧美国产中文视频| 18禁美女裸体无遮挡啪啪| 囯产操逼片| 另类综合另类| 韩日巨乳美女免费视频在线观看| 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 婷婷中文网| 99色| 国产精品熟妇一区二区三| 热热色综合网| 无码久久亚洲高清,| 日韩国产乱子伦App| 色色国产| 97在线资源| 人妻久久一区二区三区 | 亚洲另类综合欧美| 色 亚洲 91| 老熟女综合网 | 久久久穴999| 91操熟女视频| 热无码中文亚洲H一道本一区二区| 日韩激情中文字幕有码| 九九九九九九九九九九九免费国产| 秋霞福利网| 国产农村妇女精品| 人人考人人摸人人干| 麻豆久久久久久久久丝袜 | 国产精品操| 久久久久国产精品喷潮免费观看臀| 五月天开心网| 久草老司机| 韩美日操逼| 99热只有| 欧亚日本情色| 色欲无码人妻日韩欧美精品| 91大胆欧美| 日日骚av| 老司机老司机午夜影院| 97超碰天天爱天天爱| 性高潮久久久久久久久久久| 夜夜天天噜狠狠爱2021| 啊啊啊啊啊操我视频| 少妇色欲综合网2| 五月丁香拍拍激情综合三级| 日韩精品熟妇| 九九九九热| 亚洲精品一区中文字幕乱码| 美女91网| 青娱乐日韩无码| 丝袜狠狠草尤物 91| 老熟女搡BBBB搡BBBB视频| 欧美图片偷拍| 啊啊啊免费| 丁香五月成人| 99精品九九九九九九| 青娱乐国产盛宴视频| 国产白丝在线| 久久久久久久亚洲Av无码| 日韩欧美中文日韩欧美色| 我爱搞逼综合网| 370p日韩欧美亚洲精品| 成人综合视频久久| 成人a v在线播放免费| 亚洲天堂性爱| 精品人成视频在线观看| 国内精品不卡无毒99999| 9118禁| 开心激情站| www亚洲欧美| 麻豆天美电影一区二区| 蜜臀久久99精品久久久电影| 中文字幕av色| 亚洲欧美国产va在线播放频| 97超碰天天爱天天爱| AA级电影三区| 国产妇女精品视频青青草| 亚洲啪AⅤ永久无码| 熟妇精品juliaannAV| 一级日本牲交大片好爽在线看| 嫩草伊人久久精品| 思思热免费在线视频| 东京热熟女亚洲视频网站| 岛国黄| 亚洲色图日韩丝袜制服一区二区五月在线| 亚洲综合色婷婷| 亚洲激情视频| 日少妇亚洲版| 色爱三区| 九九亚洲| 欧美色图下一页| 一级A片女人高潮叫床| 一二三区视频在线观看| 福利偷拍视频-中文字幕2019国语完整视频大全-S91AV | 91性高朝久久久久久久久| 欧美韩国你懂得在线| 香蕉人人操tv| 婷婷久久五月综合激情| B049AV在线播放| 五月婷婷啪啪| 美女操逼A A| 老司机福利社视频在线观看| 狠狠中文字幕| 成人网站 免费观看| 熟女少妇视频| 欧美日韩精品国产91| av片在线观看免费播放| 激情黄色片在线观看| 伊人在线大香蕉视频久久| 国产又粗又又黄又猛| 成人a大片在线观看| 大逼色网站| 91欧美另类| 伊色综合天堂色97| 久久亚洲AV成人精品无码| 老熟女91视频| 天天天堂影视日韩亚洲91| 久久黄黄| 亚洲AV无码国产成人| 精品一区二区三区免费古装毛片香港三级日本三级人妇 | 国产不卡免费在线视频| 91青青草| 2020天天色综合| 久久99手机免费视频| AV电影在线播放| av天堂天堂av日韩| 国产高清成人免费视频| 欧美淫乱视频| 日欧毛片久久| 欧洲免费一区二| 99久久婷婷| 欧美专区日本专区| 日本高清视频xxxx| 啪啪视频免费在线观看| 91欧美色| 欧美色蜜桃97| 日本亚欧爱爱| 精品一二三区女同| 国产天天看| 看看小穴| 欧美日不卡| 99热啪啪| av资源在线播放天堂| 人妻少妇被猛烈进入中| 国产三级资源在线观看| 富女玩鸭子一级毛片| 阿姨一区二区免费视频-高清正片西瓜视频下载app-T450AV | 欧亚第一综合网| 91在线欧色| 999狠狠综合| 6080yy午夜理论三级一区二区三区无码| 人人操人人摸人| 欧美,日韩,亚洲视频| 操逼www.| 人人人人插| 操逼操逼视频操逼| 超碰在线观看av不卡| 色黄污美女啪啪啪免费网站| 麻豆综合一区av| 熟女激情综合网| 极品欧美一区二区三区| 国产精品久久久久无码Av网曝门| 人人操人人93| 51国产午夜精品视频| а√天堂资源官网在线资源| 操操操五月天婷婷丁香影院| 国产成人超碰在线| 国产一区二区三三视频| 人人操人人插人人摸人人干| 岛国毛片在线观看免费| 干干干天天| 人妻熟女av国产网站| 亚州操逼网| 色婷婷综合网| 91女人的网站| 91丝袜激情在线| 人妻无码一区二区三区久久99| 午夜福利一区二区三区四区五区色婷婷| 男人天堂免费| 欧色网址| 91福利网在线观看| 日韩乱伦AⅤ| 九九无码视频| 91欧美高清| 人妻在线大香蕉| 国产精品色| 少妇天堂| 日本人妻中文字幕精品| 国产福利小视频高清在线观看| 一区二三区四区视频大全套| 亚洲熟妇无码一区二区三区| 国产精品国产自产拍高清AV| 久久综合乱子伦国产免费| 99热 按摩 日韩| 青青草在线成人视频| 国产久9| 樱花草社区www中国| 亚洲drav色图| 欧美精品97| 国产又黄又粗的视频| 丁香五月天堂| 日本五十路在线| 久久东京热成人| 亚洲色图尤物视频| 欧美99| 亚洲成人妻日韩在线| 97网色| 中文字幕中文字幕一区二区| 久久久久久午夜男人的天堂| s片在线观看| 久久超碰97| 中文字幕乱在线伦视频中文字幕乱码在线 | 97免费视频在线观看| 美女极品一区二区三区| 欧美黑人性猛交91| 色综合1991| 久久免费99精品久久久久久| 91美女中出| 黑人干亚洲| 中文字幕一区二区三区四区在线视频| 97久久超碰| 熟女高潮合集-永久久久-成人AV| 伊人超碰97| 久操不卡视频| 98超碰日本| 国产精品99精品视频网站| 婷婷五月天丁香| 屁股久久久久久久久| 色综合国产在线观看| 99色视频| 激情文学小说一区二区| 日本黄色大片一级视频免费麻豆| 亚洲欧美激情另类色图| 久久成人东京热人妻| 黑人嘿嘿嘿超爽免费视频| 少妇500双飞99| 东北少妇高潮zzzz| 天天综合~91入口| 国产白丝网站| 爱我干综合| 精品无码产区一区二| 男女激烈网站最新| 国产午夜福利视频在线| 久久男人天堂| 亚洲人成色9999精品久久 | 韩国轻伦国内自拍一区| 老妇女91| 少妇二级| 男人的天堂 在线一区| 色婷婷五月天| 午夜传煤十二区精品| 国产伦精品一区二区三区在线观| 无码九九九九| 成人性爱高清视频免费看| 青操影院| 亚洲国产午夜真人一级片中文字幕精品黄网站 | 四虎免费看黄| AV和黑人在线播放| 青青草狠狠撸| 亚洲天堂无码| 人妻激情视频| 中文字幕在线观看丝袜| 欧美日韩亚洲天堂| 激情自拍 校园春色| 日本淫乱女一区二区三区视频| 天天操女人| 伊人一级免费黄片| 台湾大香蕉99热| 精品人妻中文字幕4399| 97精品国产手机| 美女国产一区二区久久| 超碰吊日色| 九色97| 国产精品黑人一区二区三区| 97视频在| hd成人一区二区在线| 国产搭汕a级片| 日本天天吊| 国产精品无码成人精品| 中文字幕诱惑制服人妻丝袜美丝袜美| 国产成人精品日本视频| 3P丝袜熟女 色综合| 久久这里都是精品| 综合国产影视三级| 久久风骚城市| 美女啊啊啊啊啊啊啊| 内射小黄片| avav青青草久久夜| 亚洲熟妇图片| 成人美女av| 青草成人免费视频一COm| 久久国产精品91| 亚一综合久久久久久久久久| 国产sv美女内射| 欧美另类自拍 | 成人精品欧洲亚洲| 五月丁香婷婷综合| 久久久久久久九九九九九九| 骚日日av| 澳门成人网站久国产日韩| 操逼逼中文字幕| 91色香| 日日妻色网| www.97在线| 一级久久性爱视频| 大香交伊人网| 精品午夜福利国产一区二区在线观看| 91青青| 好舒服视频| 小草三级久久观看| www成人啪啪18秘 免费| 无码不卡八戒| 九久9精品| 日韩熟女视频二区| wwe 天天干.com| 色色无码| 国产AV超爽| 激情五月天插| 国产精品美女久久久久久网站| 男人天堂最新手机版在线青青草| 内射白嫩美女| 五月天婷婷久久| 日本东京热加勒比久久| 久久精品国产亚洲AV清纯| 久久精品国产99久久,亚洲日韩久久日本一区一区三区 | 国产黄色影片在线观看| 91亚洲欧洲| 97资源站国产精品| 亚洲综合射| 亚洲区限制级| 后入人妻一区| 毛片视频白嫩| 久久久999日本大片| av一区二区三区 中文| www.91理论| 国产丝袜美女在线一区| 手机在线大香蕉| 色与欲影视天天看综合网| 中国黄色特级精品一区二区三区片| 精品久一区免费| 蜜桃久久综合视频| 大香蕉啪啪啪| 色播五月丁香| 婷婷五月天色色| 亚洲aV无码成人在线观看| 亚洲成a人在线观看久| 欧美一区二区日韩三区| 日韩国产精品人妻无码久久久| 欧美色干| 丰满人妻-区二区三区免费看 | 亚洲操逼无码| 久久高清欧美国产| 黄色小视频日本txt| 一级黄色性爱A级片| 国产免费操逼| 夜夜操2028| 蜜乳av首页| 一区二区三区免费岛国片| 日韩在线一区高清在线| 天天躁日日躁成人字幕aⅴ| 人人操人人操人人人操| 91亚洲色人| 日韩在线一区二区| 性在久久久久久| 91天堂色男人的天堂| 亚洲一区二区性爱电影| 日韩操人| 日本 成 人 小说 电影 一区二区| 亚洲国产精品久久久久久久久久| 亚洲男人bt天堂| 按摩中文字幕| 69精品人人人人| 日韩三级性| 少妇熟女视频一区二区三区| 亚洲色综网| 久久久精选| 大肥女高潮bbwbbwhd视频| 日本爽爽爽爽爽爽免费视频| 国产精品视频自拍在线| 久久人人舔人人爽舔人人av片| 欧美强奸一区二区诱惑| 色色激情五月天| 91+欧美| 97超碰总站| 日韩精品一区二区人人人| 黄骗免费网站| 欧美91视频| 91狠狠综合久久久| 超碰 另类 欧美 | 久久99深爱久久99精品| 亚洲天堂资源在线| 人人弄人人摸| 粉嫩av在线一区二区| 一区二区激情国产熟女| 无码视频一区二区| 国产精品一区在线播放| 91香蕉国产尤物视频| 日本免费中文字幕在线| www.99色| 日韩午夜国产| 热G综合热G中文| 思思热在线视频在线| 牛牛aV| 嗯嗯嗯,草死我| 人人九九精| 黄色片A级一区二区三区| 留下AⅤ黄色片| 91撸色网 玖玖网 欧美| 人妻蜜桃臀| 五月婷婷丁香六月丁香| 清纯唯美综合| 丰满美女一级毛片在线播放| 综合久久中文字幕综合日韩精品| 欧美在线伊人色| 黑人精品欧美一区二区蜜桃| 操操逼视频| 色哟哟的毛片| 玖玖爱伊人玖玖爱| 欧美一区二区三区互相| 色婷婷久久| 91少妇香蕉久久精品| 91久久青青草原精品| 很很热性爱视频| 嗯嗯啊啊好疼| 电家庭影院午夜69久久夜色精品国产69乱| 91丨熟女丨丰满熟女| 好看的91视频| 99999精品| 大香蕉综合网| 成人精品水蜜桃久久久久久久| 翔田千里AV无码秘 三区| 91粉嫩萝控精品福利网站_精品影音先锋国 | 蜜桃无码AV一区二区| 亚州色国| 东京热视频网| 久草视频制服诱惑| 丰满少妇一区二区三区免费看| 日韩人妻一区二区精品| 99re热| 精品成人动漫一区二区| av午夜玫瑰| 欧美精品成人一区二区在线观看 | 日韩人妻丝袜中文字幕| 色九九综合| 久久后入制服| 午夜精品探花| 97国产精品久久久久| 日韩精品人妻一| 狠色婷婷久久一区二区三区_| 自拍偷拍草一草| 婷婷色香| 中文字幕日韩专区精品系列| 男人的天堂2018.| 色激情综合网站| 国产精品一区二区在钱播放| 久久超碰网| 久久久久国产亚洲一区欧美色图日韩| 91丨人妻丨国产丨丝袜| 蜜臀久久99精品久久综合| 60秒不遮不挡| 96精品在线| 九九九热| 曰本精品久久久| 精品无码久久久久久国产浪潮| 99re在线观看| 金莲网址| 91色人| 日韩久久三区| 又粗又长又大国产不卡| 91麻豆天美传媒HD| 免费一级黄色录像影片| 无毛精品| 亚洲精品成人| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区 | 国产AV天美| 精品视频免费在线一区| 久草久日| 久久婷婷五月| 国产无码久久高清| 欧美78| 国产日韩欧美三级片| 国产精品在线免费| 偷拍亚洲高清图片| 国产av又色又爽又黄| 色综合1991| 欧美夜夜狠| 最新日日夜夜天天干干| 欧美一区二区三区成人性生活| 999岛国大片| 蜜臀久久99精品久久久久| 青青草啪啪网| 日本午夜精品理论片A级APP发布| 日韩九九九| 超碰人妻中文在线| 一本色道久久综合狠狠操| 久99| 成人无码电影在线观看网| 偷拍99| 亚洲AV资源| 爱做久久久久久| 性色AV网站| 操老熟女AV| 少妇99成人麻豆| 日本视频在线观看污污污| 夜夜爽夜夜操| 麻豆人妻偷人精品无码视频| 后入式视频国产自| 黑人白女精品一区| 高精欧美色| 超碰综合色| 黑丝内射一区二区三区| 精品丝袜无码一区二区三APP| 国产尤物在线三区| 好爽,再快点啊哈嗯嗯嗯嗯| 乱伦系列一区二区| 欧美黄色手机在线观看| 天天天堂影视日韩亚洲91| 手机不卡视频不卡在线一二三区 | 亚州图片第一页| 成人AV素股で擦久久| 亚洲精品日韩国产欧美| 影音先锋日本乱伦| 久久精品电影在线| 国产妇女精品视频青青草| 午夜精品一区二区三区三上悠亚| av在线不卡一区二区三区| 呦呦一区| 在线天堂资源亚洲| 夜夜 中文视频rt| 欧美色997| 97人妻色| 99热这里只有精品8| 成人三一级一片aaa| 亚洲成人精品在线一区| 欧美日韩欧美| 青青草华人在线欧美在线| 狠狠亚洲| 日日日啊啊啊| 少妇免费视频| 五月激情天| 天美麻花大全视频| 国产精品极品美女视频| AV天堂国产| 国产精品ww久久| 在线不欧美| 97视频免费播放| 国产农村妇女毛片精品久久| 中文字幕在线2| 另类图片亚洲加勒比另类图片亚洲加勒比另类图片亚洲加勒比 | 精品91日日夜夜超清资源| 欧美小说区视频区| 神马九九九| 香蕉av一区二区三区| 美日韩在线不卡人妻| 330Dv国产女人终合视频极品人与兽| 偷拍欧美激情| 久久日韩毛| 欧美|91色综合| 在线黄页看毛片| 亚洲高潮少妇| 精品少妇一区二区三区免费观看| 99在线免费视频| 天天射,天天操,天天爽-国内精品一区二区三区-成人AV | 日本熟妇自慰性高潮一区二区三区| 日韩综合97P| 天天操天天日青青草超碰av| 亚洲丝袜制服国产91_国语字幕免费观看完整版下载第5集_ | 一区二区娱乐网站| 日欧操屄视频| 亚洲综合另类| 大香蕉AV丝袜| 人妻精品综合中文字幕在线 | 国产夜夜操| 亚洲国成人情色好看电影| 99精品伊人| 国产精品午夜福利视频| 国产精品色| 日本大香蕉综合网红本杳社区| 激情在线青青操| 精品久久久av无码免费|