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

聊聊 MySQL 的 Online DDL

數(shù)據(jù)庫 MySQL
在 DDL 執(zhí)行前或執(zhí)行時,其他事務可以獲取 MDL。由于需要用到 exclusive MDL,所以必須要等到其他占有 metadata lock 的事務提交或回滾后才能執(zhí)行上面兩個涉及到 MDL 的地方。

今天與大家一起分享一下 mysql DDL執(zhí)行方式。

一般來說MySQL分為DDL(定義)和DML(操作)。

  • DDL:Data Definition Language,即數(shù)據(jù)定義語言,那相關的定義操作就是DDL,包括:新建、修改、刪除等;相關的命令有:CREATE,ALTER,DROP,TRUNCATE截斷表內容(開發(fā)期,還是挺常用的),COMMENT 為數(shù)據(jù)字典添加備注。
  • DML:Data Manipulation Language,即數(shù)據(jù)操作語言,即處理數(shù)據(jù)庫中數(shù)據(jù)的操作就是DML,包括:選取,插入,更新,刪除等;相關的命令有:SELECT,INSERT,UPDATE,DELETE,還有 LOCK TABLE,以及不常用的CALL – 調用一個PL/SQL或Java子程序,EXPLAIN PLAN – 解析分析數(shù)據(jù)訪問路徑。

我們可以認為:

  • CREATE,ALTER ,DROP,TRUNCATE,定義相關的命令就是DDL;
  • SELECT,INSERT,UPDATE,DELETE,操作處理數(shù)據(jù)的命令就是DML;

DDL、DML區(qū)別:

  • DML操作是可以手動控制事務的開啟、提交和回滾的。
  • DDL操作是隱性提交的,不能rollback,一定要謹慎哦!

日常開發(fā)我們對一條DML語句較為熟悉,很多開發(fā)人員都了解sql的執(zhí)行過程,比較熟悉,但是DDL是如何執(zhí)行的呢,大部分開發(fā)人員可能不太關心,也認為沒必要了解,都交給DBA吧。其實不然,了解一些能盡量避開一些ddl的坑,那么下面帶大家一起了解一下DDL執(zhí)行的方式,也算拋磚引玉吧。如有錯誤,還請各位大佬們指正。

概述

在MySQL使用過程中,根據(jù)業(yè)務的需求對表結構進行變更是個普遍的運維操作,這些稱為DDL操作。常見的DDL操作有在表上增加新列或給某個列添加索引。

我們常用的易維平臺提供了兩種方式可執(zhí)行DDL,包括MySQL原生在線DDL(online DDL)以及一種第三方工具pt-osc。

下圖是執(zhí)行方式的性能對比及說明:

圖片

本文將對DDL的執(zhí)行工具之Online DDL進行簡要介紹及分析,pt-osc會專門再進行介紹。

介紹

MySQL Online DDL 功能從 5.6 版本開始正式引入,發(fā)展到現(xiàn)在的 8.0 版本,經(jīng)歷了多次的調整和完善。其實早在 MySQL 5.5 版本中就加入了 INPLACE DDL 方式,但是因為實現(xiàn)的問題,依然會阻塞 INSERT、UPDATE、DELETE 操作,這也是 MySQL 早期版本長期被吐槽的原因之一。

在MySQL 5.6版本以前,最昂貴的數(shù)據(jù)庫操作之一就是執(zhí)行DDL語句,特別是ALTER語句,因為在修改表時,MySQL會阻塞整個表的讀寫操作。例如,對表 A 進行 DDL 的具體過程如下:

  1. 按照表 A 的定義新建一個表 B
  2. 對表 A 加寫鎖
  3. 在表 B 上執(zhí)行 DDL 指定的操作
  4. 將 A 中的數(shù)據(jù)拷貝到 B
  5. 釋放 A 的寫鎖
  6. 刪除表 A
  7. 將表 B 重命名為 A

在以上 2-4 的過程中,如果表 A 數(shù)據(jù)量比較大,拷貝到表 B 的過程會消耗大量時間,并占用額外的存儲空間。此外,由于 DDL 操作占用了表 A 的寫鎖,所以表 A 上的 DDL 和 DML 都將阻塞無法提供服務。

如果遇到巨大的表,可能需要幾個小時才能執(zhí)行完成,勢必會影響應用程序,因此需要對這些操作進行良好的規(guī)劃,以避免在高峰時段執(zhí)行這些更改。對于那些要提供全天候服務(24*7)或維護時間有限的人來說,在大表上執(zhí)行DDL無疑是一場真正的噩夢。

因此,MySQL官方不斷對DDL語句進行增強,自MySQL 5.6 起,開始支持更多的 ALTER TABLE 類型操作來避免數(shù)據(jù)拷貝,同時支持了在線上 DDL 的過程中不阻塞 DML 操作,真正意義上的實現(xiàn)了 Online DDL,即在執(zhí)行 DDL 期間允許在不中斷數(shù)據(jù)庫服務的情況下執(zhí)行DML(insert、update、delete)。然而并不是所有的DDL操作都支持在線操作。到了 MySQL 5.7,在 5.6 的基礎上又增加了一些新的特性,關注公眾號:碼猿技術專欄,回復關鍵詞:1111 獲取阿里內部Java性能調優(yōu)手冊!比如:增加了重命名索引支持,支持了數(shù)值類型長度的增大和減小,支持了 VARCHAR 類型的在線增大等。但是基本的實現(xiàn)邏輯和限制條件相比 5.6 并沒有大的變化。

用法

ALTER TABLE tbl_name ADD PRIMARY KEY (column), ALGORITHM=INPLACE, LOCK=NONE;

ALTER 語句中可以指定參數(shù) ALGORITHM 和 LOCK 分別指定 DDL 執(zhí)行的算法模式和 DDL 期間 DML 的鎖控制模式。

  • ALGORITHM=INPLACE 表示執(zhí)行DDL的過程中不發(fā)生表拷貝,過程中允許并發(fā)執(zhí)行DML(INPLACE不需要像COPY一樣占用大量的磁盤I/O和CPU,減少了數(shù)據(jù)庫負載。同時減少了buffer pool的使用,避免 buffer pool 中原有的查詢緩存被大量刪除而導致的性能問題)。
  • 如果設置 ALGORITHM=COPY,DDL 就會按 MySQL 5.6 之前的方式,采用表拷貝的方式進行,過程中會阻塞所有的DML。另外也可以設置 ALGORITHEM=DAFAULT,讓 MySQL 以盡量保證 DML 并發(fā)操作的原則選擇執(zhí)行方式。
  • LOCK=NONE 表示對 DML 操作不加鎖,DDL 過程中允許所有的 DML 操作。此外還有 EXCLUSIVE(持有排它鎖,阻塞所有的請求,適用于需要盡快完成DDL或者服務庫空閑的場景)、SHARED(允許SELECT,但是阻塞INSERT UPDATE DELETE,適用于數(shù)據(jù)倉庫等可以允許數(shù)據(jù)寫入延遲的場景)和 DEFAULT(根據(jù)DDL的類型,在保證最大并發(fā)的原則下來選擇LOCK的取值)。

兩種算法

第一種 Copy:

  1. 按照原表定義創(chuàng)建一個新的臨時表;
  2. 對原表加寫鎖(禁止DML,允許select);
  3. 在步驟1 建立的臨時表執(zhí)行 DDL;
  4. 將原表中的數(shù)據(jù) copy 到臨時表;
  5. 釋放原表的寫鎖;
  6. 將原表刪除,并將臨時表重命名為原表。
  7. 從上可見,采用 copy 方式期間需要鎖表,禁止DML,因此是非Online的。比如:刪除主鍵、修改列類型、修改字符集,這些操作會導致行記錄格式發(fā)生變化(無法通過全量 + 增量實現(xiàn) Online)。

第二種 Inplace:

在原表上進行更改,不需要生成臨時表,不需要進行數(shù)據(jù)copy的過程。根據(jù)是否行記錄格式,又可分為兩類:

  • rebuild:需要重建表(重新組織聚簇索引)。比如 optimize table、添加索引、添加/刪除列、修改列 NULL/NOT NULL 屬性等;
  • no-rebuild:不需要重建表,只需要修改表的元數(shù)據(jù),比如刪除索引、修改列名、修改列默認值、修改列自增值等。
  • 對于 rebuild 方式實現(xiàn) Online 是通過緩存 DDL 期間的 DML,待 DDL 完成之后,將 DML 應用到表上來實現(xiàn)的。例如,執(zhí)行一個 alter table A engine=InnoDB; 重建表的 DDL 其大致流程如下:
  • 建立一個臨時文件,掃描表 A 主鍵的所有數(shù)據(jù)頁;
  • 用數(shù)據(jù)頁中表 A 的記錄生成 B+ 樹,存儲到臨時文件中;
  • 生成臨時文件的過程中,將所有對 A 的操作記錄在一個日志文件(row log)中;
  • 臨時文件生成后,將日志文件中的操作應用到臨時文件,得到一個邏輯數(shù)據(jù)上與表 A 相同的數(shù)據(jù)文件;
  • 用臨時文件替換表 A 的數(shù)據(jù)文件。

說明:

  1. 在 copy 數(shù)據(jù)到新表期間,在原表上是加的 MDL 讀鎖(允許 DML,禁止 DDL);
  2. 在應用增量期間對原表加 MDL 寫鎖(禁止 DML 和 DDL);
  3. 根據(jù)表 A 重建出來的數(shù)據(jù)是放在 tmp_file 里的,這個臨時文件是 InnoDB 在內部創(chuàng)建出來的,整個 DDL 過程都在 InnoDB 內部完成。對于 server 層來說,沒有把數(shù)據(jù)挪動到臨時表,是一個原地操作,這就是”inplace”名稱的來源。

使用Inplace方式執(zhí)行的DDL,發(fā)生錯誤或被kill時,需要一定時間的回滾期,執(zhí)行時間越長,回滾時間越長。

使用Copy方式執(zhí)行的DDL,需要記錄過程中的undo和redo日志,同時會消耗buffer pool的資源,效率較低,優(yōu)點是可以快速停止。

不過并不是所有的 DDL 操作都能用 INPLACE 的方式執(zhí)行,具體的支持情況可以在(在線 DDL 操作) 中查看。

以下是常見DDL操作:

圖片

官網(wǎng)支持列表:

圖片

執(zhí)行過程

Online DDL主要包括3個階段,prepare階段,ddl執(zhí)行階段,commit階段。下面將主要介紹ddl執(zhí)行過程中三個階段的流程。

1)Prepare階段:初始化階段會根據(jù)存儲引擎、用戶指定的操作、用戶指定的 ALGORITHM 和 LOCK 計算 DDL 過程中允許的并發(fā)量,這個過程中會獲取一個 shared metadata lock,用來保護表的結構定義。

  • 創(chuàng)建新的臨時frm文件(與InnoDB無關)。
  • 持有EXCLUSIVE-MDL鎖,禁止讀寫。
  • 根據(jù)alter類型,確定執(zhí)行方式(copy,online-rebuild,online-norebuild)。假如是Add Index,則選擇online-norebuild即INPLACE方式。
  • 更新數(shù)據(jù)字典的內存對象。
  • 分配row_log對象來記錄增量(僅rebuild類型需要)。
  • 生成新的臨時ibd文件(僅rebuild類型需要) 。
  • 數(shù)據(jù)字典上提交事務、釋放鎖。

注:Row log是一種獨占結構,它不是redo log。它以Block的方式管理DML記錄的存放,一個Block的大小為由參數(shù)innodb_sort_buffer_size控制,默認大小為1M,初始化階段會申請兩個Block。

2)DDL執(zhí)行階段:執(zhí)行期間的 shared metadata lock 保證了不會同時執(zhí)行其他的 DDL,但 DML 能可以正常執(zhí)行。

  • 降級EXCLUSIVE-MDL鎖,允許讀寫(copy不可寫)。
  • 掃描old_table的聚集索引每一條記錄rec。
  • 遍歷新表的聚集索引和二級索引,逐一處理。
  • 根據(jù)rec構造對應的索引項
  • 將構造索引項插入sort_buffer塊排序。
  • 將sort_buffer塊更新到新的索引上。
  • 記錄ddl執(zhí)行過程中產(chǎn)生的增量(僅rebuild類型需要)
  • 重放row_log中的操作到新索引上(no-rebuild數(shù)據(jù)是在原表上更新的)。
  • 重放row_log間產(chǎn)生dml操作append到row_log最后一個Block。

3)Commit階段:將 shared metadata lock 升級為 exclusive metadata lock,禁止DML,然后刪除舊的表定義,提交新的表定義。

  • 當前Block為row_log最后一個時,禁止讀寫,升級到EXCLUSIVE-MDL鎖。
  • 重做row_log中最后一部分增量。
  • 更新innodb的數(shù)據(jù)字典表。
  • 提交事務(刷事務的redo日志)。
  • 修改統(tǒng)計信息。
  • rename臨時idb文件,frm文件。
  • 變更完成。
  • 圖片

Online DDL 過程中占用 exclusive MDL 的步驟執(zhí)行很快,所以幾乎不會阻塞 DML 語句。

不過,在 DDL 執(zhí)行前或執(zhí)行時,其他事務可以獲取 MDL。由于需要用到 exclusive MDL,所以必須要等到其他占有 metadata lock 的事務提交或回滾后才能執(zhí)行上面兩個涉及到 MDL 的地方。

踩坑

前面提到 Online DDL 執(zhí)行過程中需要獲取 MDL,MDL (metadata lock) 是 MySQL 5.5 引入的表級鎖,在訪問一個表的時候會被自動加上,以保證讀寫的正確性。當對一個表做 DML 操作的時候,加 MDL 讀鎖;當做 DDL 操作時候,加 MDL 寫鎖。

為了在大表執(zhí)行 DDL 的過程中同時保證 DML 能并發(fā)執(zhí)行,前面使用了 ALGORITHM=INPLACE 的 Online DDL,但這里仍然存在死鎖的風險,問題就出在 Online DDL 過程中需要 exclusive MDL 的地方。

例如,Session 1 在事務中執(zhí)行 SELECT 操作,此時會獲取 shared MDL。由于是在事務中執(zhí)行,所以這個 shared MDL 只有在事務結束后才會被釋放。

# Session 1> START TRANSACTION;> SELECT * FROM tbl_name;# 正常執(zhí)行

這時 Session 2 想要執(zhí)行 DML 操作也只需要獲取 shared MDL,仍然可以正常執(zhí)行。

# Session 2> SELECT * FROM tbl_name;# 正常執(zhí)行

但如果 Session 3 想執(zhí)行 DDL 操作就會阻塞,因為此時 Session 1 已經(jīng)占用了 shared MDL,而 DDL 的執(zhí)行需要先獲取 exclusive MDL,因此無法正常執(zhí)行。

# Session 3> ALTER TABLE tbl_name ADD COLUMN n INT;# 阻塞

通過 show processlist 可以看到 ALTER 操作正在等待 MDL。

由于 exclusive MDL 的獲取優(yōu)先于 shared MDL,后續(xù)嘗試獲取 shared MDL 的操作也將會全部阻塞

+----+-----------------+------------------+------+---------+------+---------------------------------+-----------------+
| Id | User            | Host             | db   | Command | Time | State                           | Info            |│----+-----------------+------------------+------+---------+------+---------------------------------+-----------------+
| 11 | root            | 172.17.0.1:53048 | demo | Query   |    3 | Waiting for table metadata lock | alter table ... |+----+-----------------+------------------+------+---------+------+---------------------------------+-----------------+

到這一步,后續(xù)無論是 DML 和 DDL 都將阻塞,直到 Session 1 提交或者回滾,Session 1 占用的 shared MDL 被釋放,后面的操作才能繼續(xù)執(zhí)行。

上面這個問題主要有兩個原因:

  1. Session 1 中的事務沒有及時提交,因此阻塞了 Session 3 的 DDL
  2. Session 3 Online DDL 阻塞了后續(xù)的 DML 和 DDL

對于問題 1,有些ORM框架默認將用戶語句封裝成事務執(zhí)行,如果客戶端程序中斷退出,還沒來得及提交或者回滾事務,就會出現(xiàn) Session 1 中的情況。那么此時可以在 infomation_schema.innodb_trx 中找出未完成的事務對應的線程,并強制退出。

> SELECT * FROM information_schema.innodb_trx\G*************************** 1. row ***************************trx_id: 421564480355704trx_state: RUNNINGtrx_started: 2022-05-01 014:49:41trx_requested_lock_id: NULLtrx_wait_started: NULLtrx_weight: 0trx_mysql_thread_id: 9trx_query: NULLtrx_operation_state: NULLtrx_tables_in_use: 0trx_tables_locked: 0trx_lock_structs: 0trx_lock_memory_bytes: 1136trx_rows_locked: 0trx_rows_modified: 0trx_concurrency_tickets: 0trx_isolation_level: REPEATABLE READtrx_unique_checks: 1trx_foreign_key_checks: 1trx_last_foreign_key_error: NULLtrx_adaptive_hash_latched: 0trx_adaptive_hash_timeout: 0trx_is_read_only: 0trx_autocommit_non_locking: 0trx_schedule_weight: NULL1 row in set (0.0025 sec)

可以看到 Session 1 正在執(zhí)行的事務對應的 trx_mysql_thread_id 為 9,然后執(zhí)行 KILL 9 即可中斷 Session 1 中的事務。對于問題 2,在查詢很多的情況下,會導致阻塞的 session 迅速增多,對于這種情況,可以先中斷 DDL 操作,防止對服務造成過大的影響。也可以嘗試在從庫上修改表結構后進行主從切換或者使用 pt-osc 等第三方工具。

限制

  • 僅適用于InnoDB(語法上它可以與其他存儲引擎一起使用,如MyISAM,但MyISAM只允許algorithm = copy,與傳統(tǒng)方法相同);
  • 無論使用何種鎖(NONE,共享或排它),在開始和結束時都需要一個短暫的時間來鎖表(排它鎖);
  • 在添加/刪除外鍵時,應該禁用 foreign_key_checks 以避免表復制;
  • 仍然有一些 alter 操作需要 copy 或 lock 表(老方法),有關哪些表更改需要表復制或表鎖定,請查看官網(wǎng);
  • 如果在表上有 ON … CASCADE 或 ON … SET NULL 約束,則在 alter table 語句中不允許LOCK = NONE;
  • Online DDL會被復制到從庫(同主庫一樣,如果 LOCK = NONE,從庫也不會加鎖),但復制本身將被阻止,因為 alter 在從庫以單線程執(zhí)行,這將導致主從延遲問題。

官方參考資料:MySQL :: MySQL 5.7 Reference Manual :: 14.13.6 Online DDL Limitations

總結

本次和大家一起了解SQL的DDL、DML及區(qū)別,也介紹了Online DDL的執(zhí)行方式。

目前可用的DDL操作工具包括pt-osc,github的gh-ost,以及MySQL提供的在線修改表結構命令Online DDL。pt-osc和gh-ost均采用拷表方式實現(xiàn),即創(chuàng)建個空的新表,通過select+insert將舊表中的記錄逐次讀取并插入到新表中,不同之處在于處理DDL期間業(yè)務對表的DML操作。

到了MySQL 8.0 官方也對 DDL 的實現(xiàn)重新進行了設計,其中一個最大的改進是 DDL 操作支持了原子特性。另外,Online DDL 的 ALGORITHM 參數(shù)增加了一個新的選項:INSTANT,只需修改數(shù)據(jù)字典中的元數(shù)據(jù),無需拷貝數(shù)據(jù)也無需重建表,同樣也無需加排他 MDL 鎖,原表數(shù)據(jù)也不受影響。整個 DDL 過程幾乎是瞬間完成的,也不會阻塞 DML,不過目前8.0的INSTANT使用范圍較小,后續(xù)再對8.0的INSTANT做詳細介紹吧。

責任編輯:武曉燕 來源: 碼猿技術專欄
相關推薦

2019-08-27 20:30:38

MySQLOnline DDL數(shù)據(jù)庫

2021-11-17 08:11:35

MySQL

2023-11-09 11:56:28

MySQL死鎖

2022-11-26 08:16:26

2022-04-02 10:23:12

MySQL數(shù)據(jù)庫

2020-11-30 13:10:39

MySQL安全服務器

2021-06-03 19:13:06

MySQLJson數(shù)據(jù)

2017-07-07 17:11:21

MySQLDDL操作視圖

2022-09-20 10:44:06

MySQL 8.0數(shù)據(jù)庫DDL

2024-03-26 09:29:27

MySQLDDL

2022-02-20 21:35:43

MySQLDDL阻塞

2021-09-10 06:46:00

MySQL連接控制

2021-05-19 07:35:00

MySQL數(shù)據(jù)庫COUNT

2025-01-15 15:47:36

2020-05-06 22:07:53

UbuntuLinux操作系統(tǒng)

2011-03-21 13:10:01

OracleDDL鎖

2023-08-14 08:32:42

MySQL數(shù)據(jù)庫

2023-06-12 08:18:19

MySQLDDL數(shù)據(jù)

2025-04-07 03:00:00

MySQLDDLonline

2025-04-28 09:27:26

點贊
收藏

51CTO技術棧公眾號

欧美污视频网站| 亚洲天堂一区二区三区四区| 亚洲免费影院| 色噜噜夜夜夜综合网| 久久99国产综合精品女同| 免费高清一区二区三区| av手机天堂网| 给我免费播放日韩视频| 国产精品对白交换视频| 日韩av手机在线| 97人妻精品一区二区三区免费 | 亚洲国产精品久久久久秋霞不卡 | 91精品国产自产在线| 久久久久国产精品区片区无码| 麻豆传媒在线免费看| 五月综合久久| 亚洲综合激情网| 成人精品久久久| 国产三级在线观看完整版| 欧美aa免费在线| 高清不卡在线观看av| 久久亚洲一区二区三区四区五区高| 国产肥臀一区二区福利视频| 亚洲成熟女性毛茸茸| 91九色精品| 欧美日韩国产高清一区二区 | av伊人久久| 日韩欧美在线一区| 欧美日韩国产一二| 国产午夜免费福利| 亚洲aaa级| 一本色道久久综合亚洲精品按摩| 久久99精品久久久久久三级| 日韩成人免费在线视频| 懂色av一区二区| 欧美日本一区二区在线观看| www黄色av| 国产理论电影在线| 99久久夜色精品国产网站| 色综合久久中文字幕综合网小说| 午夜一区二区视频| 久操视频在线观看| 国产精品1024久久| 国内精品久久久久影院优| 精品视频站长推荐| 欧美黑人一区| 欧美激情在线一区二区三区| 国产精品色婷婷视频| 97精品在线播放| 日韩欧美另类中文字幕| 午夜欧美视频在线观看| 欧美色图亚洲自拍| 婷婷丁香一区二区三区| 日韩激情中文字幕| 久久久精品999| 波多野结衣视频播放| 综合激情五月婷婷| 在线国产亚洲欧美| 色婷婷777777仙踪林| 男人的天堂在线视频免费观看 | 最新日本中文字幕| 成黄免费在线| 精品一二三四在线| 欧美激情视频在线免费观看 欧美视频免费一 | 国产不卡一区二区三区在线观看| 日本中文字幕网| 亚洲激情在线| 日韩在线观看成人| 国产二级一片内射视频播放 | 日韩欧美一区二区在线视频| 国产精品999视频| 91在线视频| 成人不卡免费av| 国产精品久久久久久久久久久久久久| 亚洲欧美一区二区三区四区五区| 青青操综合网| 在线播放国产精品二区一二区四区| 福利视频一区二区三区四区| yw193.com尤物在线| 国产女同互慰高潮91漫画| 色综合久久av| 三级在线电影| 国产麻豆欧美日韩一区| 国产91色在线|| 中文字幕在线观看精品| 国产免费成人| 久久久久国产精品免费网站| 亚欧视频在线观看| 91成人精品| 正在播放亚洲1区| 狠狠人妻久久久久久综合蜜桃| 欧美男同视频网| 亚洲精品videossex少妇| 中日韩精品一区二区三区| 国产精伦一区二区三区| 亚洲欧美三级在线| 精品熟女一区二区三区| 精品在线观看入口| 久久精品国产一区| 久久久久久久久久久久久久av| 亚洲精品成人无限看| 毛片基地黄久久久久久天堂| 麻豆精品av| 日韩久久一区二区| 欧美大香线蕉线伊人久久| 国产精品一区二区免费视频| 午夜影院日韩| 91精品视频一区| 一区二区国产欧美| 免费久久99精品国产| 欧美亚洲视频在线观看| 精品一区免费观看| 亚洲先锋成人| 在线精品国产欧美| 国产精品密蕾丝袜| 狠狠色丁香婷婷综合影院| 日韩精品久久久久久久玫瑰园| 成人免费看片载| 在线视频亚洲专区| 欧美肥老妇视频| 中文字幕乱码视频| 97久久人人超碰| 久久免费一区| 性国产高清在线观看| 亚洲免费资源在线播放| 国产91porn| 福利一区视频| 欧美男男青年gay1069videost| 五月婷婷丁香色| 91成人app| 欧美一级高清大全免费观看| 韩国三级与黑人| 国产成人夜色高潮福利影视| 中文字幕日韩有码| 国产伦精品一区二区三区视频网站| 另类av一区二区| 国产精品69av| 99热在线只有精品| 99久久久免费精品国产一区二区| 国产日产欧美一区二区| 草草在线视频| 欧美三日本三级三级在线播放| 做a视频在线观看| 日韩av专区| 欧美理论电影在线播放| 在线观看黄色国产| 大美女一区二区三区| 久久综合一区二区三区| 国产不卡人人| 精品视频中文字幕| 女性裸体视频网站| 亚洲每日在线| 极品尤物一区二区三区| 91精品国产综合久久久久久豆腐| 欧美性猛交xxxx黑人| 欧美黑人欧美精品刺激| 一区二区三区福利| 成人免费自拍视频| 快射av在线播放一区| 在线播放国产精品二区一二区四区| 五月婷婷婷婷婷| 亚洲精品一级| 精品一区久久久| 亚洲最大网站| 日韩美女视频一区二区在线观看| 一区二区成人免费视频| 久久久青草婷婷精品综合日韩| 久久久久久久久四区三区| 老司机2019福利精品视频导航| 亚洲日韩中文字幕| 久久精品视频6| 99在线精品免费| 黑森林福利视频导航| 精品视频亚洲| 91免费在线视频网站| 污污视频在线看| 亚洲国产成人久久| 手机在线免费看片| 日韩精品一级中文字幕精品视频免费观看 | 久久香蕉国产线看观看网| 国产黄a三级三级看三级| 亚洲成人免费视| 手机免费看av网站| 午夜电影亚洲| 国产免费一区二区三区香蕉精| 亚洲精品字幕在线观看| 懂色aⅴ精品一区二区三区蜜月| 中文国产在线观看| 成人三级视频| 欧美做爰性生交视频| 国产91免费在线观看| 亚洲免费伊人电影| 日韩精品视频一区二区| 日本中文字幕一区二区视频 | 精品freesex老太交| 成人h猎奇视频网站| а√天堂8资源在线| 中文字幕精品久久久久| 亚洲精品一区二区三区不卡| 91国偷自产一区二区三区成为亚洲经典| 国产精品麻豆一区| 99精品国产视频| 日本女人黄色片| 色综合久久网| 国产尤物99| xxxx另类黑人| 综合欧美国产视频二区| 欧美自拍第一页| 亚洲一区二区美女| av电影中文字幕| 欧美在线不卡| 欧美日韩喷水| 黑色丝袜福利片av久久| 成人亚洲激情网| 日本精品网站| 中文字幕精品在线视频| 亚洲精华国产精华精华液网站| 欧美婷婷六月丁香综合色| 欧美aaa级片| 91玉足脚交白嫩脚丫在线播放| 特级黄色片视频| 日韩电影一区二区三区| 欧美啪啪免费视频| 国产精品扒开腿做爽爽爽软件| 亚洲免费视频一区| 成人在线日韩| 九九热在线精品视频| h视频在线免费| 亚洲欧洲在线播放| 视频一区二区在线播放| 日本高清成人免费播放| 日韩精品视频免费看| 亚洲激情欧美激情| 欧美深性狂猛ⅹxxx深喉| 久久婷婷丁香| 在线视频不卡一区二区三区| 日本一区二区三区视频在线看| 国产精品99久久久久久www| 国产精选在线| 97精品国产aⅴ7777| 国产黄色片在线观看| 51精品久久久久久久蜜臀| 中文字幕乱码人妻无码久久 | 一区二区三区免费在线| 91福利精品视频| 国产99久久久久久免费看| 日韩一区二区三区精品视频第3页 日韩一区二区三区精品 | 日本不卡不码高清免费观看| 日本精品福利视频| 伊人久久高清| 久久精品国亚洲| 免费黄色网页在线观看| 久久精品国产清自在天天线 | 欧美激情一区不卡| av手机在线播放| 激情久久五月天| 久久久精品高清| 伊人久久久大香线蕉综合直播| 亚洲中文字幕无码一区二区三区| 欧美激情1区2区3区| 男人天堂av片| 亚洲美女一区| 国产成人久久婷婷精品流白浆| 久久久久看片| 中文字幕免费高清在线| 国产美女精品在线| 亚洲色成人一区二区三区小说| 国产日韩1区| 免费观看成人网| 国产综合网站| 和岳每晚弄的高潮嗷嗷叫视频| 亚洲清纯自拍| 日韩视频在线免费看| 欧美xxx在线观看| 国产美女在线一区| 久久久久综合| 国产乱叫456| 成人激情免费网站| 色婷婷av777| 国产999精品久久久久久绿帽| 精品久久久久久无码人妻| 91小视频在线免费看| 日本在线视频播放| caoporen国产精品视频| 永久免费看mv网站入口78| 中文字幕一区二区三区四区 | 欧美艳星brazzers| 国产视频第一页| 在线中文字幕一区二区| 国产精品永久久久久久久久久| 欧美大黄免费观看| 九色在线观看视频| 日韩大陆毛片av| 黄视频在线播放| 欧美成人在线影院| 亚洲黄色片视频| 日韩av一二三| 精品少妇无遮挡毛片| 国产剧情一区在线| 欧美色图亚洲激情| 亚洲女同女同女同女同女同69| 91蜜桃视频在线观看| 欧美日韩一级片在线观看| 人妻丰满熟妇av无码区hd| 亚洲视频一区二区| 毛片在线导航| 欧美xxxx做受欧美| 中文在线资源| 日本91av在线播放| 精品久久国产一区| 亚洲精品欧美一区二区三区| 国产精品1区在线| 美媛馆国产精品一区二区| 一区二区三区在线观看免费| 欧美成人精品欧美一级乱| 成人小视频在线| 四虎影院中文字幕| 欧日韩精品视频| 婷婷丁香一区二区三区| 欧美黑人xxxx| 欧洲大片精品免费永久看nba| 茄子视频成人在线观看| 精品国产乱码久久久久久蜜坠欲下 | 久久久无码人妻精品无码| 国产精品看片你懂得 | 亚洲精品福利视频网站| 久久久久久av无码免费看大片| 亚洲国内精品在线| 国产盗摄一区二区| 99久久久久国产精品免费| 国产精品xxx在线观看| 无码毛片aaa在线| 激情综合网av| 极品魔鬼身材女神啪啪精品| 欧美日韩一区小说| 91精品专区| 国产一区二区丝袜高跟鞋图片| av资源久久| 五月婷婷六月丁香激情| 国产欧美日韩中文久久| 中文字幕在线观看视频免费| 欧美日本不卡视频| 日本免费在线观看| 97高清免费视频| 成人线上播放| 亚洲精品第一区二区三区| 久久午夜激情| 久操视频在线观看免费| 欧美在线观看视频一区二区 | 男人的天堂久久| 少妇高潮毛片色欲ava片| 99久久久无码国产精品| 欧美国产成人精品一区二区三区| 亚洲女人天堂网| 日韩欧美一区二区三区在线观看 | 亚洲一区国产| 西西444www无码大胆| 在线国产电影不卡| 国产二区三区在线| 91精品国产免费久久久久久| 国产成人免费精品| 一区二区在线中文字幕电影视频 | 欧美性xxxx在线播放| 日本成人一区| 国产美女久久久| 欧美另类视频| 爱爱爱爱免费视频| 亚洲欧美国产77777| 国产自产一区二区| 奇米四色中文综合久久| 日本女优一区| 欧美丰满熟妇bbb久久久| 岛国视频午夜一区免费在线观看| 国内在线精品| 亚洲一区二区三区视频| 日韩视频三区| 免费看污片的网站| 日韩欧美国产综合在线一区二区三区| yellow在线观看网址| 午夜精品福利一区二区| 国产成人精品影院| 9i精品福利一区二区三区| 久久久国产精彩视频美女艺术照福利| 4438全国亚洲精品观看视频| 久久久精品在线视频| 亚洲人成在线播放网站岛国 | 在线日韩精品视频| 一区中文字幕电影| 国产97色在线 | 日韩| 亚洲精选在线视频| 国产视频福利在线| 99re资源| 蜜桃av一区二区三区电影| 国产在线视频二区| 最近2019年中文视频免费在线观看| 都市激情亚洲综合| 中文字幕第50页| 国产午夜精品美女毛片视频| 欧美男人亚洲天堂| 九九热这里只有精品免费看|