精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

慢SQL,壓垮團隊的最后一根稻草

開發 開發工具
今天只討論一種應用模式,就是最普遍的,前端實時調用后端web服務,服務端經過DB的增刪改查作出響應的應用。至于離線數據分析,在線規則引擎模板執行,流式計算等不在本次討論范疇。

先說結論,我支持將邏輯寫在 Java 等應用系統中。

[[225954]]

背景:

今天只討論一種應用模式,就是最普遍的,前端實時調用后端web服務,服務端經過DB的增刪改查作出響應的應用。至于離線數據分析,在線規則引擎模板執行,流式計算等不在本次討論范疇。

重SQL開發的場景

先看一個例子吧。用經典的 Controller Service DAO 開發模式描述。

需求:

查詢出每個學生所在的城市名以及分數展示到前端。

重SQL模式

  1. class Controller{ 
  2.   Service service; 
  3.   Map<String,String> get(Map<String,Object> param){ 
  4.     return service.get(param); 
  5.   } 
  6.  
  7. class Service{ 
  8.   DAO dao; 
  9.   Map<String,String> get(Map<String,Object> param){ 
  10.     return dao.get(param); 
  11.   } 
  12. class DAO{ 
  13.   SQLTemplate template; 
  14.   Map<String,String> get(Map<String,Object> param){ 
  15.     String sql = "select city_name,student_name,score from student,score,city where city.city_code=student.city_code and score.student_id=student.student_id" ; 
  16.     return template.execute(sql,param); 
  17.   } 

重Java模式

  1. class View
  2.   String studentName; 
  3.   String cityName; 
  4.   String score; 
  5.  
  6. class Requent{ 
  7.  
  8. class Controller{ 
  9.   Service service; 
  10.   List<View> get(Requent request){ 
  11.     return service.get(param); 
  12.   } 
  13.  
  14. class Service{ 
  15.   StudentDAO studentDAO; 
  16.   ScoreDAO scoreDAO; 
  17.   CityDAO cityDAO; 
  18.   List<View> get(Requent param){ 
  19.     Student studentRequest = new Student(); 
  20.     //查詢學生 
  21.     List<Student> students = studentDAO.select(studentRequest); 
  22.     List<View> result = new ArrayList(students.size()); 
  23.      
  24.     for(Student student : students){ 
  25.       View view = new View(); 
  26.       view.setStudentName(student.getStudentName()); 
  27.      
  28.        //拼接城市名 
  29.       City cityRequest  = new City(); 
  30.       cityRequest.setStudentId(student.getStudentId()); 
  31.       City city = cityDAO.select(cityRequest); 
  32.       view.setCityName(city); 
  33.        
  34.       //拼接分數 
  35.       Score scoreRequest = new Score(); 
  36.         scoreRequest.setStudentId(student.getStudentId()); 
  37.       Score score = scoreDAO.select(scoreRequest); 
  38.       view.setScode(score.getScore()); 
  39.        
  40.       result.add(view); 
  41.     } 
  42.     return result; 
  43.   } 
  44.  
  45. class StudentDAO{ 
  46.   SQLTemplate template; 
  47.   Student select(Student param){ 
  48.     String sql = "select * from Student where param = ..."
  49.     template.select(sql,param); 
  50.   }  
  51.  
  52. class ScoreDAO{ 
  53.   SQLTemplate template; 
  54.    Score select(Score param){ 
  55.     String sql = "select * from Score where param = ..."
  56.     template.select(sql,param); 
  57.   } 
  58.  
  59. class CityDAO{ 
  60.   SQLTemplate template; 
  61.   City select(City param){ 
  62.   String sql = "select * from City where param = ..."
  63.     template.select(sql,param); 
  64.   } 

可以看到,使用重SQL的模式來進行開發確實很快很快,只需要把SQL開發出來基本就完事了,但是看著用重 Java 的模式開發,需要寫一堆的代碼,這么看來好像是 SQL 勝利一籌。

好,PD突然說了,我要把城市名為 “大蕉” 的,分數乘于2展示出來。握草,這個怎么搞??

重SQL模式

  1. class DAO{ 
  2.   SQLTemplate template; 
  3.   Map<String,String> get(Map<String,Object> param){ 
  4.     String sql = "select city_name,student_name,CASE WHEN city.city_name='大蕉' THEN 2*score.score ELSE score END score from student,score,city where city.city_code=student.city_code and score.student_id=student.student_id " ; 
  5.     return template.execute(sql,param); 
  6.   } 

好了。。這個SQL已經變得很復雜了基本沒法看了。。

重 Java 模式

  1. Service.class    
  2.  
  3.      //拼接分數 
  4.       Score scoreRequest = new Score(); 
  5.         scoreRequest.setStudentId(student.getStudentId()); 
  6.       Score score = scoreDAO.select(scoreRequest); 
  7.        
  8.       if("大蕉".equals(city.getCityName()){ 
  9.         view.setScode(score.getScore() * 2); 
  10.       }else
  11.             view.setScode(score.getScore()); 
  12.       } 
  13.        

咦好像改動也不多嘛。

這時候PD又來了我要把城市名為 “大蕉” ,并且城市Code小于10086的,分數乘于2展示出來。握草,完蛋了,之前全是SQL,這個需求要怎么搞??繼續疊加上去繼續 CASE WHEN?

還沒想清楚呢,突然 DBA 電話飛過來了,兄dei你的SQL太慢了,現在把整個庫拖垮了,你是不是沒有加索引?

我:索引加了啊。。。難道是沒走到?那是先解決慢SQL還是先開發需求呢?拆庫是不可能了,邏輯這么死鬼復雜拆庫完全沒法跑啊,加CPU加內存啊 DBA大佬!!!

[DBA日報] 慢SQL 180+,已解決10。

又上了一個版本

[DBA日報] 慢SQL 200+,已解決15。

又上了一個版本

[DBA日報] 慢SQL 250+,已解決30。

慢慢的,開發和運營和DBA每天都疲勞于監控這些SQL。。。。

前言

觀察了一下,傳統企業以及絕大部分轉型中的企業的 Java 應用中,很神奇的是,他們的開發人員包括我自己以前,大家都非常非常希望使用一個 SQL 來完成所有的邏輯的編寫,非常多企業更是把數據庫的存儲過程和數據庫自定義函數來完成。

這些關于邏輯應該寫在哪里的爭論從來沒有停止過,不僅僅發生在后端和數據庫端,連前后端都經常會發生這種爭論,現在只討論后端和數據庫端的糾結。

我將從這五個方面分別對比一下兩種模式的異同。

  • 出現場景
  • 開發效率
  • 缺陷排查
  • 架構升級
  • 系統維護

出現場景

SQL

我們絕大多數的歷史代碼都是用存儲過程來實現的啊,如果有新需求不往上面做的話,很難兼容原來的邏輯啊啊。

前面的人呢是這樣寫的,我來了看大家都這樣寫就這樣寫了。

Java

新應用嘛,我想怎么樣寫就怎樣寫。

監控和埋點寫起來簡單吖,排查問題可方便了。

前面的人呢是這樣寫的,我來了看大家都這樣寫就這樣寫了。

開發效率

SQL

這樣寫起來很快啊,而且寫 Java 代碼多難受啊,寫 SQL 我自己在數據庫開發環境跑一下結果正確我就直接丟到代碼中提交了,多爽啊。

老實說,這樣子確實會提高開發的效率,因為不用寫那么多查庫聚合的操作,一切都在 SQL 中搞定了。另一方面來看,這確實會讓 Java 代碼看起來很雞肋,好像只是把數據從 web 層到數據層的一個管道而已,一切 if else 能寫在 SQL 中的都寫在 SQL 中了。

但是新需求來或者需求變更的時候,我經常要重新寫SQL,如果變動不多我可能要改動到原來的 SQL,但是我又不敢改,所以只好 copy 重新寫一個,改 SQL 的風險好大,一報錯又要重啟好難受。

Java

一次要寫N個類,有點煩。

新需求來或者需求變更的時候,如果邏輯比較復雜,我直接抽成方法或者改成一些設計模式,維護起來效率還是可以接受的。

缺陷排查

SQL

開發排查問題的時候,除了看日志,直接把SQL和參數丟到 PL/SQL 或者 其他工具里跑一下,基本就能知道數據問題出現在哪了。測試同學在進行測試的時候,如果發現有不對的東西,直接跟開發同學一樣的思路,把SQL 跑一下,問題基本就定位得七七八八了。

但是呢,一旦遇到跑 SQL 無法一眼看出問題的 bug 或者 SQL 實在是太長太長了的的時候,就蒙圈了。我曾經就維護了一個幾千行的存儲過程,一旦發生問題,排查問題的過程巨艱難。但是呢直接用一個數據庫一個功能搞定所有功能未嘗不是一件很爽的事情,因為關系型數據庫實在是實在是太太太穩定了,一次編寫***運行。

Java

看日志看監控。

根據報錯的代碼位置 check 一下代碼邏輯。

一些入參分支肉眼 check 不出來,只能遠程 debug 慢慢看數據流向。

測試的同學基本無法幫忙 check 缺陷,只能靠程序的表現來判斷。

架構升級

SQL

SQL 慢沒關系,它穩定啊,慢就把機器垂直擴展一下好啦,加cpu,加內存,換SSD,加加加絕對可以解決事情的。

SQL 有各種索引和優化策略,說不定跑起來比我們自己寫邏輯還快呢。

加加加,加內存加cpu垂直升級。也沒有其他招數了,除了前置緩存,但是如果查詢都很個性化SQL很復雜,前置緩存也基本沒啥亂用。。。

如果你的邏輯全部寫在 SQL 中,那完蛋了,你這個表基本就沒法分表了,因為你的業務邏輯跟數據庫的數據完整性是強耦合的,需要一切數據基本都在一個數據庫中,這是一件很難受很難受的事情,不信你去問問那些所有業務邏輯全寫在 SQL 中的小伙。

數據庫中非常復雜的表關聯會極大程度拖慢數據庫處理每條 SQL 的平均時間,極大程度拖慢數據庫 RT,降低了數據庫的 RT ,如果邏輯都寫在 SQL 中,那么只能進行垂直升級。因為一旦進行水平擴展,那么多機器的非常復雜的分布式表關聯,RT 基本不是一個高并發的業務應用的能容忍的。

Java

如果是數據庫瓶頸,加數據庫機器,分庫分表一下,應用層基本不用改,在DAO層進行路由一下。

如果是服務器cpu瓶頸,多加幾臺機器就好了。

如果還有瓶頸,增加一下查詢緩存。

在應用快速發展的過程中一般都會分庫分表的拆分或者自動水平擴展,這時候其實只需要數據庫層面做好自己的數據遷移和同步就好了,對于業務層來說是完全無感知的。即使業務非常非常復雜,需要拆應用,其實也非常簡單,只需要把對應的 DAO 層的操作拆分出去,換成 RPC 或者其他方式的調用就好了。

系統維護

SQL

舊SQL完全不敢動,來一個需求加一個 SQL。

慢SQL日益增加,應對疲乏。

Java

SQL寫完一次基本不用動,來一個需求加一個方法聚合一下數據操作即可。

應用維護比較簡單,只要監控做好了,定位到問題基本都能很快解決。

邏輯越來越復雜,沒有好的開發框架的話,代碼維護起來也是挺要命,因為完全不知道跑哪個分支去了。但是現在已經有很多優秀的開源框架來更好地維護代碼了,比如 Spring 的全家桶。

怎么破

舊的重 SQL 邏輯暫時不要動,新的邏輯都基于 Java 模式開發,先保證慢 SQL 不增加,舊的 SQL 穩定運行,畢竟業務穩定是***要素。

如果業務初期需要非常非常快速開發,那么使用重 SQL 模式也是可以理解的,但是還是要抽時間重構成 Java 模式。

結論

我支持將邏輯寫在 Java 等應用系統中。其實原因在上面基本描述完了,***就是復雜 SQL 的表關聯其實跟個人的能力有非常大的關系,如果一個 SQL 寫得不好,那是極慢極慢的非常容易把整個數據庫拖慢的。第二就是維護這些 SQL 也是一件很難受的事情,因為你完全不知道這個 SQL 背后的數據流轉是怎樣的,你只能根據自己的猜測去查看 SQL 中的 bug,Java 應用好歹還能 debug 一下還有打點看看數據不是?如果邏輯寫在 Java 中那么其實你的 DAO 層只需要編寫一次,但是可以***使用,基本不會在這一層浪費很多的時間(用過 ibatis 的都知道改了 SQL 需要重啟應用吧?)。第三就是邏輯都寫在 SQL ,中對于分庫分表和應用拆分來說是一件非常難受的事情,真的難受。

昨天寫的被吐槽了,回爐重造了,重新看看。

責任編輯:武曉燕 來源: 51CTO專欄
相關推薦

2022-08-15 07:32:03

SQL語句數據庫

2014-01-10 10:53:29

移動廣告平臺進化分發

2011-07-28 09:09:23

Java

2020-05-08 09:37:32

網線網絡網速

2025-04-03 00:03:00

數據內存網絡

2011-07-22 10:40:04

思科裁員

2015-03-23 11:56:58

2017-02-07 09:15:54

光纖傳輸介質通信網絡

2009-03-12 10:03:00

雙絞線連接網絡

2016-12-01 09:30:03

運維網絡網線

2021-03-23 08:21:06

GolangPython字符

2020-07-16 11:16:57

云計算SD-WAN運營

2016-05-18 14:50:57

運維PortfastAPI

2010-09-10 16:17:27

2022-12-13 10:28:53

2021-04-06 08:20:24

二叉搜索樹數據結構算法

2017-08-14 16:36:23

ASActivity內存

2017-12-28 11:25:51

2019-09-02 10:38:30

網線攻擊MVP

2016-11-18 13:58:33

點贊
收藏

51CTO技術棧公眾號

亚洲精品国产a| 欧美精品黄色| 欧美日韩你懂得| 亚洲小视频在线播放| 人妻无码一区二区三区久久99| 免费看黄裸体一级大秀欧美| 中文字幕亚洲天堂| 91人人澡人人爽| 日韩欧美少妇| 亚洲综合区在线| 日韩电影天堂视频一区二区| а√天堂资源在线| 久久一区亚洲| 欧美黄色免费网站| 摸摸摸bbb毛毛毛片| 欧美h版在线观看| 在线精品视频小说1| 精品一二三四五区| a天堂中文在线| 成人性视频网站| 国产日韩欧美影视| 成年人免费高清视频| 综合久久一区| 中文字幕欧美日韩va免费视频| 香港三日本8a三级少妇三级99| 欧美美女福利视频| 色素色在线综合| 免费看毛片的网址| 国产传媒在线播放| 国产精品久久久久久亚洲伦| 好看的日韩精品| 99久久婷婷国产一区二区三区| 久久裸体视频| 欧美性做爰毛片| 国产一级aa大片毛片| 小处雏高清一区二区三区| 亚洲欧美成人一区二区在线电影| 91丨porny丨九色| 青娱乐极品盛宴一区二区| 色女孩综合影院| 妺妺窝人体色www在线小说| 尤物视频在线看| 亚洲视频在线一区| 在线视频不卡一区二区三区| 国产资源在线观看| xf在线a精品一区二区视频网站| av一区二区在线看| 国产成人av免费看| 国产精品一区二区果冻传媒| 91亚洲国产成人久久精品网站 | 亚洲成人中文在线| 日本大胆人体视频| 色综合999| 亚洲综合色成人| 日韩欧美猛交xxxxx无码| caoporm免费视频在线| 亚洲男人电影天堂| 老司机午夜免费福利视频| 黄色网页在线免费看| 自拍偷拍国产精品| 国产日韩欧美大片| 日本精品600av| 亚洲国产综合在线| 国产原创中文在线观看| 成人在线黄色电影| 欧美日韩另类字幕中文| 欧美韩国日本在线| 亚洲精品555| 欧美人成免费网站| 99精品视频免费版的特色功能| 亚洲性视频在线| 亚洲第一页自拍| 黄色a一级视频| 欧美熟乱15p| 久久久av电影| 免费一级全黄少妇性色生活片| 亚洲国产日本| 国产91在线播放精品91| 亚洲一区二区色| 国产精品香蕉一区二区三区| 国产精品一区二区三区不卡| 欧美视频综合| 国产精品久久久久久久久搜平片 | 在线一区二区三区四区| 亚洲一级免费在线观看| 香蕉成人app| 亚洲精品日韩丝袜精品| 国产探花在线视频| 亚洲电影在线| 国产精品视频最多的网站| 国产成人精品亚洲精品色欲| 99在线热播精品免费| 欧洲久久久久久| 成人a在线视频免费观看| 午夜私人影院久久久久| 91人人澡人人爽人人精品| 亚洲高清在线一区| 亚洲午夜精品久久久久久久久久久久| 日本黄色片免费观看| 亚洲精品裸体| 青青a在线精品免费观看| 伊人免费在线观看| 成人爱爱电影网址| 伊人久久大香线蕉精品| 9lporm自拍视频区在线| 欧美日韩一区二区三区四区| 李丽珍裸体午夜理伦片| 欧美成人激情| 欧美亚洲另类在线| 精品国产av 无码一区二区三区| 91视频在线看| 欧美a级免费视频| 视频精品导航| 国产丝袜视频一区| 久久免费小视频| 精品在线观看免费| 日本免费高清一区二区| 91吃瓜在线观看| 91精品国产色综合久久ai换脸| 在线观看日本中文字幕| 尹人成人综合网| 99国产精品久久久久老师| 不卡在线视频| 色婷婷国产精品久久包臀| 亚洲av无一区二区三区久久| 日韩一区自拍| 国产精品美女主播| 青青免费在线视频| 亚洲3atv精品一区二区三区| 91看片破解版| 色乱码一区二区三区网站| 国产精欧美一区二区三区| 日韩欧美在线观看一区二区| 亚洲国产综合色| 91精品又粗又猛又爽| 欧美精品91| 99久久伊人精品影院| 国产视频一区二区| 欧美挠脚心视频网站| 久久久国产一级片| 日本不卡一区二区| 日韩av高清在线播放| 欧美大胆性生话| 日韩精品一二三四区| 欧美成人精品欧美一级乱黄| 国产91精品一区二区| 97av中文字幕| 成人知道污网站| 久久久久久国产精品| 人妻91麻豆一区二区三区| 一区二区三区产品免费精品久久75| 五月天开心婷婷| 亚洲欧美在线专区| 91久久大香伊蕉在人线| 青草在线视频| 精品人在线二区三区| 久久久久久久极品内射| 国产sm精品调教视频网站| 国产va亚洲va在线va| 全国精品免费看| 日本精品视频在线| av片在线免费观看| 欧美精品黑人性xxxx| 欧美日韩中文字幕在线观看| 成人午夜电影网站| 六月丁香婷婷激情| 成人三级视频| 91影视免费在线观看| 欧美黄色视屏| 亚洲欧美综合精品久久成人| 进去里视频在线观看| 中文字幕一区二区视频| 人妻少妇偷人精品久久久任期| 亚洲无线视频| 热re99久久精品国99热蜜月| 精品69视频一区二区三区| 久久精品电影一区二区| 免费的黄色av| 在线观看不卡视频| 麻豆国产尤物av尤物在线观看 | 亚洲欧洲一区二区天堂久久| 蜜桃成人在线| 天天综合91| 国语自产偷拍精品视频偷| 久久久久久久久亚洲精品| 欧美日精品一区视频| 91视频免费在线看| 26uuu精品一区二区在线观看| 视频在线观看免费高清| 激情文学一区| 亚洲国产一区在线| 伊色综合久久之综合久久| 日韩av手机在线| 一色桃子av在线| 亚洲色图美腿丝袜| 国产黄色大片网站| 欧洲亚洲精品在线| 国产无遮挡又黄又爽在线观看| 欧美激情在线免费观看| 国产a√精品区二区三区四区| 久久久久久穴| 国产精品va在线观看无码| 国产在视频线精品视频www666| 亚洲最大av网站| 欧美1级2级| 色综合久久天天综线观看| 电影av一区| 亚洲电影免费观看高清完整版在线 | 亚洲成人网在线播放| 久热成人在线视频| 成人小视频在线观看免费| 国内精品伊人久久久| 国产91一区二区三区| 亚洲天堂网站| 国产精品大陆在线观看| av男人的天堂在线观看| 久久国产精品久久久久| 高清美女视频一区| 日韩国产精品视频| www.色呦呦| 91精品国产aⅴ一区二区| 性色av一区二区三区四区| 狠狠躁天天躁日日躁欧美| 免费在线视频一区二区| 国产精品网站在线观看| 97超碰在线资源| 99视频有精品| 北京富婆泄欲对白| 国产成人综合在线观看| 999这里有精品| 老鸭窝一区二区久久精品| 青青草精品视频在线观看| 亚洲精品影院在线观看| 成人免费在线视频播放| 牛牛国产精品| 日韩人妻精品一区二区三区| 成人3d精品动漫精品一二三| 欧美激情论坛| 久久99精品久久久久久园产越南| 国产亚洲欧美一区二区| 国内精品偷拍| 精品不卡在线| 国产香蕉精品| 国产亚洲精品久久飘花| 激情小说一区| 精品视频高清无人区区二区三区| 北条麻妃一区二区三区在线观看| 福利视频一区二区三区| 中文在线综合| 精品福利影视| 欧美欧美黄在线二区| 亚洲国产一区二区三区在线播 | 五月婷婷中文字幕| 欧美日韩国产中文精品字幕自在自线| 国产真实乱偷精品视频| 亚洲国产一区二区三区青草影视| 欧美片一区二区| 亚洲高清不卡在线| 日韩欧美国产亚洲| 欧美性开放视频| av首页在线观看| 欧美久久久久久蜜桃| 国产女人爽到高潮a毛片| 日韩视频一区二区| 蜜臀av中文字幕| 亚洲欧美日韩一区二区在线| 国产大片在线免费观看| 精品国产一区久久久| 亚洲妇熟xxxx妇色黄| 午夜美女久久久久爽久久| 成人教育av| 成人av.网址在线网站| 亚洲综合色婷婷在线观看| 国产女人水真多18毛片18精品| 日韩av网址大全| 亚洲五月六月| 国产精品a久久久久| 丝袜老师办公室里做好紧好爽| 日韩精品一二区| 中文字幕一二三| 2022国产精品视频| 自拍偷拍第9页| 午夜不卡在线视频| 中文字幕在线观看第二页| 日韩欧美二区三区| 欧美孕妇孕交| 欧美精品在线第一页| 热三久草你在线| 国产自摸综合网| 奇米影视777在线欧美电影观看| 午夜精品一区二区在线观看 | 噜噜噜久久亚洲精品国产品麻豆| 日韩电影免费一区| 8x8x成人免费视频| 91麻豆高清视频| 国产大片免费看| 日本福利一区二区| 亚洲第一页视频| 中文字幕免费精品一区| 波多野一区二区| 成人亲热视频网站| 国产探花在线精品| 成年人看的毛片| 九色|91porny| 日本性高潮视频| 亚洲国产wwwccc36天堂| 中文字幕欧美人妻精品一区蜜臀| 亚洲国产成人精品电影| 久热国产在线| 国产精品久久久久av| 精品国产一区二区三区不卡蜜臂| 在线亚洲美日韩| 久久久噜噜噜| 免费a v网站| 亚洲精品国产一区二区精华液 | 美女免费视频一区二区| 成人手机在线免费视频| 亚洲蜜臀av乱码久久精品蜜桃| 69视频免费看| 精品亚洲精品福利线在观看| 中文国产字幕在线观看| 国产一区二区色| 欧美艳星介绍134位艳星| 欧美亚洲国产成人| 成人久久视频在线观看| 亚洲国产精品免费在线观看| 欧美色精品在线视频| 日本a一级在线免费播放| 国内精品久久久久影院优| 亚洲一区二区三区中文字幕在线观看 | 国产成人无码精品久在线观看| 欧美日韩五月天| 国产三级在线观看| 欧美专区日韩视频| 日韩高清一级| 国产精品12345| 成人精品高清在线| 精品视频一区二区在线观看| 日韩一区二区精品| av免费网站在线| 亚洲free嫩bbb| 一区二区在线| 色哟哟免费视频| 亚洲一区二区在线免费观看视频| 国产成人精品无码高潮| 欧美区二区三区| 9l视频自拍蝌蚪9l视频成人 | av大全在线| 91在线在线观看| 好看的日韩av电影| 色悠悠在线视频| 午夜欧美视频在线观看| 少妇性bbb搡bbb爽爽爽欧美| 日本在线观看天堂男亚洲| 一区三区在线欧| wwwwww.色| 中文字幕在线观看一区二区| 国产免费一区二区三区免费视频| 久久精品视频va| jizz国产精品| 成人黄色片视频| 欧美高清在线视频| 国产农村妇女毛片精品久久| 欧美疯狂xxxx大交乱88av| 成人午夜大片| 久草在在线视频| 中文字幕一区二区三区精华液| 国产裸体永久免费无遮挡| 久精品免费视频| 欧美美女黄色| 五月天婷婷激情视频| 日韩毛片一二三区| 亚洲精品国产精品国| 欧美亚洲激情视频| 97精品国产一区二区三区| 黑人无套内谢中国美女| 欧美日韩性视频在线| 自拍视频在线免费观看| 亚洲最大av在线| 男女av一区三区二区色多| 小嫩苞一区二区三区| 欧美成人猛片aaaaaaa| 亚洲欧洲自拍| 国产av第一区| 99久久国产免费看| 在线播放精品视频| 国产69精品久久久久9| 欧美日韩国产免费观看视频| 亚洲欧美日韩一二三区| 欧美日韩国产精品专区| 亚洲免费视频一区二区三区| 国产高清精品一区| 麻豆成人免费电影| 日本熟妇乱子伦xxxx| 最新日韩中文字幕| 欧美亚洲大陆| 亚洲理论中文字幕| 色综合色狠狠天天综合色| 一色桃子av在线| 亚洲一区二区三区欧美|