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

大意了!平常不重視慢SQL,搞得現(xiàn)在系統(tǒng)要重構(gòu)……

運維 新聞
我們只有在整個設(shè)計、開發(fā)、運維階段保持高度敏感、追求極致,才能讓我們系統(tǒng)的可用性、伸縮性不會隨著業(yè)務(wù)增長而劣化。?

一、背景介紹

從系統(tǒng)設(shè)計角度看,一個系統(tǒng)從設(shè)計搭建到數(shù)據(jù)逐步增長,SQL 執(zhí)行效率可能會出現(xiàn)劣化,為繼續(xù)支撐業(yè)務(wù)發(fā)展,我們需要對慢 SQL 進行分析和優(yōu)化,嚴峻的情況下甚至需要對整個系統(tǒng)進行重構(gòu)。所以我們往往需要在系統(tǒng)設(shè)計前對業(yè)務(wù)進行充分調(diào)研、遵守系統(tǒng)設(shè)計規(guī)范,在系統(tǒng)運行時定期結(jié)合當前業(yè)務(wù)發(fā)展情況進行系統(tǒng)瓶頸的分析。

從數(shù)據(jù)庫角度看,每個 SQL 執(zhí)行都需要消耗一定 I/O 資源,SQL 執(zhí)行的快慢,決定了資源被占用時間的長短。假如有一條慢 SQL 占用了 30%的資源共計 1 分鐘。那么在這 1 分鐘時間內(nèi),其他 SQL 能夠分配的資源總量就是 70%,如此循環(huán),當資源分配完的時候,所有新的 SQL 執(zhí)行將會排隊等待。所以往往一條慢 SQL 會影響到整個業(yè)務(wù)。

本文僅討論 MySQL-InnoDB 的情況。

二、優(yōu)化方式

SQL 語句執(zhí)行效率的主要因素:

1)數(shù)據(jù)量

SQL 執(zhí)行后返回給客戶端的數(shù)據(jù)量的大小;

數(shù)據(jù)量越大需要掃描的 I/O 次數(shù)越多,數(shù)據(jù)庫服務(wù)器的 IO 更容易成為瓶頸。

2)取數(shù)據(jù)的方式

數(shù)據(jù)在緩存中還是在磁盤上;

是否能夠通過全局索引快速尋址;

是否結(jié)合謂詞條件命中全局索引加速掃描。

3)數(shù)據(jù)加工的方式

排序、子查詢、聚合、關(guān)聯(lián)等,一般需要先把數(shù)據(jù)取到臨時表中,再對數(shù)據(jù)進行加工;

對于數(shù)據(jù)量比較多的計算,會消耗大量計算節(jié)點的 CPU 資源,讓數(shù)據(jù)加工變得更加緩慢;

是否選擇了合適的 join 方式。

1、優(yōu)化思路

?1)減少數(shù)據(jù)掃描(減少磁盤訪問)

盡量在查詢中加入一些可以提前過濾數(shù)據(jù)的謂詞條件,比如按照時間過濾數(shù)據(jù)等,可以減少數(shù)據(jù)的掃描量,對查詢更友好;

在掃描大表數(shù)據(jù)時是否可以命中索引,減少回表代價,避免全表掃描。

2)返回更少數(shù)據(jù)(減少網(wǎng)絡(luò)傳輸或磁盤訪問)

3)減少交互次數(shù)(減少網(wǎng)絡(luò)傳輸)

將數(shù)據(jù)存放在更快的地方;

某條查詢涉及到大表,無法進一步優(yōu)化,如果返回的數(shù)據(jù)量不大且變化頻率不高但訪問頻率很高,此時應(yīng)該考慮將返回的數(shù)據(jù)放在應(yīng)用端的緩存當中或者 Redis 這樣的緩存當中,以提高存取速度。

4)減少服務(wù)器 CPU 開銷(減少 CPU 及內(nèi)存開銷)

5)避免大事務(wù)操作

6)利用更多資源(增加資源)

2、優(yōu)化案例

1)數(shù)據(jù)分頁優(yōu)化

select * from table_demo where type = ?  limit ?,?;
  • 優(yōu)化方式一:偏移 id
lastId = 0 or min(id)
do {
select * from table_demo where type = ? and id >{#lastId} limit ?;
lastId = max(id)
} while (isNotEmpty)
  • 優(yōu)化方式二:分段查詢

該方式較方式一的優(yōu)點在于可并行查詢,每個分段查詢互不依賴;較方式一的缺點在于較依賴數(shù)據(jù)的連續(xù)性,若數(shù)據(jù)過于分散,代價較高。

minId = min(id) maxId = max(id)
for(int i = minId; i<= maxId; i+=pageSize){
select * from table_demo where type = ? and id between i and i+ pageSize;
}

2)優(yōu)化 GROUP BY

提高 GROUP BY 語句的效率, 可以通過將不需要的記錄在 GROUP BY 之前過濾掉.下面兩個查詢返回相同結(jié)果但第二個明顯就快了許多。

  • 低效:
select job , avg(sal) from table_demo group by job having  job = ‘manager'
  • 高效
 select job , avg(sal) from table_demo where  job = ‘manager' group by job

3)范圍查詢

聯(lián)合索引中如果有某個列存在范圍(大于小于)查詢,其右邊的列是否還有意義?

explain select count(1) from statement where org_code='1012' and trade_date_time >= '2019-05-01 00:00:00' and trade_date_time<='2020-05-01 00:00:00'
explain select * from statement where org_code='1012' and trade_date_time >= '2019-05-01 00:00:00' and trade_date_time<='2020-05-01 00:00:00' limit 0, 100
explain select * from statement where org_code='1012' and trade_date_time >= '2019-05-01 00:00:00' and trade_date_time<='2020-05-01 00:00:00'
  • ?使用單鍵索引 trade_date_time 的情況下

a. 從索引里找到所有 trade_date_time 在'2019-05-01' 到'2020-05-01' 區(qū)間的主鍵 id,假設(shè)有 100 萬個;

b. 對這些 id 進行排序(為的是在下面一步回表操作中優(yōu)化 I/O 操作,因為很多挨得近的主鍵可能一次磁盤 I/O 就都取到了);

c. 回表,查出 100 萬行記錄,然后逐個掃描,篩選出 org_code='1020'的行記錄。

  • 使用聯(lián)合索引 trade_date_time, org_code -聯(lián)合索引 trade_date_time, org_code 底層結(jié)構(gòu)推導如下:

圖片

以查找 trade_date_time >='2019-05-01' and trade_date_time <='2020-05-01' and org_code='1020'為例:

a. 在范圍查找的時候,直接找到最大,最小的值,然后進行鏈表遍歷,故僅能用到 trade_date_time 的索引,無法使用到 org_code 索引;

b. 基于 MySQL5.6+的索引下推特性,雖然 org_code 字段無法使用到索引樹,但是可以用于過濾回表的主鍵 id 數(shù)。

小結(jié):對于該 case, 索引效果[org_code,trade_date_time] > [trade_date_time, org_code]>[trade_date_time]。實際業(yè)務(wù)場景中,檢索條件中 trade_date_time 基本上肯定會出現(xiàn),但 org_code 卻不一定,故索引的設(shè)計還需要結(jié)合實際業(yè)務(wù)需求。

4)優(yōu)化 Order by

  • 索引:?
KEY `idx_account_trade_date_time` (`account_number`,`trade_date_time`),
KEY `idx_trade_date_times` (`trade_date_time`)
KEY `idx_createtime` (`create_time`),
  • 慢 SQL:
SELECT  id,....,creator,modifier,create_time,update_time  FROM statement
WHERE (account_number = 'XXX' AND create_time >= '2022-04-24 06:03:44' AND create_time <= '2022-04-24 08:03:44' AND dc_flag = 'C') ORDER BY trade_date_time DESC,id DESC LIMIT 0,1000;
  • 優(yōu)化前:SQL 執(zhí)行超時被 kill 了
SELECT  id,....,creator,modifier,create_time,update_time  FROM statement
WHERE (account_number = 'XXX' AND create_time >= '2022-04-24 06:03:44' AND create_time <= '2022-04-24 08:03:44' AND dc_flag = 'C') ORDER BY create_time DESC,id DESC LIMIT 0,1000;
  • 優(yōu)化后:執(zhí)行總行數(shù)為:6 行,耗時 34ms。
MySQL使不使用索引與所查列無關(guān),只與索引本身,where條件,order by 字段,group by 字段有關(guān)。索引的作用一個是查找,一個是排序。

5)業(yè)務(wù)拆分

select * from order where status='S' and update_time < now-5min  limit 500
  • 拆分優(yōu)化:

隨著業(yè)務(wù)數(shù)據(jù)的增長 status='S'的數(shù)據(jù)基本占據(jù)數(shù)據(jù)的 90%以上,此時該條件無法走索引。我們可以結(jié)合業(yè)務(wù)特征,對數(shù)據(jù)獲取按日期進行拆分。

date = now; minDate = now - 10 days
while(date > minDate) {
select * from order where order_date={#date} and status='S' and update_time < now-5min limit 500
date = data + 1
}

?3、數(shù)據(jù)庫結(jié)構(gòu)優(yōu)化

1)范式優(yōu)化:表的設(shè)計合理化(符合 3NF),比如消除冗余(節(jié)省空間);

2)反范式優(yōu)化:比如適當加冗余等(減少 join)

3)拆分表:分區(qū)將數(shù)據(jù)在物理上分隔開,不同分區(qū)的數(shù)據(jù)可以制定保存在處于不同磁盤上的數(shù)據(jù)文件里。這樣,當對這個表進行查詢時,只需要在表分區(qū)中進行掃描,而不必進行全表掃描,明顯縮短了查詢時間,另外處于不同磁盤的分區(qū)也將對這個表的數(shù)據(jù)傳輸分散在不同的磁盤 I/O,一個精心設(shè)置的分區(qū)可以將數(shù)據(jù)傳輸對磁盤 I/O 競爭均勻地分散開。對數(shù)據(jù)量大的表可采取此方法,可按月建表分區(qū)。

?4、SQL 語句優(yōu)化

SQL 檢查狀態(tài)及分數(shù)計算邏輯

  • 盡量避免使用子查詢
  • 用 IN 來替換 OR
  • 讀取適當?shù)挠涗?LIMIT M,N,而不要讀多余的記錄
  • 禁止不必要的 Order By 排序
  • 總和查詢可以禁止排重用 union all
  • 避免隨機取記錄
  • 將多次插入換成批量 Insert 插入
  • 只返回必要的列,用具體的字段列表代替 select * 語句
  • 區(qū)分 in 和 exists
  • 優(yōu)化 Group By 語句
  • 盡量使用數(shù)字型字段
  • 優(yōu)化 Join 語句

?5、大表優(yōu)化

  • 分庫分表(水平、垂直)
  • 讀寫分離
  • 數(shù)據(jù)定期歸檔

三、原理剖析

MySQL 邏輯架構(gòu)圖:

圖片

?1、索引的優(yōu)缺點

1)優(yōu)點

  • 提高查詢語句的執(zhí)行效率,減少 IO 操作的次數(shù)
  • 創(chuàng)建唯一性索引,可以保證數(shù)據(jù)庫表中每一行數(shù)據(jù)的唯一性
  • 加了索引的列會進行排序,在使用分組和排序子句進行查詢時,可以顯著減少查詢中分組和排序的時間

2)缺點

  • 索引需要占物理空間
  • 創(chuàng)建索引和維護索引要耗費時間,這種時間隨著數(shù)據(jù)量的增加而增加
  • 當對表中的數(shù)據(jù)進行增刪改查時,索引也要動態(tài)的維護,這樣就降低了數(shù)據(jù)的更新效率

?2、索引的數(shù)據(jù)結(jié)構(gòu)

1)主鍵索引

圖片

2)普通索引

圖片

3)組合索引

圖片

?3、索引頁結(jié)構(gòu)

圖片

索引頁由七部分組成,其中 Infimum 和 Supremum 也屬于記錄,只不過是虛擬記錄,這里為了與用戶記錄區(qū)分開,還是決定將兩者拆開。

圖片

數(shù)據(jù)行格式

MySQL 有 4 種存儲格式:

  • Compact
  • Redundant (5.0 版本以前用,已廢棄)
  • Dynamic (MySQL5.7 默認格式)
  • Compressed

圖片

Dynamic 行存儲格式下,對于處理行溢出(當一個字段存儲長度過大時,會發(fā)生行溢出)時,僅存放溢出頁內(nèi)存地址。

?4、索引的設(shè)計原則

1)哪些情況適合建索引

  • 數(shù)據(jù)又數(shù)值有唯一性的限制

  • 頻繁作為 where 條件的字段

  • 經(jīng)常使用 group by 和 order by 的字段,既有 group by 又有 order by 的字段時,建議建聯(lián)合索引

  • 經(jīng)常作為 update 或 delete 條件的字段

  • 經(jīng)常需要 distinct 的字段

  • 多表連接時的字段建議創(chuàng)建索引,也有注意事項:

a. 連接表數(shù)量最好不要超過 3 張,每增加一張表就相當于增加了一次嵌套循環(huán),數(shù)量級增長會非常快

b. 對多表查詢時的 where 條件創(chuàng)建索引

c. 對連接字段創(chuàng)建索引,并且數(shù)據(jù)類型保持一致

  • 在確定數(shù)據(jù)范圍的情況下盡量使用數(shù)據(jù)類型較小的,因為索引會也會占用空間

  • 對字符串創(chuàng)建索引時建議使用字符串的前綴作為索引

  • 這樣做的好處是:

a. 能節(jié)省索引的空間;

b. 雖然不能精確定位,但是能夠定位到相同的前綴,然后通過主鍵查詢完整的字符串,這樣既能節(jié)省空間,又減少了字符串的比較時間,還能解決排序問題。

  • 區(qū)分度高(散列性高)的字段適合作為索引。

  • 在多個字段需要創(chuàng)建索引的情況下,聯(lián)合索引優(yōu)先于單值索引。使用最頻繁的列作為索引的最左側(cè)。

2)哪些情況下不需要使用索引

  • 在 where 條件中用不到的字段不需要。

  • 數(shù)據(jù)量小的不需要建索引,比如數(shù)據(jù)少于 1000 條。

  • 由大量重復(fù)數(shù)據(jù)的列上不要建索引,比如性別字段中只有男和女時。

  • 避免在經(jīng)常更新的表或字段中創(chuàng)建過多的索引。

  • 不建議主鍵使用無序的值作為索引,比如 uuid。

  • 不要定義冗余或重復(fù)的索引。

  • 例如:已經(jīng)創(chuàng)建了聯(lián)合索引 key(id,name)后就不需要再單獨建一個 key(id)的索引。

?5、索引優(yōu)化之 MRR

例如有一張表 user,主鍵 id,普通字段 age,為 age 創(chuàng)建非聚集索引,有一條查詢語句 select* user from table where age > 18;(注意查詢語句中的結(jié)果是*)

在 MySQL5.5 以及之前的版本中如何查詢呢?先通過非聚集索引查詢到 age>18 的第一條數(shù)據(jù),獲取到了主鍵 id;然后根據(jù)非聚集索引中的葉子節(jié)點存儲的主鍵 id 去聚集索引中查詢行數(shù)據(jù);根據(jù) age>18 的數(shù)據(jù)條數(shù)每次查詢聚集索引,這個過程叫做回表。

上述的步驟有什么缺點呢?如何 age>18 的數(shù)據(jù)非常多,那么每次回表都需要經(jīng)過 3 次 IO(假設(shè) B+樹的高度是 3),那么會導致查詢效率過低。

在 MySQL5.6 時針對上述問題進行了優(yōu)化,優(yōu)化器先查詢到 age>3 的所有數(shù)據(jù)的主鍵 id,對所有主鍵的 id 進行排序,排序的結(jié)果緩存到 read_rnd_buffer,然后通過排好序的主鍵在聚簇索引中進行查詢。

如果兩個主鍵的范圍相近,在同一個數(shù)據(jù)頁中就可以之間按照順序獲取,那么磁盤 io 的過程將會大大降低。這個優(yōu)化的過程就叫做 Multi Range Read(MRR) 多返回查詢。

?6、索引下推

假設(shè)有索引(name, age), 執(zhí)行 SQL: select * from tuser where name like '張%' and age=10;

圖片

MySQL 5.6 以后, 存儲引擎根據(jù)(name,age)聯(lián)合索引,找到,由于聯(lián)合索引中包含列,所以存儲引擎直接在聯(lián)合索引里按照age=10過濾。按照過濾后的數(shù)據(jù)再一一進行回表掃描。

圖片

索引下推使用條件

  • 只能用于range、 ref、 eq_ref、ref_or_null訪問方法;

  • 只能用于InnoDB和 MyISAM存儲引擎及其分區(qū)表;

  • 對存儲引擎來說,索引下推只適用于二級索引(也叫輔助索引);

索引下推的目的是為了減少回表次數(shù),也就是要減少 IO 操作。對于的聚簇索引來說,數(shù)據(jù)和索引是在一起的,不存在回表這一說。

  • 引用了子查詢的條件不能下推;

  • 引用了存儲函數(shù)的條件不能下推,因為存儲引擎無法調(diào)用存儲函數(shù)。

?7、思考

1)MySQL 一張表到底能存多少數(shù)據(jù)?

2)為什么要控制單行數(shù)據(jù)大小?

3)優(yōu)化案例 4 中優(yōu)化前的 SQL 為什么走不到索引?

四、總結(jié)

拋開數(shù)據(jù)庫硬件層面,數(shù)據(jù)庫表設(shè)計、索引設(shè)計、業(yè)務(wù)代碼邏輯、分庫分表策略、數(shù)據(jù)歸檔策略都對 SQL 執(zhí)行效率有影響,我們只有在整個設(shè)計、開發(fā)、運維階段保持高度敏感、追求極致,才能讓我們系統(tǒng)的可用性、伸縮性不會隨著業(yè)務(wù)增長而劣化。?

責任編輯:張燕妮 來源: dbaplus社群
相關(guān)推薦

2021-07-30 07:28:16

SQL優(yōu)化日志

2019-07-29 16:34:44

物聯(lián)網(wǎng)網(wǎng)絡(luò)技術(shù)

2021-05-05 10:54:47

數(shù)據(jù)泄漏漏洞網(wǎng)絡(luò)攻擊

2021-07-12 07:31:22

重構(gòu)軟件行業(yè)

2021-12-29 07:18:20

重構(gòu)工具資源

2009-09-07 16:45:54

.NET代碼設(shè)計

2021-09-23 14:14:38

B端設(shè)計師團隊

2023-04-03 08:56:38

系統(tǒng)重構(gòu)應(yīng)用

2009-11-30 09:23:58

蘋果程序員

2011-03-30 13:17:56

網(wǎng)店商城數(shù)據(jù)庫

2018-05-01 07:16:20

2017-03-30 11:20:59

云存儲服務(wù)供應(yīng)商

2013-12-20 10:14:24

iBeacon蘋果NFC

2022-06-06 11:31:31

MySQL數(shù)據(jù)查詢

2017-11-27 14:36:00

2019-02-28 07:44:34

5G網(wǎng)絡(luò)運營商

2011-01-07 09:16:12

2012-03-05 09:58:30

2018-05-13 15:56:28

工業(yè)4.0制造業(yè)物聯(lián)網(wǎng)

2025-04-03 09:00:00

點贊
收藏

51CTO技術(shù)棧公眾號

国产在线精品免费| 日本久久成人网| 亚洲色图制服诱惑| 成人黄视频免费| 国产三级av片| 日本在线电影一区二区三区| 欧美一区二区黄| 无码精品a∨在线观看中文| 国产高清免费在线播放| 久久99国产精品久久99| 91精品国产91久久久久| 波多野结衣家庭教师在线观看| 一区二区三区四区精品视频 | 精品国产污污免费网站入口| 欧美性大战久久久久xxx| 久操视频在线| 久久久久久久久免费| 91免费视频国产| 在线观看日本视频| 亚洲网站啪啪| 日韩中文字幕亚洲| 中国黄色a级片| 狂野欧美xxxx韩国少妇| 欧洲国内综合视频| 黄色一级视频片| 最新av在线播放| 中文字幕va一区二区三区| 国产日韩欧美亚洲一区| 一级黄色a视频| 亚洲欧美日韩国产综合精品二区| 久久天堂电影网| jizz中文字幕| 亚洲午夜久久| 精品国产麻豆免费人成网站| 亚洲综合激情视频| av一区在线| 精品日韩视频在线观看| 99久久久精品视频| v片在线观看| 中文字幕成人在线观看| 日本欧美精品久久久| 手机看片1024日韩| 风流少妇一区二区| 超碰97在线人人| 97人妻人人澡人人爽人人精品| 视频精品一区二区| 日韩免费黄色av| 午夜影院免费在线观看| 国产精品美女| 91高清视频免费| 在线天堂中文字幕| 国产精品色网| 91精品国产成人www| 国产亚洲色婷婷久久99精品| 亚洲色图国产| 欧美人与性动交| 亚洲国产精品免费在线观看| 久久精品亚洲人成影院| 日韩中文字幕国产精品| 任我爽在线视频| 久久精品不卡| 欧美精品在线观看91| 男人操女人的视频网站| 欧美 日韩 国产 一区| 欧美成人黑人xx视频免费观看| 国产免费一区二区三区四区| 91精品91| 久久久久久网址| 国产成人在线观看网站| 久久久久欧美精品| 青草伊人久久| 午夜久久电影网| 久久久久久久久久久99| 欧产日产国产精品视频| 色成年激情久久综合| 嫩草影院国产精品| 日本一区二区中文字幕| 欧美一区二区三区影视| 人妻 丝袜美腿 中文字幕| 欧美日韩直播| 亚洲深夜福利视频| 性色国产成人久久久精品| 亚洲综合色网| 久久久久久伊人| 日韩在线视频不卡| 精品中文字幕一区二区小辣椒| 91亚洲精华国产精华| 黑人乱码一区二区三区av| 97成人超碰视| 中国成人在线视频| av免费不卡国产观看| 欧洲日韩一区二区三区| 国产成人强伦免费视频网站| 嫩草国产精品入口| 亚洲色图美腿丝袜| 欧美在线视频第一页| 亚洲区第一页| 成人精品久久一区二区三区| 亚洲乱码精品久久久久..| 久久久欧美精品sm网站| 蜜臀在线免费观看| 色偷偷偷在线视频播放| 欧美一区二区视频在线观看2022| 亚洲高清无码久久| 99久久.com| 91精品国产电影| 国产深喉视频一区二区| 26uuu色噜噜精品一区二区| 中文字幕一区二区三区四区五区人| 国产第一页在线视频| 欧美性大战久久久| 69亚洲乱人伦| 亚洲高清影视| 国产成+人+综合+亚洲欧洲 | 波多野结衣喷潮| 亚洲黄网站黄| 亚洲r级在线观看| 国产小视频在线播放| 亚洲午夜国产一区99re久久| 亚洲成人天堂网| 亚洲盗摄视频| 久久久久在线观看| 国产模特av私拍大尺度 | 91插插插插插插| 首页国产欧美久久| 国产欧美韩日| 午夜成年人在线免费视频| 欧美日韩一区二区在线视频| 色婷婷免费视频| 欧美午夜在线视频| 亚洲va欧美va国产综合久久| youjizz在线播放| 日韩欧美在线免费观看| 中文字幕在线永久| 国模 一区 二区 三区| 91亚洲va在线va天堂va国| 91社区在线观看| 色综合天天综合网国产成人综合天| 国产香蕉精品视频| 这里只有精品在线| 91美女高潮出水| 欧美r级在线| 欧美性猛交xxxx久久久| 国精产品一区一区三区免费视频| 亚洲视频精品| 国产精品日韩一区二区 | 日本久久一二三四| 国产97在线|亚洲| 韩国三级av在线免费观看| 一本一本大道香蕉久在线精品| 亚洲一区二区三区四区五区六区| 伊人久久婷婷| 国产伦精品一区二区三区四区免费 | 久久视频社区| 久久99精品久久久久久青青91| 国产乱码精品一区二三区蜜臂| 国产精品毛片大码女人| 国产美女18xxxx免费视频| 欧美国产美女| 91欧美激情另类亚洲| 中文字幕伦理免费在线视频| 日韩亚洲国产中文字幕欧美| 欧美黑吊大战白妞| 99麻豆久久久国产精品免费| 久章草在线视频| 成人情趣视频网站| 成人激情视频在线| 国产在线拍揄自揄拍视频 | 成人情趣片在线观看免费| 黄色一级片在线观看| 日韩午夜在线观看| 国产亚洲自拍av| 久久综合色鬼综合色| 亚洲第一中文av| 综合在线视频| 精品国产乱码久久久久久88av| 人狥杂交一区欧美二区| 亚洲欧美在线x视频| 亚洲一线在线观看| 亚洲中国最大av网站| 日本黄色特级片| 久久精品国产一区二区三 | 蜜桃免费一区二区三区| 精品三区视频| 欧美另类69精品久久久久9999| 日本激情视频网站| 欧美艳星brazzers| 久久久久国产精品夜夜夜夜夜| www一区二区| 国产福利精品一区二区三区| 韩日精品视频| 日韩精品欧美专区| 亚洲乱码一区| 国产精品久久久久久av福利软件 | 4444欧美成人kkkk| 天天在线视频色| 亚洲国产精品久久91精品| 中国精品一区二区| 亚洲第一福利一区| 中文字幕精品亚洲| av高清不卡在线| 色婷婷.com| 国产精品毛片| 成年人深夜视频| 成人3d动漫在线观看| 激情久久av| 国产亚洲观看| 国产精品久久久久久久久男| 91色在线看| 久久精品国产清自在天天线| 免费一级在线观看| 精品久久久久久久人人人人传媒| 一区二区视频免费| 欧美午夜电影在线| 国产亚洲欧美精品久久久www| 国产精品视频免费看| 亚洲一区二区三区无码久久| 国产精品一区二区91| 狠狠躁狠狠躁视频专区| 六月婷婷一区| 国产 日韩 欧美在线| 午夜免费一区| 樱花www成人免费视频| 免费成人结看片| 国模精品一区二区三区| 亚洲91网站| 亚洲自拍另类欧美丝袜| 国产精品成人国产| 国产97免费视| 成人性生活av| 欧美性在线观看| 中文av在线全新| 26uuu另类亚洲欧美日本一 | 性做久久久久久久久| 亚洲成人生活片| 1区2区3区精品视频| 国产成人精品视频免费| 国产日韩av一区| 91精品人妻一区二区三区| a美女胸又www黄视频久久| 逼特逼视频在线观看| 国产高清精品网站| 可以看的av网址| 国产精品主播直播| 亚洲三级在线视频| 国产一区二区三区观看| 亚洲日本黄色片| 精品写真视频在线观看| 亚洲激情在线看| 狠狠色丁香婷婷综合| 色戒在线免费观看| 久久精品国产**网站演员| 色婷婷综合网站| 狠狠色狠狠色综合系列| 波多野结衣在线免费观看| 狠狠色综合播放一区二区| 手机在线免费毛片| 国产69精品久久777的优势| 日本女人性视频| 成人黄色在线视频| 久久精品老司机| 国产嫩草影院久久久久| 国产在线免费看| 亚洲一区中文在线| 日韩av在线播| 在线视频一区二区三| 一区二区三区免费在线| 日韩欧美一二三四区| 亚洲国产精品无码久久| 日韩不卡在线观看| 国产人成在线视频| 久久久国产精品亚洲一区| 四虎影视成人| 国产91精品高潮白浆喷水| 日韩精品99| 国产原创欧美精品| 日韩免费成人| 欧美aaaaa喷水| 奇米影视亚洲| 国产精品一二三在线观看| 亚洲国产日韩欧美一区二区三区| 日韩激情免费视频| 蜜臀精品一区二区三区在线观看| www.欧美激情.com| 97se亚洲国产综合在线| 日韩影视一区二区三区| 一区二区三区久久久| 国产又大又黄又粗| 5月丁香婷婷综合| 日韩一级片免费看| 在线视频日本亚洲性| 色操视频在线| 日韩免费视频在线观看| 日韩在线观看一区二区三区| 欧美不卡三区| 午夜激情一区| 国产性生交xxxxx免费| 国产剧情在线观看一区二区 | 国产精品你懂的| 国产亚洲欧美精品久久久www| 色视频欧美一区二区三区| 国产毛片在线视频| 亚洲人成在线观看网站高清| 性欧美高清come| 国产精品久久综合av爱欲tv| 国产欧美三级电影| 中国成人亚色综合网站| 午夜宅男久久久| 第一页在线视频| 国产精品免费看片| 亚洲第一精品在线观看 | 国产精品亚洲第一区| 久久激情av| 9191国产视频| 美女www一区二区| 日韩一级视频在线观看| 亚洲资源中文字幕| 国产精品毛片久久久久久久av| 国产丝袜一区二区三区免费视频| 亚洲wwwww| 91日韩在线播放| 日韩久久视频| 成年人网站大全| 91蜜桃婷婷狠狠久久综合9色| 九九热只有精品| 777午夜精品免费视频| 国产精品久久久久久久龚玥菲| 性色av一区二区三区免费| 精品一区二区三区中文字幕在线| 午夜免费电影一区在线观看| 久久精品30| 中国黄色a级片| 精品久久在线播放| 欧美熟妇另类久久久久久不卡| 久久综合色影院| 精品久久在线| 色视频一区二区三区| 久久中文在线| 91中文字幕永久在线| 狠狠躁夜夜躁人人爽超碰91| 天天操天天操天天| 国内精品小视频| 岛国成人av| 久久精品国产sm调教网站演员| 国产成人精品免费看| 九九热只有精品| 精品国产3级a| aa国产成人| 久久久久久久久久久久久久一区| 一本久道久久综合狠狠爱| 先锋资源av在线| 黄色成人在线播放| 性xxxxbbbb| 日韩暖暖在线视频| 精品日本12videosex| 冲田杏梨av在线| 中文字幕中文在线不卡住| 国产在成人精品线拍偷自揄拍| 在线亚洲男人天堂| 日日夜夜一区| 毛片av在线播放| av一区二区三区在线| 韩国av免费观看| 精品视频www| 123成人网| 性生活免费观看视频| 国产成人午夜电影网| 国产午夜精品无码| 精品一区二区亚洲| 国产精成人品2018| mm131午夜| 成人99免费视频| 国产情侣免费视频| 久久视频在线直播| 老牛影视av一区二区在线观看| 日韩亚洲在线视频| 中文字幕在线播放不卡一区| 不卡的日韩av| 欧洲日本亚洲国产区| 99久久久久国产精品| 97精品人人妻人人| 欧洲在线/亚洲| 手机在线免费观看av| 明星裸体视频一区二区| 久久精品国产99国产精品| 精品无码m3u8在线观看| 亚洲色图激情小说| 清纯唯美激情亚洲| 北条麻妃视频在线| 一区二区免费视频| 国产高清自拍视频在线观看| 97人人做人人人难人人做| 性色一区二区三区| 国产午夜手机精彩视频| 亚洲人成电影网站| 欧美在线在线| 超碰在线97免费| 午夜精品久久一牛影视| 思思99re6国产在线播放| 精品国产aⅴ麻豆|