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

輸入的查詢 SQL 語句,是如何執行的?

數據庫 MySQL
輸入一條語句,返回一個結果,卻不知道這條語句在 MySQL 內部的執行過程。

執行如下 SQL,我們看到的只是輸入一條語句,返回一個結果,卻不知道這條語句在 MySQL 內部的執行過程。

select * from where id ='1';

上圖給出的是 MySQL 的基本架構示意圖,從中你可以清楚地看到 SQL 語句在 MySQL 的各個功能模塊中的執行過程。大體來說,MySQL 可以分為 Server 層和存儲引擎層兩部分。

Server 層包括連接器、查詢緩存、分析器、優化器、執行器等,涵蓋 MySQL 的大多數核心服務功能,以及所有的內置函數(如日期、時間、數學和加密函數等),所有跨存儲引擎的功能都在這一層實現,比如存儲過程、觸發器、視圖等。

而存儲引擎層負責數據的存儲和提取。其架構模式是插件式的,支持 InnoDB、MyISAM、Memory 等多個存儲引擎。現在最常用的存儲引擎是 InnoDB,它從 MySQL 5.5.5 版本開始成為了默認存儲引擎。也可以通過指定存儲引擎的類型來選擇別的引擎,比如在 create table 語句中使用 engine=memory, 來指定使用內存引擎創建表。

一條 SQL 查詢的完整執行流程如上圖所示。

Server 服務層

連接器

連接數據庫最開始肯定是連接器。連接器負責跟客戶端建立連接、獲取權限、維持和管理連接。連接命令一般是這么寫的:

mysql -h$ip -P$port -u$user -p

輸完命令之后,你就需要在交互對話里面輸入密碼。雖然密碼也可以直接跟在 -p 后面寫在命令行中,但這樣可能會導致你的密碼泄露。如果你連的是生產服務器,強烈建議你不要這么做。

連接命令中的 mysql 是客戶端工具,用來跟服務端建立連接。在完成經典的 TCP 握手后,連接器就要開始認證你的身份,這個時候用的就是你輸入的用戶名和密碼。

  • 如果用戶名或密碼不對,你就會收到一個 "Access denied for user" 的錯誤,然后客戶端程序結束執行。
  • 如果用戶名密碼認證通過,連接器會到權限表里面查出你擁有的權限。之后,這個連接里面的權限判斷邏輯,都將依賴于此時讀到的權限。

這就意味著,一個用戶成功建立連接后,即使你用管理員賬號對這個用戶的權限做了修改,也不會影響已經存在連接的權限。修改完成后,只有再新建的連接才會使用新的權限設置。

連接完成后,如果你沒有后續的動作,這個連接就處于空閑狀態,你可以在 show processlist 命令中看到它。文本中這個圖是 show processlist 的結果,其中的 Command 列顯示為 “Sleep” 的這一行,就表示現在系統里面有一個空閑連接。

客戶端如果太長時間沒動靜,連接器就會自動將它斷開。這個時間是由參數 wait_timeout 控制的,默認值是 8 小時。

如果在連接被斷開之后,客戶端再次發送請求的話,就會收到一個錯誤提醒: Lost connection to MySQL server during query。這時候如果你要繼續,就需要重連,然后再執行請求了。

數據庫里面,長連接是指連接成功后,如果客戶端持續有請求,則一直使用同一個連接。短連接則是指每次執行完很少的幾次查詢就斷開連接,下次查詢再重新建立一個。

建立連接的過程通常是比較復雜的,所以我建議你在使用中要盡量減少建立連接的動作,也就是盡量使用長連接。但是全部使用長連接后,你可能會發現,有些時候 MySQL 占用內存漲得特別快,這是因為 MySQL 在執行過程中臨時使用的內存是管理在連接對象里面的。這些資源會在連接斷開的時候才釋放。所以如果長連接累積下來,可能導致內存占用太大,被系統強行殺掉(OOM),從現象看就是 MySQL 異常重啟了。

怎么解決這個問題呢?你可以考慮以下兩種方案。

  • 定期斷開長連接。使用一段時間,或者程序里面判斷執行過一個占用內存的大查詢后,斷開連接,之后要查詢再重連。
  • 如果你用的是 MySQL 5.7 或更新版本,可以在每次執行一個比較大的操作后,通過執行 mysql_reset_connection 來重新初始化連接資源。這個過程不需要重連和重新做權限驗證,但是會將連接恢復到剛剛創建完時的狀態。

查詢緩存

連接建立完成后,你就可以執行 select 語句了。執行邏輯就會來到第二步:查詢緩存。

MySQL 拿到一個查詢請求后,會先到查詢緩存看看,之前是不是執行過這條語句。之前執行過的語句及其結果可能會以 key-value 對的形式,被直接緩存在內存中。key 是查詢的語句,value 是查詢的結果。如果你的查詢能夠直接在這個緩存中找到 key,那么這個 value 就會被直接返回給客戶端。

如果語句不在查詢緩存中,就會繼續后面的執行階段。執行完成后,執行結果會被存入查詢緩存中。你可以看到,如果查詢命中緩存,MySQL 不需要執行后面的復雜操作,就可以直接返回結果,這個效率會很高。

但是大多數情況下我會建議你不要使用查詢緩存,為什么呢?因為查詢緩存往往弊大于利。

查詢緩存的失效非常頻繁,只要有對一個表的更新,這個表上所有的查詢緩存都會被清空。因此很可能你費勁地把結果存起來,還沒使用呢,就被一個更新全清空了。對于更新壓力大的數據庫來說,查詢緩存的命中率會非常低。除非你的業務就是有一張靜態表,很長時間才會更新一次。比如,一個系統配置表,那這張表上的查詢才適合使用查詢緩存。

好在 MySQL 也提供了這種 “按需使用” 的方式。你可以將參數 query_cache_type 設置成 DEMAND,這樣對于默認的 SQL 語句都不使用查詢緩存。而對于你確定要使用查詢緩存的語句,可以用 SQL_CACHE 顯式指定,像下面這個語句一樣:

mysql> select SQL_CACHE * from T where ID=10

需要注意的是,MySQL 8.0 版本直接將查詢緩存的整塊功能刪掉了,也就是說 8.0 開始徹底沒有這個功能了。

分析器

如果沒有命中查詢緩存,就要開始真正執行語句了。首先,MySQL 需要知道你要做什么,因此需要對 SQL 語句做解析。

分析器先會做 “詞法分析”。你輸入的是由多個字符串和空格組成的一條 SQL 語句,MySQL 需要識別出里面的字符串分別是什么,代表什么。

MySQL 從你輸入的 "select" 這個關鍵字識別出來,這是一個查詢語句。它也要把字符串 “T” 識別成 “表名 T”,把字符串 “ID” 識別成 “列 ID”。

做完了這些識別以后,就要做 “語法分析”。根據詞法分析的結果,語法分析器會根據語法規則,判斷你輸入的這個 SQL 語句是否滿足 MySQL 語法。

如果你的語句不對,就會收到 “You have an error in your SQL syntax” 的錯誤提醒,比如下面這個語句 select 少打了開頭的字母 “s”。

mysql> elect * from t where ID=1;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'elect * from t where ID=1' at line 1

一般語法錯誤會提示第一個出現錯誤的位置,所以你要關注的是緊接 “use near” 的內容。

優化器

經過了分析器,MySQL 就知道你要做什么了。在開始執行之前,還要先經過優化器的處理。

優化器是在表里面有多個索引的時候,決定使用哪個索引;或者在一個語句有多表關聯(join)的時候,決定各個表的連接順序。通常兩種執行方法的邏輯結果是一樣的,但是執行的效率會有不同,而優化器的作用就是決定選擇使用哪一個方案。優化器階段完成后,這個語句的執行方案就確定下來了,然后進入執行器階段。

執行 SQL 查詢的時候優化器主要執行如下任務:

  • 選擇最合適的索引;
  • 選擇表掃還是走索引;
  • 選擇表關聯順序;
  • 優化 where 子句;
  • 排除管理中無用表;
  • 決定 order by 和 group by 是否走索引;
  • 嘗試使用 inner join 替換 outer join;
  • 簡化子查詢,決定結果緩存;

MySQL 查詢優化器有幾個目標,但是其中最主要的目標是盡可能地使用索引,并且使用最嚴格的索引來消除盡可能多的數據行。

優化器試圖排除數據行的原因在于它排除數據行的速度越快,那么找到與條件匹配的數據行也就越快。如果能夠首先進行最嚴格的測試,查詢就可以執行地更快。

執行器

MySQL 通過分析器知道了你要做什么,通過優化器知道了該怎么做,于是就進入了執行器階段,開始執行語句。

開始執行的時候,要先判斷一下你對這個表 T 有沒有執行查詢的權限,如果沒有,就會返回沒有權限的錯誤,如下所示 (在工程實現上,如果命中查詢緩存,會在查詢緩存返回結果的時候,做權限驗證。查詢也會在優化器之前調用 precheck 驗證權限)。

mysql> select * from T where ID=10;
ERROR 1142 (42000): SELECT command denied to user 'b'@'localhost' for table 'T'

如果有權限,就打開表繼續執行。打開表的時候,執行器就會根據表的引擎定義,去使用這個引擎提供的接口。

比如我們這個例子中的表 T 中,ID 字段沒有索引,那么執行器的執行流程是這樣的:

  • 調用 InnoDB 引擎接口取這個表的第一行,判斷 ID 值是不是 10,如果不是則跳過,如果是則將這行存在結果集中;
  • 調用引擎接口取 “下一行”,重復相同的判斷邏輯,直到取到這個表的最后一行。
  • 執行器將上述遍歷過程中所有滿足條件的行組成的記錄集作為結果集返回給客戶端。

至此,這個語句就執行完成了。

對于有索引的表,執行的邏輯也差不多。第一次調用的是 “取滿足條件的第一行” 這個接口,之后循環取 “滿足條件的下一行” 這個接口,這些接口都是引擎中已經定義好的。

你會在數據庫的慢查詢日志中看到一個 rows_examined 的字段,表示這個語句執行過程中掃描了多少行。這個值就是在執行器每次調用引擎獲取數據行的時候累加的。

在有些場景下,執行器調用一次,在引擎內部則掃描了多行,因此引擎掃描行數跟 rows_examined 并不是完全相同的。

存儲引擎

通過 show engines; 查看引擎類型,可以看出來要用到事務只能用 InnoDB 引擎類型。

InnoDB 存儲引擎

InnoDB 是 MySQL 的默認事務型引擎,也是最重要、使用最廣泛的存儲引擎,并且有行級鎖定和外鍵約束。它被設計用來處理大量的短期 (short-lived) 事務,短期事務大部分情況是正常提交,很少會被回滾。InnoDB 的性能和自動崩潰恢復特性,使得它在非事務型存儲的需求中也很流行。除非有非常特別的原因需要使用其他的存儲引擎,否則應該優先考慮 InnoDB 引擎。

InnoDB 的適用場景 / 特性,有以下幾種:

  • 經常更新的表,適合處理多重并發的更新請求。
  • 支持事務。
  • 可以從災難中恢復(通過 bin-log 日志等)。
  • 外鍵約束。只有他支持外鍵。
  • 支持自動增加列屬性 auto_increment。

MyISAM 存儲引擎

MyISAM 提供了大量的特性,包括全文檢索、壓縮等,但不支持事務和行級鎖,支持表級鎖。 對于只讀的數據,或者表較小、可以忍受修復操作的場景,依然可以使用 MyISAM。

MyISAM 的適用場景 / 特性,有以下幾種:

  • 不支持事務的設計,但是并不代表著有事務操作的項目不能用 MyISAM 存儲引擎,完全可以在程序層進行根據自己的業務需求進行相應的控制。
  • 不支持外鍵的表設計。
  • 查詢速度很快,如果數據庫 insert 和 update 的操作比較多的話比較適用。
  • 整天 對表進行加鎖的場景。
  • MyISAM 極度強調快速讀取操作。
  • MyIASM 中存儲了表的行數,于是 SELECT COUNT (*) FROM TABLE 時只需要直接讀取已經保存好的值而不需要進行全表掃描。如果表的讀操作遠遠多于寫操作且不需要數據庫事務的支持,那么 MyIASM 也是很好的選擇。

MySQL 內建的其他存儲引擎

MySQL 還有一些特殊用途的存儲引擎,在一些特殊場景下用起來會很爽的。在 MySQL 新版本中,有些可能因為一些原因已經不再支持了,還有一些會繼續支持,但是需要明確地啟用后才能使用。

Archive 存儲引擎

Archive 引擎只支持 insert 和 select 操作,并且在 MySQL 5.1 之前連索引都不支持。

Archive 引擎會緩存所有的寫并利用 zlib 對插入的行進行壓縮,所以比 MyISAM 引擎的磁盤 I/O 更少。但是每次 select 查詢都需要進行全表掃描,所以 Archive 更適合日志和數據采集類應用,況且這類應用在做數據分析時往往需要全表掃描。

Archive 引擎支持行級鎖和專用的緩沖區,所以可以實現高并發的插入。在一個查詢開始直到返回表中存在的所有行之前,Archive 引擎會阻止其他的 select 執行,以實現一致性讀。另外,這也實現了批量插入在完成之前對讀操作是不看見的。

Blackhole 存儲引擎

Blackhole 引擎沒有實現任何的存儲機制,它會丟失所有插入的數據,不做任何保存。怪哉,豈不是一無用處?但是服務器會記錄 Blackhole 的日志,所以可以用于復制數據到備庫,或者只是簡單地記錄到日志。這種特殊的存儲引擎可以在一些特殊的復制架構和日志審核時發揮作用。

但這種存儲引擎的存在,至今還是有些難以理解。

CSV 存儲引擎

CSV 引擎可以將普通的 CSV 文件作為 MySQL 的表來處理,但這種表不支持索引。

CSV 引擎可以在數據庫運行時拷入或者拷出文件,可以將 Excel 等電子表格軟件中的數據存儲為 CSV 文件,然后復制到 MySQL 數據目錄下,就能在 MySQL 中打開使用。同樣,如果將數據寫入到一個 CSV 引擎表中,其他的外部程序也能立即從表的數據文件中讀取 CSV 格式的數據。

因此,CSV 引擎可以作為一種數據交換的機制,是非常有用的。

Memory 存儲引擎

如果需要快速地訪問數據,并且這些數據不會被修改,重啟以后丟失也沒有關系,那么使用 Memory 引擎是非常有用的。Memory 引擎至少比 MyISAM 引擎要快一個數量級,因為所有的數據都保存在內存中,不需要進行磁盤 I/O。Memory 引擎的表結構在重啟以后還會保留,但數據會丟失。

Memory 引擎在很多場景下可以發揮很好的作用:

  • 用于查找或者映射表,例如將郵箱和州名映射的表。
  • 用于緩存周期性聚合數據的結果。
  • 用于保存數據分析中產生的中間數據。

Memory 引擎支持 Hash 索引,因此查找非常快。雖然 Memory 的速度非常快,但還是無法取代傳統的基于磁盤的表。Memory 引擎是表級鎖,因此并發吸入的性能較低。

如果 MySQL 在執行查詢的過程中,需要使用臨時表來保存中間結果,內部使用的臨時表就是 Memory 引擎。如果中間結果太大超出了 Memory 的限制,或者含有 BLOB 或 TEXT 字段,則臨時表會轉換成 MyISAM 的引擎。

看了上面的說明,大家就會經常混淆 Memory 和臨時表了。臨時表是指使用 CREATE TEMPORARY TABLE 語句創建的表,它可以使用任何存儲引擎,因此和 Memory 不是一回事。臨時表只在單個連接中可見,當連接斷開時,臨時表也將不復存在。

關于臨時表和 Memory 引擎的那些事,可參考 MySQL?引擎特性?臨時表那些事兒。

MySQL 的存儲引擎及第三方存儲引擎,還有很多,在此就不一一介紹了,后續如有需要,再進一步來談談。

如何選擇合適的存儲引擎呢

這么多存儲引擎,真是眼花繚亂,我們該如何選擇呢?

大部分情況下,都會選擇默認的存儲引擎 ——InnoDB,并且這也是最正確的選擇,所以 Oracle 在 MySQL 5.5 版本時終于將 InnoDB 作為默認的存儲引擎了。

對于如何選擇合適的存儲引擎,可以簡單地歸納為一句話:” 除非需要用到某些 InnoDB 不具備的特性,并且沒有其他可以替代,否則都應該優先選擇 InnoDB 引擎”。

例如,如果要用到全文檢索,建議優先考慮 InnoDB 加上 Sphinx 的組合,而不是使用支持全文檢索的 MyISAM。當然,如果不需要用到 InnoDB 的特性,同時其他引擎的特性能夠更好地滿足需求,就可以考慮一下其他存儲引擎。

除非萬不得已,建議不要混合使用多種存儲引擎,否則可能帶來一系列復雜的問題,以及一些潛在的 bug 和邊界問題。

如果需要使用不同的存儲引擎,建議考慮從以下幾個因素進行衡量考慮。

  • 事務
  • 備份
  • 恢復
  • 特有的特性

其他查找引擎 SQL

通過下面的命令查看默認的存儲引擎。

mysql> show variables like '%storage_engine%';
--查看表的存儲引擎
show table status like "table_name" ;
責任編輯:趙寧寧 來源: 華為云開發者聯盟
相關推薦

2022-02-11 14:43:53

SQL語句C/S架構

2024-12-26 08:16:26

2019-11-06 09:30:35

SQL查詢語句數據庫

2022-04-10 23:42:33

MySQLSQL數據庫

2021-06-07 08:37:03

SQL 查詢語句

2024-12-17 06:20:00

MySQLSQL語句數據庫

2017-09-07 16:20:39

SQL查詢語句查詢優化

2010-04-19 09:37:22

Oracle查詢語句

2024-09-14 14:18:43

2013-10-29 16:27:23

MySQLSQL語句

2023-12-27 09:32:47

SQL語句數據

2010-11-04 09:43:46

LINQ to SQL

2010-09-06 13:17:19

SQL Server語句

2010-09-03 14:47:50

SQLSELECT語句

2010-09-25 14:59:54

SQL語句

2022-11-23 08:04:05

架構

2022-09-01 16:42:47

MySQL數據庫架構

2010-10-21 12:16:11

SQL Server查

2023-11-30 15:37:37

MySQL數據庫

2010-09-06 13:41:42

sql server語句
點贊
收藏

51CTO技術棧公眾號

久久久久久久一| 极品美鲍一区| av成人资源| 久久精品国产99久久6| 精品国产1区二区| 色香蕉在线观看| 日本免费福利视频| 伊人影院在线视频| 狠狠色狠狠色综合| 在线播放日韩专区| 成人中文字幕av| 男人的天堂在线免费视频| 日韩天天综合| 日韩国产中文字幕| 六月丁香激情网| 色呦呦视频在线| 亚洲精品123区| 亚洲成人av在线播放| 久久久天堂国产精品| 国产伦精品一区二区三区四区| 6080成人| 香蕉久久一区二区不卡无毒影院| 国产精品乱码一区二区三区| 国产亚洲欧美久久久久| 97一区二区国产好的精华液| 91久久精品网| 亚洲精品影院| 国产免费一区二区三区最新不卡| 午夜一区在线| 中文字幕欧美日韩精品| 久久精品国产露脸对白| 18av在线播放| 欧美精品色一区二区三区| 欧美极品xxx| 国产aⅴ夜夜欢一区二区三区| 成年人小视频在线观看| 女人天堂av在线播放| 国产一二精品视频| 欧美成人精品不卡视频在线观看| 日批视频在线看| 国内老司机av在线| 91小视频免费观看| 日本精品va在线观看| 亚洲精品成人无码| 99视频这里有精品| 亚洲国产一区二区三区青草影视| 久久精品成人一区二区三区蜜臀| 午夜精品免费观看| 先锋资源久久| 亚洲成年人影院在线| 日本r级电影在线观看| 女人让男人操自己视频在线观看| 久久精品一二三| 91免费综合在线| 亚欧视频在线观看| 成人激情电影在线| 日韩女优电影在线观看| 少妇性l交大片| 在线观看的黄色| 中文字幕一区免费在线观看| 国产精品嫩草在线观看| 亚洲福利在线观看视频| 视频一区二区三区入口| 精品少妇v888av| 国产精成人品免费观看| theporn国产在线精品| 欧美刺激午夜性久久久久久久| 最好看的中文字幕| 国产成人精品亚洲线观看| 91黄色小视频| 亚洲综合婷婷久久| 牛牛精品一区二区| 色综合中文综合网| 阿v天堂2018| 国内精品久久久久久野外| 92精品国产成人观看免费| 成人天堂噜噜噜| 国产午夜麻豆影院在线观看| 日韩中文字幕亚洲一区二区va在线 | 久久精品久久久久久国产 免费| 麻豆av免费看| 欧美成人家庭影院| 欧美日韩国产丝袜另类| 少妇高潮大叫好爽喷水| 成人av毛片| av在线一区二区| 亚洲va欧美va国产综合久久| 欧美一级淫片免费视频黄| 日韩二区三区四区| 成人一区二区电影| 日批视频在线播放| 欧美激情一区在线| 大西瓜av在线| 久久xxx视频| 亚洲成人动漫av| 日韩亚洲欧美一区二区| 欧美极品videos大乳护士| 欧美午夜片在线观看| 国产xxxxx在线观看| xxxx在线视频| 欧洲精品一区二区| 99视频免费播放| 欧美一区一区| 欧美人与禽zozo性伦| 日本爱爱免费视频| 欧洲av一区二区| 欧美在线高清视频| 91porn在线| 成人精品中文字幕| 国内偷自视频区视频综合| 国产无套内射又大又猛又粗又爽| 亚洲欧美网站在线观看| 日韩视频免费在线| 波多野结衣久久久久| 天天做天天爱天天综合网2021| 中文字幕一精品亚洲无线一区 | 五月天婷婷综合| 国产爆乳无码一区二区麻豆| 手机av免费在线| 一区二区三区波多野结衣在线观看| 免费看污污视频| 色综合天天色| 日韩精品在线私人| 亚洲ⅴ国产v天堂a无码二区| 日韩理论在线| 久久伊人色综合| 久久久久久久久久99| 老汉av免费一区二区三区| 久久精品人成| 国产在线美女| 精品粉嫩超白一线天av| 全网免费在线播放视频入口| 欧美日韩18| 欧美精品videosex性欧美| 丰满人妻一区二区三区四区| 六月丁香婷婷色狠狠久久| 六十路精品视频| 成年人视频免费在线观看| 欧美日韩国产精品专区| 大乳护士喂奶hd| 成人在线免费小视频| 日本久久精品视频| 日韩美女一级视频| 国产精品高潮呻吟| 欧美精品性生活| 欧美一级片网址| 日韩毛片在线看| 日韩欧美亚洲视频| 99久久综合色| 久久精品免费一区二区| 国产精品va视频| 亚洲精品国产精品乱码不99按摩 | 国产一区二区在线免费| 精品人妻aV中文字幕乱码色欲| 成人毛片老司机大片| 欧美亚洲另类久久综合| 成人国产免费电影| 一本大道久久精品懂色aⅴ| 日韩 中文字幕| 老**午夜毛片一区二区三区| 日韩久久在线| 91jq激情在线观看| 欧美日韩在线播放一区| 艳妇乳肉亭妇荡乳av| 外国成人激情视频| 成人久久久久久| 四虎影视成人| 亚洲第一区中文字幕| 一级片中文字幕| 国产精一品亚洲二区在线视频| 国产一区免费| 国产午夜精品久久久久免费视| 欧美浪妇xxxx高跟鞋交| 欧洲猛交xxxx乱大交3| 日韩制服丝袜av| 亚洲国产成人不卡| 日韩激情综合| 日本aⅴ大伊香蕉精品视频| www.视频在线.com| 日韩网站在线看片你懂的| 人妻无码一区二区三区免费| 亚洲少妇在线| 国产精品免费一区二区三区四区| 涩涩在线视频| 日韩在线视频二区| 欧美在线观看不卡| 成人aa视频在线观看| 天天综合五月天| 国产调教精品| 国产日韩欧美在线观看| 国产偷倩在线播放| 亚洲视频网站在线观看| 国产精品人人人人| 国产精品伦理一区二区| 亚洲色图久久久| 国产精品激情| 成人在线视频网址| 肉肉视频在线观看| 亚洲人成五月天| www.天天干.com| 在线亚洲欧美专区二区| 久久久久成人网站| 中文字幕巨乱亚洲| mm131国产精品| 999在线观看精品免费不卡网站| 亚洲国产一区二区三区在线播| h视频久久久| 国产在线视频一区| 成人美女大片| 亚洲片av在线| 免费观看成年人视频| 亚洲大片在线观看| 中日韩一级黄色片| 国产日本亚洲高清| 成人免费在线观看视频网站| 在线国产欧美| 久久青青草综合| 亚洲一区二区三区日本久久九| 国产成人精品免费久久久久| av在线电影院| 亚洲精美色品网站| 精品久久久久久亚洲综合网站 | 97超碰人人草| 最新中文字幕一区二区三区| 毛毛毛毛毛毛毛片123| 视频一区中文字幕| 免费在线观看日韩视频| 最新日韩欧美| 黄色一级片在线看| 你微笑时很美电视剧整集高清不卡| 日韩美女主播视频| 国产免费拔擦拔擦8x在线播放| 欧美理论电影在线播放| 欧美私人网站| 精品88久久久久88久久久| 国产精品特级毛片一区二区三区| 欧美性生活影院| 在线观看国产区| 在线观看91视频| 91视频在线视频| 一区二区在线观看av| 日韩av无码一区二区三区不卡| 国产九色精品成人porny| 亚洲制服在线观看| 国产在线播放一区| 亚洲免费在线播放视频| 亚洲美女色禁图| 九色自拍视频在线观看| 国产精品毛片在线| 动漫av网站免费观看| 欧美专区在线| 青春草在线视频免费观看| 日韩毛片视频| 男同互操gay射视频在线看| 一个色综合网| 日本中文字幕在线视频观看| 亚洲国产第一| 国产精品视频一区二区三区四区五区| 中文精品视频| 成年人视频在线免费| 欧美另类综合| 男人添女荫道口图片| 亚洲一区二区三区高清| 成人小视频在线看| 蜜桃精品视频在线| 亚洲熟妇av一区二区三区漫画| 夜夜嗨一区二区| 男人天堂999| 免费成人在线网站| av在线免费观看不卡| av激情亚洲男人天堂| 国产jjizz一区二区三区视频| 中国色在线观看另类| 欧美成人一二三区| 欧美日韩国产麻豆| 中文字字幕在线中文乱码| 岛国av一区二区在线在线观看| 天干夜夜爽爽日日日日| 3atv在线一区二区三区| 日本黄色中文字幕| 在线播放91灌醉迷j高跟美女 | 日本欧美黄色片| 伊人色**天天综合婷婷| 蜜桃传媒一区二区三区| 丝袜诱惑制服诱惑色一区在线观看| 国产日韩欧美久久| 成人免费黄色在线| 在线免费观看视频| 一区二区日韩av| 自拍偷拍校园春色| 日韩欧美的一区| porn视频在线观看| 欧美极品在线播放| 嫩草伊人久久精品少妇av杨幂| 成人三级视频在线观看一区二区| 中日韩免视频上线全都免费| 国产精品10p综合二区| 国产欧美高清视频在线| 清纯唯美一区二区三区| 蜜桃一区二区三区| 日韩中文在线字幕| 欧美一区不卡| 伊人再见免费在线观看高清版| 亚洲综合不卡| 男人添女人荫蒂国产| 国产精品污网站| 在线观看亚洲天堂| 欧美白人最猛性xxxxx69交| 亚洲精华国产精华精华液网站| 国产香蕉精品视频一区二区三区| 久热av在线| 欧美多人乱p欧美4p久久| 手机电影在线观看| 国产精品视频免费观看www| 日韩精品第一| 精品久久久久久一区二区里番| 久久99偷拍| 久久资源亚洲| 尤物在线精品| 一区二区三区国产好的精华液| 久久嫩草精品久久久久| 午夜时刻免费入口| 亚洲成av人片| 高h放荡受浪受bl| 亚洲精品www久久久| 在线观看中文字幕的网站| 国产日韩精品电影| 欧美一区电影| 午夜免费一区二区| 久久久久久久久伊人| 成人在线免费看视频| 亚洲精品有码在线| 天堂av在线网| 精品一区二区三区日本| 伊人久久成人| 涩视频在线观看| 久久九九久久九九| 国产精品视频免费播放| 日韩av在线免费看| 国产乱码精品一区二三赶尸艳谈| 国产高清精品一区二区| 亚洲婷婷在线| 午夜男人的天堂| 精品久久久久久亚洲国产300| 日本人妻丰满熟妇久久久久久| 欧美精品激情在线观看| 超碰成人在线免费| 日本精品久久久久久久久久| 成人免费观看男女羞羞视频| 久久久久久久久久免费视频 | 亚洲一区二区三区高清不卡| 亚洲av成人片色在线观看高潮| 亚洲不卡av一区二区三区| 性感美女视频一二三| 精品国产一区二区三区在线观看| 国产69精品久久久久按摩| 国产精品美女黄网| 亚洲大黄网站| 一本加勒比北条麻妃| 一区二区三区精品| 丁香花免费高清完整在线播放| 久久久久久av| 免费久久久久久久久| 亚洲综合av在线播放| 91日韩一区二区三区| 国产精品久久久久久人| 亚洲精品在线网站| 天堂中文av在线资源库| 日本一区二区三区精品视频| 久久精品国产99国产| 欧美成人精品一区二区免费看片 | 欧美一a一片一级一片| 日本在线看片免费人成视1000| 7m第一福利500精品视频| 2019中文亚洲字幕| 欧美做暖暖视频| 久久伊人蜜桃av一区二区| 伊人网中文字幕| 欧美日韩国产第一页| 六月丁香久久丫| 免费看污黄网站| 亚洲久本草在线中文字幕| 在线观看国产精品入口男同| 日韩精品视频免费| 欧美美女被草| 日韩精品在线中文字幕| 中文字幕av一区二区三区高| 国产 日韩 欧美 精品| 国产成人精品av在线| 欧美成熟视频| 精品人妻中文无码av在线| 日韩欧美一区二区视频| 在线日韩影院| 日本一级黄视频| 国产蜜臀av在线一区二区三区| 亚洲av无码乱码国产麻豆| 国产成人精品免费视频| 亚洲福利电影| 亚洲天堂一级片| 日韩一区二区三区精品视频|