日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

select count(*)底层究竟干了啥么?

發布時間:2023/12/3 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 select count(*)底层究竟干了啥么? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉載自??select count(*)底層究竟干了啥么?

“SELECT COUNT( * ) FROM t” 是個再常見不過的 SQL 需求了。在 MySQL 的使用規范中,我們一般使用事務引擎 InnoDB 作為(一般業務)表的存儲引擎,在此前提下,COUNT( * )操作的時間復雜度為 O(N),其中 N 為表的行數。

而 MyISAM 表中可以快速取到表的行數。這些實踐經驗的背后是怎樣的機制,以及為什么需要/可以是這樣,就是此文想要探討的。

先來看一下概況: MySQL COUNT( * ) 在 2 種存儲引擎中的部分問題:

?INNODBMYISAM
執行耗時O(N),其中 N 是表的行數,無論是否考慮 IO 因素O(1)
執行過程掃描全表,根據數據來計算行數取到表級 meta 信息的 row_count 值
流程執行過程如何?2 種存儲引擎在哪里開始分道揚鑣??
原因為何必須要掃表計算 count,而不能存儲一個 row_count 變量為何可以記錄 count 變量?
問題Count 值如何計算?存在哪里?Count 值如何獲取?

下面就帶著這些問題,以 InnoDB 存儲引擎為主來進行討論。

?

一、InnoDB 全表 COUNT( * )

主要問題:

  • 執行過程是怎樣的?
  • 如何計算 count?影響 count 結果的因素有哪些?
  • count 值存在哪里?涉及的數據結構是怎樣的?
  • 為什么 InnoDB 只能通過掃表來實現 count( * )?(見本文最后的問題)
  • 全表COUNT( * )作為 table scan 類型操作的一個 case,有什么風險?
  • COUNT(* )操作是否會像“SELECT * ”一樣可能讀取大字段涉及的溢出頁?
  • 1. 執行框架 – 循環: 讀取 + 計數

    1.1 基本結論

  • 全表掃描,一個循環解決問題。
  • 循環內: 先讀取一行,再決定該行是否計入 count。
  • 循環內是一行一行進行計數處理的。
  • 1.2 說明

    簡單 SELELCT-SQL 的執行框架,類比 INSERT INTO … SELECT 是同樣的過程。

    下面會逐步細化如何讀取與計數 ( count++ ) 。

    2. 執行過程

    引述: 執行過程部分,分為 4 個部分:

  • COUNT( * ) 前置流程: 從 Client 端發 SQL 語句,到 MySQL-Server 端執行 SELECT 之前,為后面的一些闡述做一鋪墊。
  • COUNT( * ) 流程: 簡要給出代碼層面的流程框架及 2 個核心步驟的重點調用棧部分。
  • 讀取一行: 可見性及 row_search_mvcc 函數,介紹可見性如何影響 COUNT( * ) 結果。
  • 計數一行: Evaluate_join_record 與列是否為空,介紹計數過程如何影響 COUNT( * ) 結果。
  • 如果讀者希望直接看如何進行 COUNT( * ),那么也可以忽略 (1),而直接跳到 (2) 開始看。

    2.1 COUNT( * ) 前置流程回憶 – 從 Client 端發 SQL 到 sub_select 函數

    為了使看到的調用過程不太突兀,我們還是先回憶一下如何執行到 sub_select 函數這來的:

  • MySQL-Client 端發送 SQL 語句,根據 MySQL 通信協議封包發送。
  • Mysql-Server 端接收數據包,由協議解析出 command 類型 ( QUERY ) 及 SQL 語句 ( 字符串 ) 。
  • SQL 語句經過解析器解析輸出為 JOIN 類的對象,用于結構化地表達該 SQL 語句。

    PS: 這里的 JOIN 結構,不僅僅是純語法結構,而是已經進行了語義處理,粗略地說,匯總了表的列表 ( table_list )、目標列的列表 ( target_list )、WHERE 條件、子查詢等語法結構。

    在全表 COUNT( * )-case 中,table_list = [表“t”(別名也是“t”)],target_list = [目標列對象(列名為“COUNT( * )”)],當然這里沒有 WHERE 條件、子查詢等結構。

  • JOIN 對象有 2 個重要的方法: JOIN::optimize(), JOIN::exec(),分別用于進行查詢語句的優化 和 查詢語句的執行。
    • join->optimize(),優化階段 (稍后 myisam 下全表 count( * ) 操作會涉及這里的一點內容)。
    • join->exec(),執行階段 ( 重點 ),包含了 InnoDB 下全表count( * ) 操作的執行流程。
  • join->exec() 經過若干調用,將調用到 sub_select 函數來執行簡單 SQL,包括 COUNT( * ) 。
  • END of sub_select 。
  • 2.2 COUNT( * ) 流程 ( 于 sub_select 函數中 )

    上層的流程與代碼是比較簡單的,集中在 sub_select 函數中,其中 2 類函數分別對應于前面”執行框架”部分所述的 2 個步驟 – 讀取、計數。先給出結論如下:

  • 讀取一行:從相對頂層的 sub_select 函數經過一番調用,最終所有分支將調用到 row_search_mvcc 函數中,該函數就是用于從 InnoDB 存儲引擎所存儲的 B+-tree 結構中讀取一行到內存中的一個 buf (uchar * ) 中,待后續處理使用。

    這里會涉及行鎖的獲取、MVCC 及行可見性的問題。當然對 于 SELECT COUNT( * ) 這類快照讀而言,只會涉及 MVCC 及其可見性,而不涉及行鎖。詳情可跳至“可見性與 row_search_mvcc 函數”部分。

  • 計數一行: 代碼層面,將會在 evaluate_join_record 函數中對所讀取的行進行評估,看其是否應當計入 count 中 ( 即是否要 count++ )。

    簡單來說,COUNT(arg) 本身為 MySQL 的函數操作,對于一行來說,若括號內的參數 arg ( 某列或整行 ) 的值若不是 NULL,則 count++,否則對該行不予計數。詳情可跳至“ Evaluate_join_record 與列是否為空”部分。

  • 這兩個階段對 COUNT( * )結果的影響如下: (兩層過濾)

    ?微觀宏觀
    讀取一行過濾1過濾1
    row_search_mvcc函數決定語句將要能看到的那一行決定語句能看到多少行
    處理一行過濾2過濾2
    evaluate_join_record函數決定該行(NULL?)是否被計數決定可見行中計數多少行,即最終結果是多少行

    SQL 層流程框架相關代碼摘要如下:

    1210 enum_nested_loop_state1211 sub_select(JOIN *join, QEP_TAB *const qep_tab,bool end_of_records)1212 {1213?? DBUG_ENTER("sub_select");... ... // 此處省略1000字1265?? while (rc == NESTED_LOOP_OK && join->return_tab >= qep_tab_idx)1266?? {1267???? int error;// 第一步,從存儲引擎中獲取一行;1268???? if (in_first_read)1269???? {1270?????? in_first_read= false;// 第一步,首次讀取,掃描第一個滿足條件的記錄;// 初始化cursor,從”頭”掃描到某個位置// 類似: SELECT id FROM t LIMIT 1;1271?????? error= (*qep_tab->read_first_record)(qep_tab);1272???? }1273???? else// 第一步,后續讀取,在前次掃描的位置上繼續遍歷,找到一個滿足條件的記錄;// 類似: SELECT id FROM t WHERE id > $last_id LIMIT 1;1274?????? error= info->read_record(info);... ... // 此處省略1000字// 第二步,處理剛剛取出的一行1291?????? rc= evaluate_join_record(join, qep_tab);... ... // 此處省略1000字1303?? DBUG_RETURN(rc);1304 }

    Q: 代碼層面,第一步驟(讀取一行)有 2 個分支,為什么?

    A:從 InnoDB 接口層面考慮,分為 “讀第一行” 和 “讀下一行”,是 2 個不同的執行過程,讀第一行需要找到一個 ( cursor ) 位置并做一些初始化工作讓后續的過程可遞歸。

    正如我們如果用腳本/程序來進行逐行的掃表操作,實現上就會涉及下面 2 個 SQL:

    // SELECT id FROM t LIMIT 1; OR SELECT MIN(id)-1 FROM t; -> $last_id// SELECT id FROM t WHERE id > $last_id LIMIT 1;

    涉及到此例的代碼,SQL 層到存儲引擎層的調用關系,讀取階段的調用棧如下:(供參考)

    sub_select 函數中從 SQL 層到 InnoDB 層的函數調用關系:(同顏色、同縮進 表示同一層)???(*qep_tab->read_first_record) ()| -- > join_read_first(tab)| -- > tab->read_record.read_record=join_read_next;| -- > table->file->ha_index_init()| -- > handler::ha_index_init(uint idx, bool sorted)| -- > ha_innobase::index_init()| -- > table->file->ha_index_first()| -- > handler::ha_index_first(uint idx, bool sorted)| -- > ha_innobase::index_first()| -- > ha_innobase::index_read()| -- > row_search_mvcc()初始化cursor并將其放到一個有效的初始位置上;???info->read_record (info)| -- > join_read_next(info)| -- > info->table->file->ha_index_next(info->record))| -- > handler::ha_index_next(uchar * buf)| -- > ha_innobase::index_next(uchar * buf)| -- > general_fetch(buf, ROW_SEL_NEXT, 0)| -- > row_search_mvcc()“向前”移動一次cursor;

    我們可以看到,無論是哪一個分支的讀取,最終都殊途同歸于 row_search_mvcc 函數。

    以上是對 LOOP 中的代碼做一些簡要的說明,下面來看 row_search_mvcc 與 evaluate_join_record 如何輸出最終的 count 結果。

    2.3 行可見性及 row_search_mvcc 函數

    這里我們主要通過一組 case 和幾個問題來看行可見性對 COUNT( * ) 的影響。

    ?

    Q:對于“SELECT COUNT( * ) FROM t”或者“SELECT MIN(id) FROM t”操作,第一次的讀行操作讀到的是表 t 中 ( B+ 樹最左葉節點 page 內 ) 的最小記錄嗎?( ha_index_first 為何也調用 row_search_mvcc 來獲取最小 key 值?)

    A:不一定。即使是 MIN ( id ) 也不一定就讀取的是 id 最小的那一行,因為也同樣有行可見性的問題,實際上 index_read 取到的是 當前事務內語句可見的最小 index 記錄。這也反映了前面提到的 join_read_first 與 join_read_next “殊途同歸”到 row_search_mvcc 是理所應當的。

    Q:針對圖中最后一問,如果事務 X 是 RU ( Read-Uncommitted ) 隔離級別,且 C-Insert ( 100 ) 的完成是在 X-count( * ) 執行過程中 ( 僅掃描到 5 或 10 這條記錄 ) 完成的,那么 X-count( * ) 在事務 C-Insert ( 100 ) 完成后,能否在之后的讀取過程中看到 100 這條記錄呢?

    A:MySQL 采取”讀到什么就是什么”的策略,即 X-count( * ) 在后面可以讀到 100 這條記錄。

    2.4 evaluate_join_record 與列是否為空

    Q:某一行如何計入 count?

    A:兩種情況會將所讀的行計入 count:

  • 如果 COUNT 函數中的參數是某列,則會判斷所讀行中該列定義是否 Nullable 以及該列的值是否為 NULL;若兩者均為是,則不會計入 count,否則將計入 count。
    • e.g. SELECT COUNT(col_name) FROM t
    • col_name 可以是主鍵、唯一鍵、非唯一鍵、非索引字段
  • 如果 COUNT 中帶有 * ,則會判斷這部分的整行是否為 NULL,如果判斷參數為 NULL,則忽略該行,否則 count++。

    ?

    • e.g-1. SELECT COUNT(*) FROM t
    • e.g-2. SELECT COUNT(B.*) FROM A LEFT JOIN B ON A.id = B.id

    Q: 特別地,對于 SELECT COUNT(id) FROM t,其中 id 字段是表 t 的主鍵,則如何?

    A:效果上等價于 COUNT( * )。因為無論是 COUNT( * ),還是 COUNT ( pk_col ) 都是因為有主鍵從而充分斷定索取數據不為 NULL,這類 COUNT 表達式可以用于獲取當前可見的表行數。

    Q: 用戶層面對 InnoDB COUNT( * ) 的優化操作問題

    A:這個問題是業界熟悉的一個問題,掃描非空唯一鍵可得到表行數,但所涉及的字節數可能會少很多(在表的行長與主鍵、唯一鍵的長度相差較多時),相對的 IO 代價小很多。

    相關調用棧參考如下:

    參考一:evaluate_join_record()| -- > rc= (*qep_tab->next_select)(join, qep_tab+1, 0);| -- > end_send_group(...)| -- > init_sum_functions(join->sum_funcs, join->sum_funcs_end[idx+1]))| -- > (*func_ptr)->reset_and_add()| -- > Item_sum::aggregator_clear()| -- > Item_sum::aggregator_add()| -- > update_sum_func(Item_sum **func_ptr)| -- > (*func_ptr)->add()| -- > Item_sum::aggregator_add()參考二: (Item_sum::aggregator_add)((Item_sum *) (*func_ptr))->aggregator_add()| -- > (Item_sum *)this->aggr->add()| -- > ((Aggregator_simple *) aggr)->item_sum->add()| -- > if (! aggr->arg_is_null(false))| ------ > ((Item_sum_count *)aggr->item_sum)->count++;

    ?

    二、數據結構:

    Q:count 值存儲在哪個內存變量里?

    **A: **SQL 解析后,存儲于表達 COUNT( * ) 這一項中,((Item_sum_count*)item_sum)->count

    如下圖所示回顧我們之前“COUNT( * )前置流程”部分提到的 JOIN 結構。

    ?

    即 SQL 解析器為每個 SQL 語句進行結構化,將其放在一個 JOIN 對象 ( join ) 中來表達。在該對象中創建并填充了一個列表 result_field_list 用于存放結果列,列表中每個元素則是一個結果列的 ( Item_result_field* ) 對象 ( 指針 ) 。

    在 COUNT( * )-case 中,結果列列表只包含一個元素,( Item_sum_count: public Item_result_field ) 類型對象 ( name = “COUNT( * )”),其中該類所特有的成員變量 count即為所求。

    ?

    三、MyISAM 全表 COUNT( * )

    由于 MyISAM 引擎并不常用于實際業務中,僅做簡要描述如下:

  • MyISAM-COUNT( * ) 操作是 O(1) 時間復雜度的操作。
  • 每張 MyISAM 表中存放了一個 meta 信息-count 值,在內存中與文件中各有一份,內存中的 count 變量值通過讀取文件中的 count 值來進行初始化。
  • SELECT COUNT( * ) FROM t?會直接讀取內存中的表 t 對應的 count 變量值。
  • 內存中的 count 值與文件中的 count 值由寫操作來進行更新,其一致性由表級鎖來保證。
  • 表級鎖保證的寫入串行化使得,同一時刻所有用戶線程的讀操作要么被鎖,要么只會看到一種數據狀態。
  • ?

    四、幾個問題

    Q:MyISAM 與 InnoDB 在 COUNT( * ) 操作的執行過程在哪里開始分道揚鑣?

    • 共性:共性存在于 SQL 層,即 SQL 解析之后的數據結構是一致的,count 變量都是存在于作為結果列的 Item_sum_count 類型對象中;返回給客戶端的過程也類似 – 對該 count 變量進行賦值并經由 MySQL 通信協議返回給客戶端。
    • 區別:InnoDB 的 count 值計算是在 SQL 執行階段進行的;而 MyISAM 表本身在內存中有一份包含了表 row_count 值的 meta 信息,在 SQL 優化階段通過存儲引擎的標記給優化器一個 hint,表明該表所用的存儲引擎保存了精確行數,可以直接獲取到,無需再進入執行器。

    ?

    Q:InnoDB 中為何無法向 MyISAM 一樣維護住一個 row_count 變量?

    A:從 MVCC 機制與行可見性問題中可得到原因,每個事務所看到的行可能是不一樣的,其 count( * ) 結果也可能是不同的;反過來看,則是 MySQL-Server 端無法在同一時刻對所有用戶線程提供一個統一的讀視圖,也就無法提供一個統一的 count 值。

    PS: 對于多個訪問 MySQL 的用戶線程 ( COUNT( * ) ) 而言,決定它們各自的結果的因素有幾個:

  • 一組事務執行前的數據狀態(初始數據狀態)。
  • 有時間重疊的事務們的執行序列 (操作時序,事務理論表明 并發事務操作的可串行化是正確性的必要條件)。
  • 事務們各自的隔離級別(每個操作的輸入)。
  • 其中 1、2 對于 Server 而言都是全局或者說可控的,只有 3 是每個用戶線程中事務所獨有的屬性,這是 Server 端不可控的因素,因此 Server 端也就對每個 COUNT( * ) 結果不可控了。

    Q:InnoDB-COUNT( * ) 屬 table scan 操作,是否會將現有 Buffer Pool 中其它用戶線程所需熱點頁從 LRU-list 中擠占掉,從而其它用戶線程還需從磁盤 load 一次,突然加重 IO 消耗,可能對現有請求造成阻塞?

    A:MySQL 有這樣的優化策略,將掃表操作所 load 的 page 放在 LRU-list 的 oung/old 的交界處 ( LRU 尾部約 3/8 處 )。這樣用戶線程所需的熱點頁仍然在 LRU-list-young 區域,而掃表操作不斷 load 的頁則會不斷沖刷 old 區域的頁,這部分的頁本身就是被認為非熱點的頁,因此也相對符合邏輯。

    PS: 個人認為還有一種類似的優化思路,是限定掃描操作所使用的 Buffer Pool 的大小為 O(1) 級別,但這樣做需要付出額外的內存管理成本。

    Q:InnoDB-COUNT( * ) 是否會像 SELECT * FROM t 那樣讀取存儲大字段的溢出頁(如果存在)?

    A:否。因為 InnoDB-COUNT( * ) 只需要數行數,而每一行的主鍵肯定不是 NULL,因此只需要讀主鍵索引頁內的行數據,而無需讀取額外的溢出頁。

    本文作者:賈春生

    總結

    以上是生活随笔為你收集整理的select count(*)底层究竟干了啥么?的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    国产精品久久久久毛片大屁完整版 | 日韩av高清 | 免费合欢视频成人app | 又黄又刺激又爽的视频 | 国产黄色片在线免费观看 | 日韩高清 一区 | 免费观看一区二区 | 国产馆在线播放 | 欧美日本中文字幕 | 高清久久久 | 日韩一区二区在线免费观看 | 婷婷激情五月 | 97操碰 | 在线观看av免费 | 国产精品美女久久久 | 亚洲久草在线视频 | 国产在线精品二区 | 亚洲视频免费在线 | 丁香色婷婷| 射久久| 久草视频手机在线 | 亚洲精品综合在线观看 | 国产录像在线观看 | 亚洲综合欧美激情 | 久久久久久电影 | 国产在线999| 看片网站黄 | 日韩欧美亚州 | 91亚洲夫妻 | 日韩免费视频观看 | 亚洲美女在线一区 | 全黄网站 | 亚洲精品中文在线 | 激情深爱 | 久久经典国产 | 日韩中文在线电影 | 日韩另类在线 | 日韩高清久久 | 中文字幕在线免费观看视频 | 久久精品牌麻豆国产大山 | 在线观看视频黄 | 五月婷婷综合在线视频 | 在线观看完整版 | 日韩高清av在线 | 国产黄a三级三级三级三级三级 | 成年人在线免费看视频 | 国产综合婷婷 | 亚洲乱码在线 | 国产亚洲午夜高清国产拍精品 | 国产精品一区二区62 | 美腿丝袜av | 去干成人网 | 国产精品视频 | 在线精品一区二区 | 欧美a免费 | 久久在线观看视频 | 色av婷婷| 九色精品在线 | 国产成人av在线 | 成年人国产在线观看 | 日本久久不卡视频 | 9999免费视频 | 国产在线播放一区 | 国产精品久久久久久久毛片 | 欧美激情精品久久久久 | 91久久奴性调教 | 久久国产精品成人免费浪潮 | 亚洲日本va在线观看 | 嫩嫩影院理论片 | 日韩视频免费看 | 99免费看片| 天天操天天舔天天爽 | 激情欧美xxxx | 久久久久亚洲精品成人网小说 | 中文久草 | 97成人精品视频在线观看 | 99精品国产一区二区 | 超碰日韩在线 | 国产中文字幕在线免费观看 | 超碰免费久久 | 97超碰超碰久久福利超碰 | 黄色小视频在线观看免费 | 日韩天天综合 | 碰超在线 | 91精品国产一区 | 久久久黄色 | 天天综合网入口 | 丁香婷婷深情五月亚洲 | 四虎影视8848dvd | 在线视频区 | 国产97视频在线 | 人人干狠狠干 | 亚洲精品大全 | 99久久综合精品五月天 | 91成人观看 | 免费av片在线 | 一 级 黄 色 片免费看的 | 深夜视频久久 | 五月婷婷综合激情 | 五月天婷亚洲天综合网鲁鲁鲁 | 欧美一级激情 | 久久精品99国产国产精 | 天天插天天干天天操 | 久久免费毛片 | 毛片的网址 | 在线看片一区 | 一二区精品 | 美女网站视频免费黄 | 九九久久精品视频 | 日韩一级片大全 | 国产精品私人影院 | 99精品在线免费观看 | 欧美一级片在线 | 亚洲精品黄色 | 久久综合色一综合色88 | 波多野结衣在线播放一区 | 极品久久久久 | av网站免费在线 | 亚洲国产小视频在线观看 | 精品一二区 | 欧美黑人猛交 | 五月丁香| 狠狠网站 | 久久黄色影院 | 国产一区高清在线 | 欧美一级欧美一级 | 一本色道久久综合亚洲二区三区 | 日韩黄色一区 | 亚洲国产影院 | 999久久久免费精品国产 | 欧洲在线免费视频 | 亚洲国产成人高清精品 | 国产精品视频 | 美女视频又黄又免费 | 久久久久www| 精品日韩av| 日韩精品欧美精品 | 香蕉久久国产 | 精品国产一区二区三区蜜臀 | 亚洲精品国产精品久久99热 | 国产999精品 | 久久精品国产一区 | 91视频大全| 精品国产亚洲一区二区麻豆 | 亚洲资源在线网 | 免费看av在线 | 最近2019年日本中文免费字幕 | 波多野结衣在线视频一区 | av手机版 | 中文字幕亚洲精品在线观看 | 天天视频色版 | 国产在线资源 | 欧美va天堂va视频va在线 | 美女禁18| 91豆麻精品91久久久久久 | 日韩电影中文字幕 | 亚洲精品国偷拍自产在线观看蜜桃 | 国产高清久久久久 | 免费高清在线视频一区· | 中文字幕在线观看免费 | 国产中文欧美日韩在线 | 国产粉嫩在线观看 | 久久久精品国产一区二区电影四季 | 久久久久久久久久福利 | 综合国产在线 | 夜夜躁日日躁狠狠久久88av | 正在播放国产一区二区 | 97成人免费视频 | 国产少妇在线观看 | 国产一级做a | 91视频在线观看免费 | 日韩免费二区 | 国产1区2| 成人免费av电影 | 国产精品美女视频网站 | 欧美激情在线看 | 色综合色综合久久综合频道88 | 国产久草在线观看 | 久久久91精品国产一区二区三区 | 一区二区三区视频网站 | 国产精品国产亚洲精品看不卡15 | 在线免费黄网站 | 国内精品久久久久影院日本资源 | 激情电影在线观看 | 国产在线成人 | 日韩国产精品一区 | 91亚洲精品视频 | 久久国产精品偷 | japanesexxxhd奶水 国产一区二区在线免费观看 | 中文字幕一区二区在线播放 | 婷婷.com| 亚洲高清av | 中文字幕一区二区三 | 日韩视频一区二区 | 91麻豆精品国产91久久久久久久久 | 日韩欧美国产视频 | 日韩免费精品 | 国产精品视频不卡 | 91精品久久香蕉国产线看观看 | 黄色片免费在线 | 日日躁夜夜躁aaaaxxxx | 色com | 在线视频日韩精品 | 久久婷亚洲五月一区天天躁 | 亚洲第一区在线观看 | 中文字幕中文字幕在线中文字幕三区 | 国产精品久久久久久久99 | 国产中文字幕亚洲 | www91在线观看| 五月婷婷六月丁香 | 午夜精品一区二区国产 | 97超级碰| 日本久久久久久久久 | 91久久久国产精品 | 超碰在线99 | 日韩av在线高清 | 久草在线视频看看 | 国产高清永久免费 | 91精品国产综合久久久久久久 | 亚洲精品午夜一区人人爽 | 久久久久久久久久电影 | 国产精品久久久久久久久久了 | avwww在线观看 | 久草精品视频 | 国产视频在线看 | 久久丁香 | 999一区二区三区 | 久久精品网址 | 97影视| 亚洲免费在线播放视频 | 鲁一鲁影院| 99久久精品国产欧美主题曲 | 91成人网在线播放 | 国产69久久精品成人看 | 欧美a级一区二区 | 992tv成人免费看片 | 欧美性高跟鞋xxxxhd | 国产二区电影 | 欧美一级视频免费 | 国产精品国产毛片 | 成人久久精品视频 | 成人午夜影院在线观看 | 91视频久久| 狠狠干干 | 黄色软件大全网站 | 天天干天天操天天操 | 香蕉久久久久 | 正在播放国产精品 | 精品亚洲国产视频 | 亚洲一级片在线观看 | 成人黄色一级视频 | 国产一区二区三区视频在线 | 免费看成人 | 婷婷丁香狠狠爱 | 999在线视频 | 黄色三级网站 | 精品黄色片| 国产98色在线 | 日韩 | 永久免费的啪啪网站免费观看浪潮 | 国产精品v a免费视频 | 小草av在线播放 | 中文字幕av最新更新 | 天天干,天天操 | 婷婷播播网 | 亚洲综合色丁香婷婷六月图片 | 91男人影院| 亚洲免费在线视频 | 久久不色 | 久久国产精品99久久久久久进口 | 久久手机免费观看 | 欧美精品一区二区在线观看 | 久久在线免费观看 | 97国产精品视频 | 在线视频久久 | 亚洲精品ww | 黄色三级免费看 | 三级av免费观看 | 亚洲国产视频直播 | 99热精品国产一区二区在线观看 | 不卡av电影在线观看 | 中文字幕麻豆 | 免费一级特黄录像 | 69亚洲乱 | 亚洲成人国产精品 | 国产91aaa| 在线观看a视频 | 久草精品资源 | 亚洲成年片 | 涩涩网站在线看 | 五月天婷亚洲天综合网鲁鲁鲁 | 亚洲 欧美日韩 国产 中文 | 视频成人永久免费视频 | 狠狠干天天色 | 久久草在线精品 | 又污又黄的网站 | 国产手机在线 | 国产精品久久久久久久久久久杏吧 | 成人不用播放器 | 欧美极品少妇xxxx | 日韩在线观看一区二区三区 | 天天干,天天干 | 99色视频在线 | 精品久久久久久久久久久院品网 | 欧美精品在线一区二区 | 日韩在线观看网址 | 免费日韩一级片 | 中文字幕精品三区 | 婷婷久久五月 | 9999在线视频 | 日韩在线观看视频一区二区三区 | 久久久久网站 | 日韩av片免费在线观看 | 亚洲精品久久久久中文字幕m男 | 91在线观看高清 | 免费在线观看av电影 | 日韩成人免费观看 | 日韩在线网址 | 日韩av一区二区三区在线观看 | av免费网站在线观看 | av电影亚洲 | 在线观看av免费观看 | 在线看v片 | 中文字幕在线观看第一区 | 国产分类视频 | 中文字幕日韩一区二区三区不卡 | 国产91精品看黄网站在线观看动漫 | 成人黄色一级视频 | www.亚洲视频 | 国产精品永久久久久久久www | 91视频在线观看大全 | 亚洲,播放| 97视频播放 | 另类老妇性bbwbbw高清 | 黄色aaa级片 | jizz18欧美18| 日韩欧美一区二区三区在线观看 | 97爱| 久久综合婷婷 | 99精品国产视频 | 欧美精品视 | www好男人| 蜜臀av在线一区二区三区 | 久久综合九色综合97婷婷女人 | 在线看一区 | 亚洲成人免费 | 久草在线视频看看 | 久久成年人视频 | 久久久久蜜桃 | av日韩中文 | 97伊人网| 日韩一区在线播放 | 九九精品久久 | 久久久久久高潮国产精品视 | 久久久久99精品成人片三人毛片 | 狠狠的干 | 国产91aaa | 亚洲精品乱码久久久久久蜜桃动漫 | 右手影院亚洲欧美 | 天天摸天天操天天舔 | 日韩中文字幕免费看 | 国产精品久久久免费 | 亚洲精品一区二区三区高潮 | 欧美孕交vivoestv另类 | 福利一区二区三区四区 | 色婷婷电影 | 精品日韩在线 | 在线观看免费日韩 | 麻豆久久一区二区 | 97视频免费在线观看 | 欧美日韩国产色综合一二三四 | av资源中文字幕 | 波多野结衣视频一区二区三区 | 国产精品第72页 | 永久精品视频 | 探花视频在线观看免费 | 久久夜色精品国产欧美乱极品 | 久热爱| 亚洲天堂网站 | 蜜臀av夜夜澡人人爽人人桃色 | 中文字幕乱码亚洲精品一区 | 日韩中文免费视频 | 国产香蕉av | 97超碰超碰久久福利超碰 | 午夜免费视频网站 | 亚洲视频第一页 | 婷婷 综合 色 | 色就色,综合激情 | 胖bbbb搡bbbb擦bbbb | www麻豆视频 | 九九九九免费视频 | 色综合久久88色综合天天免费 | 国产理论片在线观看 | 中文字幕在线免费 | 国产精品久99 | 国产一区二区手机在线观看 | 国产精品69av| 亚洲成a人片在线观看网站口工 | 青青久草在线视频 | 亚洲黄色成人网 | 九九九视频在线 | h动漫中文字幕 | 欧美激情视频久久 | 国产精品不卡在线观看 | 欧美日韩国产一二三区 | 香蕉视频免费在线播放 | 日韩视频在线观看免费 | 在线观看免费观看在线91 | 国产在线观看地址 | 国产在线不卡视频 | 中文字幕网站视频在线 | 九九久久婷婷 | 一区二区三区国产欧美 | 国产色综合天天综合网 | 最近2019中文免费高清视频观看www99 | 99精品视频在线观看 | 六月丁香激情综合色啪小说 | 成人av在线看 | 日批视频在线 | 久久a热6| 日韩免费电影一区二区 | 免费a级毛片在线看 | 亚洲激情小视频 | 伊人黄| 丁香午夜婷婷 | 超碰999| 久久99国产精品 | 成人午夜电影在线 | 精品福利视频在线观看 | 99久久久久 | 国产一二三四在线视频 | 日本午夜在线亚洲.国产 | 中文字幕日韩无 | 探花视频在线观看免费 | 黄色在线观看www | 国产午夜精品理论片在线 | 特级大胆西西4444www | 色偷偷88888欧美精品久久 | 久草在线观看视频免费 | 久久精品99国产精品酒店日本 | 亚洲va韩国va欧美va精四季 | 美女久久网站 | 波多野结衣日韩 | 一区二区三区日韩在线观看 | 中文字幕av在线免费 | 婷婷伊人综合 | 日韩成人免费在线观看 | 91视频免费看网站 | 色婷婷视频在线 | 免费在线黄网 | 色视频网站免费观看 | 亚洲精区二区三区四区麻豆 | 韩国三级一区 | 日韩精品中文字幕在线不卡尤物 | 久久精品欧美一 | 国产一区在线不卡 | 国产一区在线观看免费 | 中文字幕日韩一区二区三区不卡 | 99久久日韩精品免费热麻豆美女 | 国产1区在线 | 国内精品久久久久影院一蜜桃 | 日本三级全黄少妇三2023 | 97色狠狠| 麻豆国产在线播放 | 亚洲mv大片欧洲mv大片免费 | 成人毛片在线观看 | 久久在线视频精品 | 国内久久久 | 欧美韩国日本在线 | 国产成人精品一二三区 | 日韩二区三区在线 | av视屏在线播放 | 久久大视频 | 久久男人视频 | 亚洲国产999| 美女国产 | 欧美小视频在线观看 | 精品国产理论 | 欧美午夜久久 | 国产香蕉视频 | 久久免费a| 久草精品视频在线看网站免费 | 最新国产福利 | 六月天综合网 | 91成年人在线观看 | 中文字幕在线观看完整版 | 久久少妇av | 久久少妇 | 国产精品手机视频 | 精品三级av| 天天综合网久久综合网 | 国产香蕉久久精品综合网 | 四虎影视成人永久免费观看视频 | 成人av一二三区 | 在线观看韩国av | 亚洲精品视频在线观看免费视频 | 午夜av剧场 | 国产在线不卡视频 | 91福利视频久久久久 | 日韩三级在线观看 | 色五月色开心色婷婷色丁香 | 久久久影片 | 国产精品成人一区二区三区吃奶 | 中文字幕在线观看你懂的 | 999毛片 | 91在线成人 | 中文字幕在线日亚洲9 | 亚洲欧洲成人 | 蜜臀久久99精品久久久无需会员 | 黄色一级在线观看 | 九九日九九操 | 天天搞天天干天天色 | 天天操夜夜操天天射 | 99 久久久久 | 国产在线视频在线观看 | 国产传媒中文字幕 | 欧美久久综合 | 亚洲精品国产品国语在线 | 成人久久国产 | 天天操夜夜操天天射 | 特级黄色一级 | av一区二区在线观看中文字幕 | 国产亚洲精品久久网站 | 国产黄色a | 国产在线综合视频 | 国际精品久久 | 久久久久久久久久久国产精品 | 国产精品wwwwww | 91九色视频国产 | 超碰在线99 | 中文字幕欧美日韩va免费视频 | 国产精品久久久久久久久免费看 | av电影免费 | 久久免费国产视频 | 免费成人短视频 | 国产精品久久久久久久久久东京 | 国产一区二区在线看 | 最近中文字幕免费 | 成av在线 | 三上悠亚在线免费 | 日韩精品视频久久 | 欧美色噜噜噜 | 九九在线视频免费观看 | 日韩精品一区二区三区外面 | 啪啪激情网 | 91最新视频在线观看 | 最近日本字幕mv免费观看在线 | 亚洲精品网址在线观看 | 久久久91精品国产 | 四虎国产精品成人免费4hu | 日本黄色大片儿 | 国产精品一区二区三区四 | 月丁香婷婷 | 一本到在线 | 精品一区 在线 | 欧美 亚洲 另类 激情 另类 | 中文字幕免费在线看 | 97国产大学生情侣酒店的特点 | 国产精品中文字幕在线播放 | 黄色片视频免费 | 天堂网一区二区三区 | 国产综合在线观看视频 | 亚州av成人 | 天天操天天操天天操天天操天天操天天操 | 五月婷婷黄色 | 欧美精品在线观看 | 欧美日韩精品影院 | 黄色毛片一级片 | 久久久国产精品成人免费 | 国产三级精品三级在线观看 | 欧美视频一区二 | 国产精品视频永久免费播放 | 在线观看亚洲电影 | 久草精品电影 | 久久精品久久久久 | 久久视频这里有久久精品视频11 | 一色av| 99久久超碰中文字幕伊人 | 亚洲国产mv| 国产精品你懂的在线观看 | 国产真实在线 | 亚洲无人区小视频 | 国产又粗又猛又色 | 国产网红在线观看 | 国产又粗又硬又爽的视频 | 一区二区不卡视频在线观看 | 日韩a欧美 | 免费在线观看一区 | 欧美激情精品久久久久 | 91精品免费 | 国产高清av在线播放 | 久草在线视频国产 | 99r在线| 99免费在线视频 | 色综合天天综合网国产成人网 | 在线你懂的视频 | 国产a网站| 九九热.com | 丁香五月亚洲综合在线 | 97视频在线看 | 日韩在线中文字幕 | 波多野结衣在线中文字幕 | 亚洲美女视频在线 | 九九九电影免费看 | zzijzzij日本成熟少妇 | 亚洲国产精品资源 | 国产黄色视 | 久久99久国产精品黄毛片入口 | 国产在线播放一区二区三区 | 亚洲精品在线视频观看 | 夜夜夜影院 | 婷婷激情欧美 | 天天干干 | 国产夫妻性生活自拍 | 超碰97在线人人 | 九九热免费视频在线观看 | 欧美亚洲一区二区在线 | 免费国产亚洲视频 | 久草精品视频 | 日韩色在线 | 日韩电影一区二区三区在线观看 | 日韩三级视频在线观看 | 精品美女视频 | 四虎在线观看视频 | 九九欧美| 免费看亚洲毛片 | 91中文字幕永久在线 | 日韩成人精品一区二区三区 | 麻豆影视在线播放 | 国产福利免费看 | 91视频高清免费 | 国产最新在线 | 免费看片在线观看 | 六月婷婷色| 久久一视频 | 色噜噜噜噜 | 国产探花在线看 | 人人舔人人爽 | 在线电影日韩 | 久久久久久国产一区二区三区 | 欧美日韩免费看 | 久久婷婷一区 | 日韩精品免费专区 | 天堂麻豆| 9在线观看免费 | 日韩免费在线一区 | 国产99久久久国产精品 | 久久影院午夜论 | 99在线视频精品 | 精品国产一区二区三区在线观看 | 中文字幕免费观看全部电影 | 狠狠狠狠狠狠狠干 | 久久成电影 | 日本一区二区三区免费看 | 中日韩三级视频 | 国产韩国精品一区二区三区 | 成人免费一级 | 久久tv视频 | 久精品在线观看 | 午夜色站| 久久九精品 | 国产永久网站 | www日韩在线 | 亚洲成 人精品 | 中文字幕在线资源 | 在线看日韩av | 日本精品视频网站 | 五月开心综合 | 久久久精品 | 91精品一区二区三区久久久久久 | 国产性xxxx| 免费亚洲视频 | 亚洲伊人成综合网 | 天天操天天艹 | 久久综合色婷婷 | 天天操天天拍 | 久久r精品 | 福利精品在线 | 少妇18xxxx性xxxx片 | 国产又粗又猛又黄 | 日韩小视频| 色狠狠综合天天综合综合 | 99视频在线精品 | 97人人添人澡人人爽超碰动图 | 亚洲日本欧美在线 | 丁香六月中文字幕 | 中文网丁香综合网 | 久久久久国产精品视频 | 国内精品在线看 | 黄色特级一级片 | 麻豆传媒在线视频 | 播五月综合| 91手机电影 | 国产精品青草综合久久久久99 | 欧美日韩免费看 | www.久久com| 久久精品久久99 | 天天干天天拍天天操天天拍 | 丁香av在线 | 伊人成人激情 | 91视频免费网址 | 国产美女免费视频 | 在线观看一区二区视频 | 免费中文字幕 | 免费在线日韩 | 开心婷婷色 | 中文字幕视频一区 | 欧美精品亚洲精品日韩精品 | av久久久久久| 91中文在线视频 | 亚洲一区二区三区91 | 蜜桃av久久久亚洲精品 | 国产在线精| 黄色国产大片 | 亚洲欧美日韩国产一区二区 | 久久国产免费 | 国产精品一区在线观看你懂的 | 日韩精品国产一区 | 日韩欧美视频在线免费观看 | 波多野结衣精品 | 国产精品一区二区中文字幕 | 久久久免费精品国产一区二区 | 伊人婷婷| 成人在线免费av | 亚洲国产一二三 | 爱爱av在线 | 日韩中文字幕免费视频 | 精品视频区| 亚洲高清国产视频 | 网站免费黄 | 欧美精品久久久久久 | 久久久久亚洲国产 | 天天摸天天操天天舔 | a天堂中文在线 | 日韩在线观看av | 97av.com | 黄色大全免费网站 | 亚洲性xxxx| 91热精品 | 免费看黄在线观看 | 成年人app网址 | 日韩精品一卡 | 成人久久精品视频 | 亚洲乱亚洲乱亚洲 | 国产日韩一区在线 | 色综合久久中文综合久久牛 | 人人射人人插 | 日韩高清在线一区 | 国产精品中文字幕在线 | 中文字幕高清 | 国产精品96久久久久久吹潮 | 日本爱爱片 | 精品99在线 | 国产精品2018 | 精品久久久久久久久久久久久久久久 | 久久精品一区二 | 亚洲欧美日韩国产 | 久久精品99视频 | 国产精品99久久免费观看 | 欧美污污视频 | 奇米影音四色 | 久久免费99精品久久久久久 | 9797在线看片亚洲精品 | 国产精品欧美一区二区三区不卡 | 国产免费嫩草影院 | 日本久久综合网 | 亚州成人av在线 | 欧美激情第28页 | 五月天堂色| 一区二区三区韩国免费中文网站 | 欧美久久久久久久久久久久久 | 亚洲va天堂va欧美ⅴa在线 | www激情久久 | 国产91精品看黄网站在线观看动漫 | 欧美福利视频一区 | 99久久精品国产系列 | 99久免费精品视频在线观看 | 欧美日韩国产高清视频 | 久久99国产视频 | 久久久免费播放 | 国产午夜精品视频 | 久久久精品高清 | 亚洲aⅴ一区二区三区 | 人人看黄色 | 99久久精品久久久久久清纯 | 欧日韩在线视频 | 国产精品成人在线观看 | 日韩av福利在线 | 97av在线视频 | 国产亚洲精品久久久久久电影 | 国产精品九九久久99视频 | 日韩在线播放av | 操操操人人人 | 久久试看 | 免费进去里的视频 | av观看在线观看 | 成年人免费在线观看 | 黄色a一级片| 啪嗒啪嗒免费观看完整版 | 人人插人人爱 | 久久伦理网 | 久久福利国产 | 欧美日韩精品免费观看视频 | 最近中文字幕免费大全 | 伊人久久影视 | 日本三级吹潮在线 | 国产亚洲精品中文字幕 | 亚洲欧洲日韩在线观看 | 中文乱码视频在线观看 | 丝袜美女在线观看 | 亚洲精品国产精品乱码不99热 | 久久福利在线 | 黄色av网站在线免费观看 | 欧美精品一区二区三区四区在线 | 亚洲精品久久久久999中文字幕 | 国产精品久久久久久久久久久久午 | 综合精品在线 | 91高清免费| 亚洲最新av | 国内精品久久久久久久久久 | 在线视频黄 | 亚洲永久精品视频 | 午夜精品久久久久久久99 | 日本不卡视频 | 色网站在线免费 | 日韩一区精品 | 成人久久久精品国产乱码一区二区 | 国内三级在线观看 | 欧美午夜久久久 | 日韩午夜在线观看 | 日韩免费一级a毛片在线播放一级 | 草久久av| 蜜桃视频成人在线观看 | 久久精品影片 | 韩国在线视频一区 | 超碰99人人 | 天天干夜夜 | 日日操操| 91香蕉久久 | 波多野结衣视频在线 | 91精品国产电影 | 欧美日韩综合在线 | 国产视频一区在线播放 | 国产黄色免费观看 | 亚洲精品女人 | 国产成人精品久 | 久草在线视频首页 | 五月激情丁香婷婷 | 国产专区在线看 | 久久久久国产免费免费 | 国产免费观看高清完整版 | 日韩视频一区二区在线 | 国产成本人视频在线观看 | av电影亚洲 | 黄色成年网站 | 国产精品一区二区免费看 | 午夜av在线免费 | 久久精品—区二区三区 | 这里有精品在线视频 | 玖玖玖国产精品 | 992tv在线观看 | 久久怡红院 | ww亚洲ww亚在线观看 | 国产1区在线 | 在线视频观看成人 | 婷婷六月激情 | 色婷婷激情网 | 黄色av免费 | 丁香婷婷在线 | 五月婷婷狠狠 | 伊人久久婷婷 | 7777精品伊人久久久大香线蕉 | a黄色一级 | 亚洲精品一区二区久 | 国产精品1区2区在线观看 | 日韩va在线观看 | 久久精品网站视频 | 色网址99| 黄色三级视频片 | 午夜999 | 成在人线av| 国产一级做a爱片久久毛片a | 极品久久久久久久 | 亚洲在线色 | 日韩高清片 | www.天天色.com | 久久爽久久爽久久av东京爽 | 国产精品视频全国免费观看 | 黄色aaa毛片 | 久久国产免费 | 久久久久亚洲精品 | 激情久久伊人 | 久久精品com | 午夜精品福利一区二区 | 黄色在线观看免费网站 | 日日夜夜艹 | 人人看人人 | 免费看片日韩 | 最新av在线网站 | 久久成人资源 | 国产第页 | 久久三级毛片 | 国产午夜精品一区二区三区欧美 | 免费黄a大片 | 免费在线色电影 | 国产高清av | 中文字幕视频三区 | 国内毛片毛片 | 欧美一级片免费在线观看 | 五月天com| 国产精品va最新国产精品视频 | 黄色毛片观看 | 亚洲精品乱码久久久久 | 精品久久久久久久久久久久久久久久久久 | av网址aaa | 蜜臀aⅴ国产精品久久久国产 | 97人人澡人人爽人人模亚洲 | 特级西西人体444是什么意思 | 久久人人爽人人爽 | 欧美极品少妇xbxb性爽爽视频 | 精品久久久久久久久亚洲 | 99精品免费久久久久久久久 | 国产精品久久一区二区无卡 | 久久尤物电影视频在线观看 | 丁香在线观看完整电影视频 | 国产精品一级视频 | 久久久久久久久久久久电影 | 亚洲精品免费看 | 99久久99| 欧美成人精品在线 | 亚洲成人xxx | 国产美女免费观看 | 国产成人亚洲精品自产在线 | 欧美精品在线观看免费 | 欧美精品小视频 | 精品国产成人在线影院 | 九九九视频精品 | 中文字幕亚洲精品日韩 | 成人免费视频在线观看 | 国产在线高清视频 | 国产视频在线观看一区 | 国产精品一区二区三区四区在线观看 | 精品夜夜嗨av一区二区三区 | 888av| 婷婷久久五月天 | 色在线最新 | 久久a国产 | 在线视频精品 | 玖玖精品视频 | 亚洲国产合集 | 狠狠色狠狠色综合系列 | 欧美九九九 | 免费h精品视频在线播放 | 一本一道久久a久久精品蜜桃 | 久久黄色精品视频 | 中文字幕在线观看1 | 黄色小说免费观看 | 岛国精品一区二区 | 中文字幕 国产视频 | 永久免费在线 | 草草草影院 | www久久久 | 国产小视频国产精品 | 色多多在线观看 | 国产国语在线 | 日本在线观看中文字幕 | aaa亚洲精品一二三区 | 激情综合亚洲精品 | 波多野结衣一区三区 | 精品国产免费人成在线观看 | 在线观看成人网 | 亚洲精品国产精品国自产观看浪潮 | 亚州精品在线视频 | 精品国产精品久久一区免费式 | 91一区二区三区在线观看 | 久久国产精品99久久久久久老狼 | 日韩黄色免费电影 | 去看片| 999视频在线观看 | 一区在线观看视频 | 午夜私人影院久久久久 | 国内精品久久久久影院一蜜桃 | 久久99久久99 | 国产精品亚洲精品 | 日韩欧美在线观看一区 | 在线看岛国av | 亚洲电影网站 | 久久亚洲区 | 日韩女同一区二区三区在线观看 | 日日夜夜爱 | 五月天婷婷在线播放 | 午夜精品久久久久99热app | 欧美成人h版电影 | 国产视频精品视频 | 国产福利精品在线观看 | 人人看97| av福利资源 | 久久爱992xxoo | 色综合天天综合在线视频 |