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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

关于MYSQL 的 AUTO-INC Locks

發布時間:2024/4/15 数据库 61 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于MYSQL 的 AUTO-INC Locks 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今天看到一題MYSQL OCP 試題,關于 AUTO-INC locks ,才知在自增長鍵值時,是使用表鎖。

試題如下,同時把相關的資料也轉發如下。


QUESTION 94

Which two statements are true about InnoDB auto-increment locking?
A. The auto-increment lock can be a table-level lock.
B. InnoDB never uses table-level locks.
C. Some settings for innodb_autoinc_lock_mode can help reduce locking.
D. InnoDB always protects auto-increment updates with a table-level lock.
E. InnoDB does not use locks to enforce auto-increment uniqueness.
Correct Answer: AD
Section: (none)
Explanation
Explanation/Reference:
Explanation: A (not B): InnoDB uses a special lock called the table-level AUTO-INC lock for inserts into tables with AUTO_INCREMENT columns.
D (Not E): This lock is normally held to the end of the statement (not to the end of the transaction), to ensure that auto-increment numbers are assigned in a
predictable and repeatable order for a given sequence of INSERT statements.
Reference: 14.6.5.2 Configurable InnoDB Auto-Increment Locking

http://dev.mysql.com/doc/refman/5.6/en/innodb-auto-increment-configurable.html




AUTO-INC Locks

An AUTO-INC lock is a special table-level lock taken by transactions inserting into tables with AUTO_INCREMENT columns. In the simplest case, if one transaction is inserting values into the table, any other transactions must wait to do their own inserts into that table, so that rows inserted by the first transaction receive consecutive primary key values.

The innodb_autoinc_lock_mode configuration option controls the algorithm used for auto-increment locking. It allows you to choose how to trade off between predictable sequences of auto-increment values and maximum concurrency for insert operations.

AUTO-INC鎖是當向使用含有AUTO_INCREMENT列的表中插入數據時需要獲取的一種特殊的表級鎖?
在最簡單的情況下,如果一個事務正在向表中插入值,則任何其他事務必須等待對該表執行自己的插入操作,以便第一個事務插入的行的值是連續的。?
innodb_autoinc_lock_mode配置選項控制用于自動增量鎖定的算法。 它允許您選擇如何在可預測的自動遞增值序列和插入操作的最大并發性之間進行權衡。

AUTO_INCREMENT Handling in InnoDB

InnoDB提供了一個可配置的鎖定機制,可以顯著提高使用AUTO_INCREMENT列向表中添加行的SQL語句的可伸縮性和性能。 要對InnoDB表使用AUTO_INCREMENT機制,必須將AUTO_INCREMENT列定義為索引的一部分,以便可以對表執行相當于索引的SELECT MAX(ai_col)查找以獲取最大列值。 通常,這是通過使列成為某些表索引的第一列來實現的。

本節介紹AUTO_INCREMENT鎖定模式的行為,對不同AUTO_INCREMENT鎖定模式設置的使用含義,以及InnoDB如何初始化AUTO_INCREMENT計數器。

  • InnoDB AUTO_INCREMENT鎖定模式

  • InnoDB AUTO_INCREMENT鎖定模式使用含義

  • InnoDB AUTO_INCREMENT計數器初始化

InnoDB AUTO_INCREMENT鎖定模式

本節介紹用于生成自動遞增值的AUTO_INCREMENT鎖定模式的行為,以及每種鎖定模式如何影響復制。 自動遞增鎖定模式在啟動時使用innodb_autoinc_lock_mode配置參數進行配置。

以下術語用于描述innodb_autoinc_lock_mode設置:

  • “INSERT-like” statements(類INSERT語句)?
    所有可以向表中增加行的語句,包括INSERT,?INSERT ... SELECT,?REPLACE,?REPLACE ... SELECT, and?LOAD DATA.包括“simple-inserts”, “bulk-inserts”, and “mixed-mode” inserts.

  • “Simple inserts”?
    可以預先確定要插入的行數(當語句被初始處理時)的語句。 這包括沒有嵌套子查詢的單行和多行INSERT和REPLACE語句,但不包括INSERT ... ON DUPLICATE KEY UPDATE。

  • “Bulk inserts”?
    事先不知道要插入的行數(和所需自動遞增值的數量)的語句。 這包括INSERT ... SELECT,REPLACE ... SELECT和LOAD DATA語句,但不包括純INSERT。 InnoDB在處理每行時一次為AUTO_INCREMENT列分配一個新值。

  • “Mixed-mode inserts”?
    這些是“Simple inserts”語句但是指定一些(但不是全部)新行的自動遞增值。 示例如下,其中c1是表t1的AUTO_INCREMENT列:?
    INSERT INTO t1 (c1,c2) VALUES (1,'a'), (NULL,'b'), (5,'c'), (NULL,'d');

另一種類型的“Mixed-mode inserts”是INSERT ... ON DUPLICATE KEY UPDATE,其在最壞的情況下實際上是INSERT語句隨后又跟了一個UPDATE,其中AUTO_INCREMENT列的分配值不一定會在 UPDATE 階段使用

  • innodb_autoinc_lock_mode = 0 (“traditional” lock mode)

    傳統的鎖定模式提供了在MySQL 5.1中引入innodb_autoinc_lock_mode配置參數之前存在的相同行為。傳統的鎖定模式選項用于向后兼容性,性能測試以及解決“Mixed-mode inserts”的問題,因為語義上可能存在差異。

在此鎖定模式下,所有“INSERT-like”語句獲得一個特殊的表級AUTO-INC鎖,用于插入具有AUTO_INCREMENT列的表。此鎖定通常保持到語句結束(不是事務結束),以確保為給定的INSERT語句序列以可預測和可重復的順序分配自動遞增值,并確保自動遞增由任何給定語句分配的值是連續的。

  • SESSION_A>DROP TABLE IF EXISTS t;
  • Query OK, 0 rows affected (0.00 sec)
  • SESSION_A>CREATE TABLE t (a bigint unsigned auto_increment primary key) ENGINE=InnoDB;
  • Query OK, 0 rows affected (0.01 sec)
  • SESSION_A>insert into t values(1),(3),(4),(5),(6),(7);
  • Query OK, 6 rows affected (0.01 sec)
  • Records: 6 Duplicates: 0 Warnings: 0
  • SESSION_A>select * from t;
  • +---+
  • | a |
  • +---+
  • | 1 |
  • | 3 |
  • | 4 |
  • | 5 |
  • | 6 |
  • | 7 |
  • +---+
  • 6 rows in set (0.00 sec)
  • SESSION_A>select @@innodb_autoinc_lock_mode;
  • +----------------------------+
  • | @@innodb_autoinc_lock_mode |
  • +----------------------------+
  • | 0 |
  • +----------------------------+
  • 1 row in set (0.00 sec)
  • A B C 三個會話事務隔離級別都是 RR
  • SESSION_A>select @@global.tx_isolation,@@session.tx_isolation;
  • +-----------------------+------------------------+
  • | @@global.tx_isolation | @@session.tx_isolation |
  • +-----------------------+------------------------+
  • | REPEATABLE-READ | REPEATABLE-READ |
  • +-----------------------+------------------------+
  • SESSION_A>begin;
  • Query OK, 0 rows affected (0.00 sec)
  • SESSION_A>delete from t where a>4;
  • Query OK, 3 rows affected (0.00 sec)
  • B會話被鎖,這是由于會話 A 產生的 gap lock
  • SESSION_B>begin;
  • Query OK, 0 rows affected (0.00 sec)
  • SESSION_B>insert into t values(null); --注意這里因為是 null, 鎖需要在內存中分配 AUTO-INCREMENT
  • C 會話被阻塞
  • SESSION_C>begin;
  • Query OK, 0 rows affected (0.00 sec)
  • SESSION_C>insert into t values(2); --這里插入2,沒有 gap lock 也被鎖了
  • (mysql@localhost) [fandb]> (mysql@localhost) [fandb]> select trx_id,trx_state,trx_requested_lock_id,trx_weight,trx_mysql_thread_id,trx_query, trx_operation_state from information_schema.INNODB_TRX;
  • +--------+-----------+-----------------------+------------+---------------------+----------------------------+-----------------------+
  • | trx_id | trx_state | trx_requested_lock_id | trx_weight | trx_mysql_thread_id | trx_query | trx_operation_state |
  • +--------+-----------+-----------------------+------------+---------------------+----------------------------+-----------------------+
  • | 321912 | LOCK WAIT | 321912:701 | 3 | 7 | insert into t values(2) | setting auto-inc lock |
  • | 321911 | LOCK WAIT | 321911:690:3:1 | 3 | 2 | insert into t values(null) | inserting |
  • | 321906 | RUNNING | NULL | 5 | 1 | NULL | NULL |
  • +--------+-----------+-----------------------+------------+---------------------+----------------------------+-----------------------+
  • 3 rows in set (0.00 sec)
  • 可以看到,SESSION_C是等待自增鎖,一直處于setting auto-inc lock狀態
  • (mysql@localhost) [fandb]> select * from information_schema.INNODB_LOCKS;
  • +----------------+-------------+-----------+-----------+-------------+------------+------------+-----------+----------+------------------------+
  • | lock_id | lock_trx_id | lock_mode | lock_type | lock_table | lock_index | lock_space | lock_page | lock_rec | lock_data |
  • +----------------+-------------+-----------+-----------+-------------+------------+------------+-----------+----------+------------------------+
  • | 321912:701 | 321912 | AUTO_INC | TABLE | `fandb`.`t` | NULL | NULL | NULL | NULL | NULL |
  • | 321911:701 | 321911 | AUTO_INC | TABLE | `fandb`.`t` | NULL | NULL | NULL | NULL | NULL |
  • | 321911:690:3:1 | 321911 | X | RECORD | `fandb`.`t` | PRIMARY | 690 | 3 | 1 | supremum pseudo-record |
  • | 321906:690:3:1 | 321906 | X | RECORD | `fandb`.`t` | PRIMARY | 690 | 3 | 1 | supremum pseudo-record |
  • +----------------+-------------+-----------+-----------+-------------+------------+------------+-----------+----------+------------------------+
  • 4 rows in set (0.00 sec)
  • 在statement-based replication的情況下,這意味著當在從服務器上復制SQL語句時,自動增量列使用與主服務器上相同的值。多個INSERT語句的執行結果是確定性的,SLAVE再現與MASTER相同的數據。如果由多個INSERT語句生成的自動遞增值交錯,則兩個并發INSERT語句的結果將是不確定的,并且不能使用基于語句的復制可靠地傳播到從屬服務器。

    為了解釋清楚,查看下面的例子:

  • CREATE TABLE t1 (
  • c1 INT(11) NOT NULL AUTO_INCREMENT,
  • c2 VARCHAR(10) DEFAULT NULL,
  • PRIMARY KEY (c1)
  • ) ENGINE=InnoDB;
  • 假設有兩個事務正在運行,每個事務都將行插入到具有AUTO_INCREMENT列的表中。 一個事務正在使用插入1000行的INSERT … SELECT語句,另一個事務正在使用插入一行的“Simple inserts”語句:

  • Tx1: INSERT INTO t1 (c2) SELECT 1000 rows from another table ...
  • Tx2: INSERT INTO t1 (c2) VALUES ('xxx');
  • InnoDB不能預先得知有多少行會從TX1的select部分獲取到,所以在事務進行過程中,InnoDB一次只會為AUTO_INCREMENT列分配一個值.?
    通過一個表級鎖的控制,保證了在同一時刻只有一個引用表t1的INSERT語句可以執行,直到整個INSERT語句結束,并且由不同語句生成自動遞增數不會交錯?
    由Tx1?INSERT ... SELECT語句生成的自動遞增值將是連續的,并且Tx2中的INSERT語句使用的(單個)自動遞增值將小于或大于用于Tx1的所有那些值,具體取決于 那個語句先執行。

    只要SQL語句在從二進制日志(當使用基于語句的復制或在恢復方案中)重放時以相同的順序執行,結果將與Tx1和Tx2首次運行時的結果相同。 因此,持續至語句結束的表級鎖定( table-level locks)保證了在statement-based replication中對auto-increment列的插入數據的安全性. 但是,當多個事務同時執行insert語句時,這些表級鎖定會限制并發性和可伸縮性。

    在前面的示例中,如果沒有表級鎖,則Tx2中用于INSERT的自動遞增列的值取決于語句執行的確切時間。 如果Tx2的INSERT在Tx1的INSERT正在運行時(而不是在它開始之前或完成之后)執行,則由兩個INSERT語句分配的特定自動遞增值將是不確定的,并且可能每次運行都會得到不同的值

    在連續鎖定模式下,InnoDB可以避免為“Simple inserts”語句使用表級AUTO-INC鎖,其中行數是預先已知的,并且仍然保留基于語句的復制的確定性執行和安全性。

    如果不使用二進制日志作為恢復或復制的一部分來重放SQL語句,則可以使用interleaved lock模式來消除所有使用表級AUTO-INC鎖,以實現更大的并發性和性能,其代價是由于并發的語句交錯執行,同一語句生成的AUTO-INCREMENT值可能會產生GAP

    • innodb_autoinc_lock_mode = 1 (“consecutive” lock mode)

      這是默認的鎖定模式.在這個模式下,“bulk inserts”仍然使用AUTO-INC表級鎖,并保持到語句結束.這適用于所有INSERT ... SELECT,REPLACE ... SELECT和LOAD DATA語句。同一時刻只有一個語句可以持有AUTO-INC鎖.

    “Simple inserts”(要插入的行數事先已知)通過在mutex(輕量鎖)的控制下獲得所需數量的自動遞增值來避免表級AUTO-INC鎖, 它只在分配過程的持續時間內保持,而不是直到語句完成。 不使用表級AUTO-INC鎖,除非AUTO-INC鎖由另一個事務保持。 如果另一個事務保持AUTO-INC鎖,則“簡單插入”等待AUTO-INC鎖,如同它是一個“批量插入”。

  • SESSION_A>DROP TABLE IF EXISTS t;
  • Query OK, 0 rows affected (0.01 sec)
  • SESSION_A>CREATE TABLE t (a bigint unsigned auto_increment primary key) ENGINE=InnoDB;
  • Query OK, 0 rows affected (0.01 sec)
  • SESSION_A>insert into t values(1),(3),(4),(5),(6),(7);
  • Query OK, 6 rows affected (0.01 sec)
  • Records: 6 Duplicates: 0 Warnings: 0
  • SESSION_A>select @@innodb_autoinc_lock_mode;
  • +----------------------------+
  • | @@innodb_autoinc_lock_mode |
  • +----------------------------+
  • | 1 |
  • +----------------------------+
  • 1 row in set (0.00 sec)
  • SESSION_A>select * from t;
  • +---+
  • | a |
  • +---+
  • | 1 |
  • | 3 |
  • | 4 |
  • | 5 |
  • | 6 |
  • | 7 |
  • +---+
  • 6 rows in set (0.00 sec)
  • SESSION_A>begin;
  • Query OK, 0 rows affected (0.00 sec)
  • SESSION_A>delete from t where a>4;
  • Query OK, 3 rows affected (0.00 sec)
  • 會話 B, GAP LOCK 阻塞
  • SESSION_B>begin;
  • Query OK, 0 rows affected (0.00 sec)
  • SESSION_B>insert into t values(null); --由于是`simple-insert``innodb_autoinc_lock_mode=1`,所以并不需要AUTO-INC表級鎖
  • 會話 C 成功插入沒有阻塞
  • SESSION_C>begin;
  • Query OK, 0 rows affected (0.00 sec)
  • SESSION_C>insert into t values(2); --由于它也是`simple-insert``innodb_autoinc_lock_mode=1`所以不需要獲取AUTO-INC表級鎖,沒有阻塞成功插入
  • Query OK, 1 row affected (0.00 sec)
  • C會話rollback,B會話改為使用“Bulk inserts
  • SESSION_C>rollback;
  • Query OK, 0 rows affected (0.00 sec)
  • SESSION_B>insert into t select null;
  • 此時 C 會話又被阻塞了
  • SESSION_C>begin;
  • Query OK, 0 rows affected (0.00 sec)
  • SESSION_C>insert into t values(2); --這驗證了官方文檔中的說法`If another transaction holds an AUTO-INC lock, a “simple insert” waits for the AUTO-INC lock, as if it were a “bulk insert”.`
  • Query OK, 1 row affected (41.17 sec)
  • 此鎖定模式確保,當行數不預先知道的INSERT存在時(并且自動遞增值在語句過程執行中分配)由任何“類INSERT”語句分配的所有自動遞增值是連續的,并且對于基于語句的復制(statement-based replication)操作是安全的。

    這種鎖定模式顯著地提高了可擴展性,并且保證了對于基于語句的復制(statement-based replication)的安全性.此外,與“傳統”鎖定模式一樣,由任何給定語句分配的自動遞增數字是連續的。 與使用自動遞增的任何語句的“傳統”模式相比,語義沒有變化.?
    但有一個特例:

    The exception is for “mixed-mode inserts”, where the user provides explicit values for an AUTO_INCREMENT column for some, but not all, rows in a multiple-row “simple insert”. For such inserts, InnoDB allocates more auto-increment values than the number of rows to be inserted. However, all values automatically assigned are consecutively generated (and thus higher than) the auto-increment value generated by the most recently executed previous statement. “Excess” numbers are lost.

    • innodb_autoinc_lock_mode = 2 (“interleaved” lock mode)

      在這種鎖定模式下,所有類INSERT(“INSERT-like” )語句都不會使用表級AUTO-INC lock,并且可以同時執行多個語句。這是最快和最可擴展的鎖定模式,但是當使用基于語句的復制或恢復方案時,從二進制日志重播SQL語句時,這是不安全的。

    在此鎖定模式下,自動遞增值保證在所有并發執行的“類INSERT”語句中是唯一且單調遞增的。但是,由于多個語句可以同時生成數字(即,跨語句交叉編號),為任何給定語句插入的行生成的值可能不是連續的。

    如果執行的語句是“simple inserts”,其中要插入的行數已提前知道,則除了“混合模式插入”之外,為單個語句生成的數字不會有間隙。然而,當執行“批量插入”時,在由任何給定語句分配的自動遞增值中可能存在間隙。

    InnoDB AUTO_INCREMENT鎖定模式使用含義

    • 在復制環節中使用自增列?
      如果你在使用基于語句的復制(statement-based replication)請將innodb_autoinc_lock_mode設置為0或1,并在主從上使用相同的值。 如果使用innodb_autoinc_lock_mode = 2(“interleaved”)或主從不使用相同的鎖定模式的配置,自動遞增值不能保證在從機上與主機上相同。

    如果使用基于行的或混合模式的復制,則所有自動增量鎖定模式都是安全的,因為基于行的復制對SQL語句的執行順序不敏感(混合模式會在遇到不安全的語句是使用基于行的復制模式)。

    • “Lost” auto-increment values and sequence gaps?
      在所有鎖定模式(0,1和2)中,如果生成自動遞增值的事務回滾,那些自動遞增值將“丟失”。 一旦為自動增量列生成了值,無論是否完成“類似INSERT”語句以及包含事務是否回滾,都不能回滾。 這種丟失的值不被重用。 因此,存儲在表的AUTO_INCREMENT列中的值可能存在間隙。

    • Specifying NULL or 0 for the AUTO_INCREMENT column?
      在所有鎖定模式(0,1和2)中,如果用戶在INSERT中為AUTO_INCREMENT列指定NULL或0,InnoDB會將該行視為未指定值,并為其生成新值。

    • 為AUTO_INCREMENT列分配一個負值?
      在所有鎖定模式(0,1和2)中,如果您為AUTO_INCREMENT列分配了一個負值,則不會定義自動增量機制的行為。

    • 如果AUTO_INCREMENT值大于指定整數類型的最大整數?
      在所有鎖定模式(0,1和2)中,如果值大于可以存儲在指定整數類型中的最大整數,則不定義自動遞增機制的行為。

    • Gaps in auto-increment values for “bulk inserts”?
      當innodb_autoinc_lock_mode設置為0(“traditional”)或1(“consecutive”)時,任何給定語句生成的自動遞增值是連續的,沒有間隙,因為表級AUTO-INC鎖會持續到 語句結束,并且一次只能執行一個這樣的語句。

    當innodb_autoinc_lock_mode設置為2(“interleaved”)時,在“bulk inserts”生成的自動遞增值中可能存在間隙,但只有在并發執行“INSERT-Like”語句時才會產生這種情況。

    對于鎖定模式1或2,在連續語句之間可能出現間隙,因為對于批量插入,每個語句所需的自動遞增值的確切數目可能不為人所知,并且可能進行過度估計。

  • select @@innodb_autoinc_lock_mode;
  • +----------------------------+
  • | @@innodb_autoinc_lock_mode |
  • +----------------------------+
  • | 0 |
  • +----------------------------+
  • DROP TABLE IF EXISTS t;
  • CREATE TABLE t (a bigint unsigned auto_increment primary key) ENGINE=InnoDB SELECT NULL AS a;
  • /* #1 */ INSERT INTO t SELECT NULL FROM t;
  • /* #2 */ INSERT INTO t SELECT NULL FROM t;
  • /* #3 */ INSERT INTO t SELECT NULL FROM t;
  • /* #4 */ INSERT INTO t SELECT NULL FROM t;
  • SELECT * FROM t;
  • +----+
  • | a |
  • +----+
  • | 1 |
  • | 2 |
  • | 3 |
  • | 4 |
  • | 5 |
  • | 6 |
  • | 7 |
  • | 8 |
  • | 9 |
  • | 10 |
  • | 11 |
  • | 12 |
  • | 13 |
  • | 14 |
  • | 15 |
  • | 16 |
  • +----+
  • innodb_autoinc_lock_mode=0 INSERT語句產生的自動遞增值都是連續的
  • select @@innodb_autoinc_lock_mode;
  • +----------------------------+
  • | @@innodb_autoinc_lock_mode |
  • +----------------------------+
  • | 1 |
  • +----------------------------+
  • 1 row in set (0.00 sec)
  • DROP TABLE IF EXISTS t;
  • CREATE TABLE t (a bigint unsigned auto_increment primary key) ENGINE=InnoDB SELECT NULL AS a;
  • /* #1 */ INSERT INTO t SELECT NULL FROM t;
  • /* #2 */ INSERT INTO t SELECT NULL FROM t;
  • /* #3 */ INSERT INTO t SELECT NULL FROM t;
  • /* #4 */ INSERT INTO t SELECT NULL FROM t;
  • SELECT * FROM t;
  • +----+
  • | a |
  • +----+
  • | 1 |
  • | 2 |
  • | 3 |
  • | 4 |
  • | 6 |
  • | 7 |
  • | 8 |
  • | 9 |
  • | 13 |
  • | 14 |
  • | 15 |
  • | 16 |
  • | 17 |
  • | 18 |
  • | 19 |
  • | 20 |
  • +----+
  • 出現了間隙gap, 510-12都沒了,下面來解釋產生這種情況的原因:
  • /* #1 */ 這是第一次INSERT,此時表中只有一行(創建表時的那一行),但是MySQL不知道有多少行.
  • 然后MySQL Grab a chunk of auto_increment values chunk中有多少? 只有一個,即'2',將其插入表中.
  • 沒有更多的行插入,所以一切完成。
  • /* #2 */ 這是第二次INSERT,此時表中有兩行(1,2),但是MySQL不知道有多少行.
  • MySQL Grab a chunk of auto_increment values chunk中有多少? 只有一個,即'3',將其插入表中.
  • 還有需要插入的行,所以Grab another chunk,這次是前一次的兩倍大小 chunk中有多少? 兩個,'4''5'. 插入'4'.
  • 沒有更多的行插入,所以一切完成,'5'被舍棄,但是此時 AUTO_INCREMENT的下一個值是6
  • /* #3 */這是第三次INSERT,此時表中有四行(1,2,3,4),但是MySQL不知道有多少行.
  • - Grab a chunk of auto_increment values. How many in the chunk? One - the value '6'. Insert it (one row inserted).
  • - Still more rows to insert. Grab another chunk, twice as big as before - two values, '7' and '8'. Insert them (three rows inserted).
  • - Still more rows to insert. Grab another chunk, twice as big as before - four values, '9', '10', '11', '12'. Insert the '9' (four rows inserted).
  • - No more rows to insert. Discard the left over '10', '11', and '12'.
  • #4: Insert as many rows as there are in the table (it's eight rows, but MySQL doesn't know that.)
  • - Grab a chunk of auto_increment values. How many in the chunk? One - the value '13'. Insert it (one row inserted).
  • - Still more rows to insert. Grab another chunk, twice as big as before - two values, '14' and '15'. Insert them (three rows inserted).
  • - Still more rows to insert. Grab another chunk, twice as big as before - four values, '16', '17', '18', '19'. Insert them (seven rows inserted).
  • - Still more rows to insert. Grab another chunk, twice as big as before - eight values, '20', '21', '22', ..., '27'. Insert the '20' (eight rows inserted).
  • - No more rows to insert. Discard the left over '21', '22', etc.
  • 所以這就是 gap 產生的原因
    • 由“mixed-mode inserts”分配的自動遞增值?
      考慮一下場景,在“mixed-mode insert”中,其中一個“simple insert”語句指定了一些(但不是全部)行的AUTO-INCREMENT值。 這樣的語句在鎖模式0,1和2中表現不同。例如,假設c1是表t1的AUTO_INCREMENT列,并且最近自動生成的序列號是100。
  • mysql> CREATE TABLE t1 (
  • -> c1 INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
  • -> c2 CHAR(1)
  • -> ) ENGINE = INNODB;
  • Now, consider the following “mixed-mode insert” statement:

  • mysql> INSERT INTO t1 (c1,c2) VALUES (1,'a'), (NULL,'b'), (5,'c'), (NULL,'d');
  • 當innodb_autoinc_lock_mode=0時:

  • mysql> SELECT c1, c2 FROM t1 ORDER BY c2;
  • +-----+------+
  • | c1 | c2 |
  • +-----+------+
  • | 1 | a |
  • | 101 | b |
  • | 5 | c |
  • | 102 | d |
  • +-----+------+
  • 下一個可用的auto-increment值103.因為innodb_autoinc_lock_mode=0時,auto-increment值一次只分配一個,而不是在開始時全部分配.不論是否有并發的其他類INSERT語句同時執行,都會是這樣的結果

    當innodb_autoinc_lock_mode=1時:

  • mysql> SELECT c1, c2 FROM t1 ORDER BY c2;
  • +-----+------+
  • | c1 | c2 |
  • +-----+------+
  • | 1 | a |
  • | 101 | b |
  • | 5 | c |
  • | 102 | d |
  • +-----+------+
  • 不同于innodb_autoinc_lock_mode=0時的情況,此時下一個可用的auto-increment值105,因為auto-increment值在語句一開始就分配了,分配了四個,但是只用了倆.不論是否有并發的其他類INSERT語句同時執行,都會是這樣的結果

    當innodb_autoinc_lock_mode=2時:

  • mysql> SELECT c1, c2 FROM t1 ORDER BY c2;
  • +-----+------+
  • | c1 | c2 |
  • +-----+------+
  • | 1 | a |
  • | x | b |
  • | 5 | c |
  • | y | d |
  • +-----+------+
  • x和y的值是唯一的,并大于任何先前生成的行。 然而,x和y的具體值取決于通過并發執行語句生成的自動增量值的數量。

    最后考慮下面的情況,當最近的 AUTO-INCREMENT 值為4時,執行下面的語句:

  • mysql> INSERT INTO t1 (c1,c2) VALUES (1,'a'), (NULL,'b'), (5,'c'), (NULL,'d');
  • 無論innodb_autoinc_lock_mode如何設置,都會報錯duplicate-key error 23000 (Can't write; duplicate key in table)?
    因為5已經分配給了(NULL, 'b'),所以導致插入(5, 'C')時報錯

    • 在INSERT語句序列的中間修改AUTO_INCREMENT列值?
      在所有鎖定模式(0,1和2)中,在INSERT語句序列中間修改AUTO_INCREMENT列值可能會導致duplicate key錯誤。
  • mysql> CREATE TABLE t1 (
  • -> c1 INT NOT NULL AUTO_INCREMENT,
  • -> PRIMARY KEY (c1)
  • -> ) ENGINE = InnoDB;
  • mysql> INSERT INTO t1 VALUES(0), (0), (3); -- 0 0分配兩個值1,2. 手動指定3,則此時AUTO_INCREMENT3,下一個值為4
  • mysql> SELECT c1 FROM t1;
  • +----+
  • | c1 |
  • +----+
  • | 1 |
  • | 2 |
  • | 3 |
  • +----+
  • mysql> UPDATE t1 SET c1 = 4 WHERE c1 = 1;
  • mysql> SELECT c1 FROM t1;
  • +----+
  • | c1 |
  • +----+
  • | 2 |
  • | 3 |
  • | 4 |
  • +----+
  • mysql> INSERT INTO t1 VALUES(0); --由于分配值為4,所以報錯duplicate key
  • ERROR 1062 (23000): Duplicate entry '4' for key 'PRIMARY'
  • InnoDB AUTO_INCREMENT計數器初始化

    本章節討論 InnoDB如何初始化AUTO_INCREMENT計數器?
    如果你為一個Innodb表創建了一個AUTO_INCREMENT列,則InnoDB數據字典中的表句柄包含一個稱為自動遞增計數器的特殊計數器,用于為列分配新值。 此計數器僅存在于內存中,而不存儲在磁盤上。

    要在服務器重新啟動后初始化自動遞增計數器,InnoDB將在首次插入行到包含AUTO_INCREMENT列的表時執行以下語句的等效語句。

  • SELECT MAX(ai_col) FROM table_name FOR UPDATE;
  • InnoDB增加語句檢索的值,并將其分配給表和表的自動遞增計數器。 默認情況下,值增加1.此默認值可以由auto_increment_increment配置設置覆蓋。

    如果表為空,InnoDB使用值1.此默認值可以由auto_increment_offset配置設置覆蓋。

    如果在自動遞增計數器初始化前使用SHOW TABLE STATUS語句查看表, InnoDB將初始化計數器值,但不會遞增該值.這個值會儲存起來以備之后的插入語句使用.這個初始化過程使用了一個普通的排它鎖來讀取表中自增列的最大值. InnoDB遵循相同的過程來初始化新創建的表的自動遞增計數器。

    在自動遞增計數器初始化之后,如果您未明確指定AUTO_INCREMENT列的值,InnoDB會遞增計數器并將新值分配給該列。如果插入顯式指定列值的行,并且該值大于當前計數器值,則將計數器設置為指定的列值。

    只要服務器運行,InnoDB就使用內存中自動遞增計數器。當服務器停止并重新啟動時,InnoDB會重新初始化每個表的計數器,以便對表進行第一次INSERT,如前所述。

    服務器重新啟動還會取消CREATE TABLE和ALTER TABLE語句中的AUTO_INCREMENT = N表選項的效果

    (轉自: http://blog.csdn.net/ashic/article/details/53810319)


    總結

    以上是生活随笔為你收集整理的关于MYSQL 的 AUTO-INC Locks的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    激情一区二区三区欧美 | 国产精品成人一区二区三区吃奶 | 中文资源在线观看 | 色婷婷在线视频 | 91污污视频在线观看 | 亚洲精品国产精品国 | 综合五月婷婷 | 在线免费观看国产视频 | 在线观看免费国产小视频 | 亚洲精选99 | 亚洲精选视频免费看 | 91cn国产在线 | 久久99国产精品视频 | 青青河边草免费观看完整版高清 | 波多野结衣综合网 | 激情欧美xxxx | 九九免费精品视频 | 91免费高清| 黄网站色成年免费观看 | 欧美成人精品欧美一级乱黄 | 欧美午夜精品久久久久 | 亚洲综合网 | 国产成人一区二区三区 | 在线99| 午夜av免费在线观看 | 99精品国产成人一区二区 | 国产黑丝一区二区 | 天天干夜夜夜操天 | 国产成人精品亚洲精品 | 在线观看亚洲国产 | 中文字幕在线观看免费观看 | 月下香电影 | 精品综合久久 | 国产精品毛片一区二区三区 | 成人在线一区二区 | 一级欧美日韩 | 综合国产视频 | 97超碰人人模人人人爽人人爱 | 亚洲欧美激情插 | 亚洲欧洲精品视频 | 久久综合免费视频影院 | 国产黄色大片免费看 | 国产一线二线三线在线观看 | 中文字幕在线观看视频网站 | 国产麻豆视频在线观看 | 国产视频中文字幕在线观看 | 久久综合色天天久久综合图片 | 色吊丝在线永久观看最新版本 | 免费网站黄 | 在线国产高清 | 亚洲精品视频www | 国产在线久久久 | 久久综合婷婷国产二区高清 | 黄色三几片 | 中文字幕免费看 | 免费成人在线视频网站 | 中文字幕av影院 | 免费av免费观看 | 亚洲免费一级 | 国产精品系列在线观看 | 国产欧美日韩精品一区二区免费 | 91在线产啪 | 久久无码av一区二区三区电影网 | 美女免费视频一区二区 | 免费在线观看av不卡 | 日韩欧美高清视频在线观看 | 亚洲91精品 | 久草在线资源网 | 天天躁天天狠天天透 | 日韩欧美高清视频在线观看 | 伊人久久国产精品 | 久久综合免费视频 | 日韩精品一区二区三区水蜜桃 | 亚洲综合视频网 | 黄色av网站在线免费观看 | 亚洲精品一区二区三区四区高清 | 特黄特色特刺激视频免费播放 | 狠狠色狠狠色合久久伊人 | 在线免费黄网站 | 午夜色大片在线观看 | 欧美日韩伦理一区 | 欧美夫妻生活视频 | 国产精品一区二区在线观看 | 国产粉嫩在线 | aaa日本高清在线播放免费观看 | 国产精品久久久久久婷婷天堂 | 久久夜色精品国产欧美乱极品 | 免费看特级毛片 | 欧美日韩亚洲在线观看 | 日韩三区在线观看 | 天天操夜夜操夜夜操 | 精品日韩在线一区 | 亚洲一二三区精品 | 久草在线视频新 | 欧美综合国产 | 国产黄色大全 | av电影中文字幕在线观看 | 国产资源在线免费观看 | 99久久久久久国产精品 | 精品视频在线视频 | 日韩在线视频一区 | 狠狠色噜噜狠狠狠合久 | 亚洲激情综合网 | 精品在线你懂的 | 国产一区二区三区免费在线观看 | 亚洲精品美女久久 | 欧美人牲| 亚洲区另类春色综合小说校园片 | 一区二区三区日韩在线观看 | 中文字幕在线观看视频一区二区三区 | 天天综合成人 | 丁香资源影视免费观看 | 亚洲免费国产视频 | 久久久国产99久久国产一 | 丰满少妇高潮在线观看 | 国产成人久久精品77777综合 | 国产麻豆视频网站 | 亚洲精品视频在线观看网站 | 九九热免费在线观看 | av一级片 | 五月天婷婷在线观看视频 | 一区二区三区不卡在线 | 在线有码中文 | 欧美激情精品久久久 | 午夜aaaa | 国产精品视频永久免费播放 | www.com黄色| 天天射天天射天天 | 超碰公开97 | 亚洲色图 校园春色 | 亚洲精品综合欧美二区变态 | 国产精品乱码久久久久久1区2区 | 国产三级精品三级在线观看 | 中文av网站 | 久久五月天色综合 | 国产精品男女啪啪 | 午夜精品久久久久久久99婷婷 | 91成人精品 | av五月婷婷 | 国产一级视频在线 | 天天插天天爽 | 日本久久免费视频 | 成人香蕉视频 | 在线视频1卡二卡三卡 | 中文字幕在线有码 | 成人免费观看网站 | 久久精品99国产 | 日本电影久久 | 91系列在线 | 最近中文字幕国语免费高清6 | 亚洲伦理电影在线 | 国产激情久久久 | 免费av在线网站 | 亚洲成人资源在线观看 | 成人精品99 | 色欧美视频 | 亚洲成人资源网 | 日韩欧美高清一区二区 | 午夜电影一区 | 国产精品一区免费在线观看 | 久久久精品日本 | 美女网站色 | 婷婷网在线 | 丁香午夜婷婷 | 一级片视频在线 | 成人黄色小视频 | 色中色资源站 | 国产成人精品一二三区 | 手机版av在线 | 不卡在线一区 | 欧美极品xxx | av福利超碰网站 | 九九九九九九精品任你躁 | 91在线91拍拍在线91 | 欧美日bb| 日本婷婷色 | 91亚洲欧美激情 | 亚洲免费在线观看视频 | 在线观看韩日电影免费 | 亚洲精品乱码久久久久v最新版 | 国产一二三四在线观看视频 | 久久精品久久精品久久 | 中文字幕免费播放 | 日韩伦理一区二区三区av在线 | 精品久久久久久一区二区里番 | 在线观看国产一区二区 | 韩国av电影在线观看 | 美女一级毛片视频 | 久久9999久久免费精品国产 | 97超碰网| 久久福利小视频 | 久久超碰在线 | 国产高清日韩欧美 | 成人一区二区三区在线 | 久久久999| 99麻豆视频 | 欧美日韩1区2区 | 黄色一级大片在线免费看产 | 成人在线观看你懂的 | 色视频在线免费观看 | 黄色av一区二区三区 | 麻豆影视在线免费观看 | 久久久久久久电影 | 国产精品破处视频 | 欧美粗又大 | 婷婷干五月 | 日韩精品一卡 | 久久人人97超碰精品888 | 成人久久18免费网站图片 | 久久国产99 | 日韩在线观看视频网站 | 国产精品久久久久久久久久99 | 中日韩免费视频 | 精品在线播放视频 | 日韩二区在线播放 | 69av国产| 国产免费激情久久 | 视频 国产区 | 日日干天天 | 中文字幕专区高清在线观看 | www.国产高清 | 久久久久久中文字幕 | 久久综合九色综合网站 | 国产精品成久久久久 | 久久97精品| 免费色av | 欧美精品一区二区三区四区在线 | 亚洲精品h| 国产精品一区二区免费视频 | 免费一级特黄录像 | 欧美成人黄 | 最近更新好看的中文字幕 | 91在线91 | 国产福利91精品一区 | 国产一级黄色电影 | 国产97在线播放 | 国产精品久久久久久久久久久久 | 日韩在线无 | 国产一在线精品一区在线观看 | 久久综合久久综合这里只有精品 | 少妇视频一区 | 国产亚洲视频在线免费观看 | 久久免费视频国产 | 国产香蕉视频在线播放 | 国产在线国偷精品产拍免费yy | 999久久a精品合区久久久 | 亚洲精品国产成人av在线 | 色综合婷婷 | 99久久婷婷国产综合亚洲 | 在线 成人 | av电影免费观看 | 免费亚洲成人 | 成人午夜精品福利免费 | 免费91在线观看 | 成人国产精品免费 | 国产亚洲精品电影 | 中文视频在线播放 | 黄色大片中国 | 中文字幕中文字幕在线中文字幕三区 | 干干日日 | 91精品办公室少妇高潮对白 | 久久精品成人热国产成 | 日韩欧美精品在线观看 | 美女视频黄免费的久久 | 伊人影院99 | 天天曰天天 | 国产亚洲在线观看 | www.xxx.性狂虐| 国产成人精品在线播放 | 日日激情 | 日韩欧美一级二级 | 国产美女精品在线 | 欧美大jb| 日韩欧美高清不卡 | 蜜臀av性久久久久av蜜臀三区 | 亚洲热久久 | 久久久69| 国产成人精品三级 | 国产免费久久久久 | 欧美黄色特级片 | 婷婷伊人综合 | 九月婷婷综合网 | 国产精品成人aaaaa网站 | 亚洲精品美女在线观看播放 | 夜夜摸夜夜爽 | 狠狠操夜夜 | 成人毛片网 | 久久国产精品免费一区 | 美女久久精品 | 欧美视频日韩 | 欧美激情第十页 | 美女网站色免费 | www.国产在线| 久久久久久久免费看 | 亚洲天天摸日日摸天天欢 | 黄色一级大片在线免费看产 | 色狠狠干 | 黄色91免费观看 | 99视频精品免费视频 | 久久免费视频99 | 久久精品之 | 久久久黄色 | 亚洲成人免费 | 国产999精品久久久影片官网 | 久久久精品一区二区 | 日韩电影在线观看一区二区 | 日日干天天爽 | 欧美人zozo | 手机看片久久 | 国产免费二区 | 国产生活一级片 | 午夜18视频在线观看 | 欧美精品久久久久久久久久白贞 | 天天爱天天射天天干天天 | 成年人精品 | 中文字幕日韩一区二区三区不卡 | 久久女教师 | 最近最新中文字幕 | 人人插人人| 国产中文字幕视频在线观看 | 91福利视频一区 | 国产精品久久久久久久久久 | 国产69精品久久99的直播节目 | 日日天天狠狠 | 天天草av | 国内免费久久久久久久久久久 | 99视频在线精品免费观看2 | 成人免费在线播放视频 | 久久久久久高潮国产精品视 | 亚洲欧洲国产视频 | av成人免费在线看 | 91精品国产麻豆国产自产影视 | 中文字幕中文字幕在线中文字幕三区 | 99精品免费久久久久久久久日本 | 区一区二在线 | 日本九九视频 | 91香蕉视频污在线 | 在线中文字幕观看 | 中文字幕 国产专区 | 国产超碰97 | 蜜桃视频色| 国产91对白在线播 | 欧美在线不卡一区 | 色综合www| 青青草华人在线视频 | 国产在线观看免费观看 | 色久av| av在线看片| 午夜国产一区二区 | 国产黄色资源 | 成人黄色毛片视频 | 国产专区日韩专区 | 欧美日韩午夜爽爽 | 中文字幕第 | 久久99久久99精品免视看婷婷 | 久久精品视频国产 | 草久久影院 | 日韩久久精品一区二区 | 国产伦理精品一区二区 | 日本精品一二区 | 久久久伊人网 | 夜色资源站wwwcom | 欧美日韩在线免费视频 | 九色porny真实丨国产18 | 欧美做受高潮1 | 中文字幕视频一区二区 | 色婷婷五 | 最近中文字幕大全 | 亚洲爽爽网 | 一区二区三区在线免费 | 韩国精品福利一区二区三区 | 国产精品一区二区三区久久久 | 欧美男同网站 | 96久久欧美麻豆网站 | 操操色| 91看片淫黄大片一级在线观看 | 中文字幕在线色 | 亚洲精品av中文字幕在线在线 | 91在线porny国产在线看 | 亚洲精品毛片一级91精品 | 成年人黄色av | 久久精品小视频 | 成人久久电影 | 奇米导航 | 午夜av免费观看 | 免费一级片视频 | 国色天香在线观看 | 黄色av成人在线观看 | 久久综合精品一区 | 国产一级在线播放 | 国产一级二级在线 | 亚洲成人精品久久 | 亚洲精选视频免费看 | 97免费在线观看视频 | 国产午夜在线观看视频 | 日本h视频在线观看 | 99精品亚洲 | 人人插超碰 | 日韩中文字幕第一页 | 日本久久综合视频 | 欧美高清视频不卡网 | 欧美一级片免费 | 美女视频久久久 | 91精品在线免费 | 国产第一福利网 | 丁香六月婷 | 国产在线资源 | 国产免费观看视频 | 日韩免费在线看 | 99久久婷婷国产综合精品 | 五月天中文在线 | 日韩素人在线观看 | 久久久久国产精品免费免费搜索 | 日韩xxxbbb | 精品国产乱码久久久久久1区2匹 | 成年人免费在线观看网站 | 91精品免费在线观看 | 国产国产人免费人成免费视频 | 日韩av电影中文字幕在线观看 | 97成人精品 | 亚洲乱亚洲乱亚洲 | 久热电影 | 24小时日本在线www免费的 | 色橹橹欧美在线观看视频高清 | 欧美久久久久久久久久久 | 日韩欧美在线视频一区二区 | 狠狠色丁香婷婷综合久小说久 | 午夜少妇 | 久久天天躁狠狠躁亚洲综合公司 | 日本超碰在线 | 日韩精品一区二区三区第95 | 国产午夜精品一区二区三区四区 | 狠狠色噜噜狠狠 | www.久久久.cum | 96在线 | 中文字幕国产亚洲 | 亚洲欧美偷拍另类 | 成年人在线看视频 | 99爱在线 | 国产精品黑丝在线观看 | 国产高清视频免费在线观看 | 国产成人在线网站 | 精品v亚洲v欧美v高清v | 黄色www在线观看 | 狠狠干网 | 婷婷日韩| 欧美日韩不卡一区二区三区 | 午夜av免费在线观看 | 亚洲高清av | 欧美日韩激情网 | 国产一级免费观看 | 欧美精品网站 | 日本久久影视 | 精品久久久久久久久久国产 | 亚洲少妇自拍 | 欧美成人性战久久 | 五月开心六月伊人色婷婷 | 91色蜜桃 | 欧美成人精品欧美一级乱黄 | 国产涩涩在线观看 | av在线免费观看网站 | www.婷婷色 | 日韩电影中文字幕 | 中文av网站 | 超碰97人人射妻 | 日韩精品亚洲专区在线观看 | 久久久亚洲国产精品麻豆综合天堂 | 婷婷丁香激情综合 | 91视频观看免费 | 欧美精品久久久久久久 | 国产成人精品网站 | 黄网在线免费观看 | 综合在线亚洲 | 中文字幕在线观看免费 | 一区二区三区四区在线 | 久久精品视频国产 | 天天操夜夜操天天射 | 国产综合在线视频 | 成年人看片网站 | 欧美日韩国产精品爽爽 | 久久久精品国产一区二区电影四季 | 久久精品国产久精国产 | 国产黄在线播放 | 欧美精品一区二区三区一线天视频 | 欧美黑人性猛交 | 国际精品久久 | 黄av免费在线观看 | 亚洲区精品 | 国产午夜精品视频 | 成人免费网视频 | 成人午夜在线电影 | 日日爱影视 | 国产精品自产拍在线观看中文 | 久久久亚洲精华液 | 17婷婷久久www | 成人四虎影院 | 91免费日韩 | 超碰免费97 | 日韩一区在线播放 | 人人爱爱 | 精品在线观看国产 | 国产91aaa| 丁香六月婷婷开心 | 国产美女视频免费观看的网站 | 高清视频一区二区三区 | 日日骑| 黄网站www | 国产精品高清一区二区三区 | 天天操天天干天天摸 | 日韩av片在线 | 成人国产综合 | 国产中的精品av小宝探花 | 成人在线视频免费观看 | 五月婷婷丁香网 | 日韩视频免费在线观看 | 国产裸体bbb视频 | 三级av黄色 | 99精品视频一区二区 | 激情久久婷婷 | 国产精品一区二区在线看 | 亚洲精品一区中文字幕乱码 | 狠狠狠干狠狠 | 免费合欢视频成人app | 一区二区三区在线观看 | 国产精品18久久久久久久网站 | 欧美日韩一区三区 | 日韩特黄一级欧美毛片特黄 | 婷婷在线资源 | 天天色天天搞 | 欧美中文字幕久久 | 国产精品刺激对白麻豆99 | 免费国产在线观看 | 丝袜护士aⅴ在线白丝护士 天天综合精品 | 国产黄在线 | 午夜骚影 | www久 | 国产小视频你懂的在线 | 在线国产中文字幕 | 一级α片 | 久久久免费观看视频 | 毛片视频电影 | 极品久久久久久久 | 精品国产三级 | 国产精品永久在线观看 | 超碰人人超 | 国产中文视频 | www.人人干 | 狠狠色伊人亚洲综合网站野外 | 最近日本字幕mv免费观看在线 | 天天艹日日干 | 日韩午夜精品 | 最近中文字幕高清字幕免费mv | 99久在线精品99re8热视频 | av成人动漫在线观看 | 88av网站 | 九九免费在线观看视频 | av网站有哪些| 美女黄久久| 精品国产成人av | 97**国产露脸精品国产 | 亚州天堂 | 精品伦理一区二区三区 | 国产成a人亚洲精v品在线观看 | 亚洲精品一区二区三区高潮 | 99国产成+人+综合+亚洲 欧美 | 天天天天天天天操 | 国产97色| 中文字幕色综合网 | 亚洲干视频在线观看 | 中文字幕一区av | 日韩精品一区二区三区三炮视频 | 亚洲精品乱码久久久久久蜜桃动漫 | 在线观看视频你懂的 | 婷婷av色综合 | 久久草网站 | av天天在线观看 | 成年人在线电影 | 日韩特级片| av电影在线免费观看 | 一区二区三区视频在线 | 免费在线观看视频一区 | 成年人免费看av | www国产亚洲 | 天天操天天干天天操天天干 | 欧美日韩视频网站 | av在线永久免费观看 | 国产精品ssss在线亚洲 | 美女免费黄视频网站 | 亚洲视频网站在线观看 | 狠狠色丁香婷婷综合最新地址 | 久久久久久久久久影视 | 午夜 免费| 丁香激情综合国产 | 日韩av二区| 欧美激情精品久久久久久免费印度 | 日韩国产精品一区 | 成人97视频 | 国产色黄网站 | 粉嫩av一区二区三区入口 | 一级精品视频在线观看宜春院 | 国色综合| 久草在线免费资源 | 成人午夜电影久久影院 | 日韩av影视在线 | 色综合天天天天做夜夜夜夜做 | 免费高清男女打扑克视频 | 国产精品av久久久久久无 | 在线观看免费av网站 | 日韩va在线观看 | 黄色一级动作片 | 日韩免费在线观看视频 | 精品字幕在线 | 人人看人人 | av888av.com | 狠狠色丁香久久婷婷综 | 永久中文字幕 | 九九九热精品免费视频观看网站 | 免费看一级黄色 | 91免费版在线| 成人免费xyz网站 | 91av在线免费观看 | 国产黄色免费 | 亚洲免费在线看 | 中文字幕在线免费观看 | 91精品爽啪蜜夜国产在线播放 | 亚洲成人资源 | 国产一级在线观看 | 九九亚洲视频 | 香蕉视频国产在线 | 97视频在线免费 | 黄在线免费观看 | 91最新网址在线观看 | 91精品区 | 国产日韩精品欧美 | 最近免费中文字幕 | 国产视频在线看 | 夜色.com | 97在线观看视频 | 黄色国产区 | 中文字幕在线观看你懂的 | 日本韩国在线不卡 | 欧美色图亚洲图片 | 特级毛片爽www免费版 | 懂色av一区二区三区蜜臀 | 亚洲精品小视频 | 国产成免费视频 | 婷婷免费视频 | 中文字幕国内精品 | 亚洲三级网站 | 久9在线| 三级av在线| 欧美综合色在线图区 | 国产一级片免费播放 | 午夜精品久久久久久久99婷婷 | 91人人揉日日捏人人看 | 在线观看亚洲专区 | 日本爱爱免费视频 | 天天干,天天干 | 最近中文字幕视频网 | 国产一区成人在线 | 国产在线观看,日本 | 国产成人精品一区二区在线观看 | av免费看网站 | 亚洲高清av | 精品国内 | 亚洲综合日韩在线 | 久久久久国产精品免费免费搜索 | 天天射一射 | 日韩精品一区二区三区在线播放 | 亚洲精品色 | av一区在线| 亚洲美女视频在线观看 | 亚洲成人资源在线观看 | 美女网站黄在线观看 | 国产99久久久国产 | 在线免费观看黄色小说 | av中文在线影视 | 中文字幕国语官网在线视频 | 国产精品12 | 96精品在线 | 久久精品电影 | 亚洲欧美日韩一二三区 | 久久国产精品小视频 | 国产精品久久片 | 色狠狠一区二区 | 国产亚州精品视频 | 四虎国产精品免费 | 色播五月激情五月 | 偷拍精品一区二区三区 | 久久影院亚洲 | 亚洲人成免费网站 | 国内一级片在线观看 | 日韩免费三区 | 97超碰中文| 色婷婷在线播放 | 成人免费91 | 日韩高清三区 | 亚洲国产视频直播 | 国产精品永久 | 一区二区视频欧美 | 国产成人在线一区 | 精品uu | 成全在线视频免费观看 | 国产精品一区二区久久精品爱涩 | 国产福利免费看 | 99热九九这里只有精品10 | 国产精品一区二区 91 | 国产福利资源 | 久久精彩视频 | 黄色美女免费网站 | 日韩精品一区二区三区中文字幕 | 亚洲欧美视频在线播放 | 国产欧美最新羞羞视频在线观看 | 成人国产网址 | 国产999精品久久久久久 | 亚洲成av人影院 | 成人免费观看视频网站 | 日本精品一 | 成人av影视 | 亚洲午夜电影网 | 91亚色免费视频 | 在线观看成年人 | 国产一区免费在线 | 国产午夜视频在线观看 | 久久综合欧美精品亚洲一区 | 视频在线观看亚洲 | 国产尤物一区二区三区 | 999电影免费在线观看 | 欧美日韩国产二区三区 | 国产原创在线视频 | 91精品国产综合久久久久久久 | 国产99久久久久 | 91精品蜜桃 | 日韩啪啪小视频 | 日本三级在线观看中文字 | 欧美最爽乱淫视频播放 | 91久草视频 | 深爱激情亚洲 | 在线午夜 | 久久激五月天综合精品 | 国产最新91| 国产在线播放观看 | 久章草在线 | 久久婷综合 | 国内精品久久久久影院日本资源 | 国产剧在线观看片 | 最新色站| 国产一卡二卡在线 | 日韩三级视频在线看 | 色综合久久久久 | 国产精品18久久久久白浆 | 国产精品永久久久久久久www | 久久免费视频这里只有精品 | 久色 网 | 三级av网站| 免费观看成年人视频 | 日韩精品视频久久 | 中日韩免费视频 | 日本一区二区三区免费观看 | 黄色三几片 | 亚洲精品乱码久久久久久久久久 | 国产精品久久久久永久免费看 | 久久久久久久久精 | 久久爱导航 | 麻豆国产精品一区二区三区 | 美女网站免费福利视频 | 三级av片| 毛片二区| 色综合久久88 | 欧洲亚洲国产视频 | 日韩视频免费观看高清 | 久草在线资源网 | 欧美精品一区二区三区四区在线 | 国产高清视频在线播放一区 | 日韩精品中文字幕一区二区 | 婷婷久久亚洲 | 97免费中文视频在线观看 | 四虎5151久久欧美毛片 | 国产黄色理论片 | 成人毛片100免费观看 | 欧美韩国日本在线 | 国产亚洲精品成人av久久影院 | 久久极品| 久久中文字幕视频 | 免费av网站在线看 | 欧美日韩国产三级 | 久久少妇免费视频 | 亚洲欧美日韩国产 | 九9热这里真品2 | 国产偷v国产偷∨精品视频 在线草 | 视频在线观看入口黄最新永久免费国产 | 亚洲成年片| 伊人婷婷在线 | 91视频免费观看 | 久久不卡日韩美女 | av在线播放快速免费阴 | 亚洲v欧美v国产v在线观看 | 99国内精品久久久久久久 | 国产中文字幕一区二区三区 | 久久精品国产99 | 在线亚州| 国产成人精品在线观看 | 亚洲精品综合一区二区 | 天天操夜夜做 | 国产精品国产三级国产aⅴ9色 | av动图| 久久tv | av综合站| 五月天婷亚洲天综合网鲁鲁鲁 | 日日天天| 日日夜夜操av | 91精品国产欧美一区二区 | 九色免费视频 | 99久久精品国产欧美主题曲 | 国产成人综合精品 | 日韩啪啪小视频 | 国产五十路毛片 | 久久久久久综合 | 免费网站看v片在线a | 91在线观看高清 | 91看片在线免费观看 | 九九久久电影 | 久久久久亚洲精品中文字幕 | 国产一线二线三线性视频 | 日韩一区二区免费在线观看 | 久操视频在线 | 美女网站视频免费都是黄 | 九九国产精品视频 | 国产美女在线免费观看 | 精品福利在线视频 | 97碰碰碰 | 国产精品自产拍在线观看 | 亚洲欧洲xxxx | 国产亚洲精品无 | 国产aa免费视频 | 91成人精品 | 日韩av手机在线观看 | 97超碰人人在线 | 美女网站色免费 | 五月激情婷婷丁香 | 少妇18xxxx性xxxx片 | 成人手机在线视频 | 青青草视频精品 | 美女激情影院 | 国产精品一区二区麻豆 | 欧美地下肉体性派对 | 久久久久国产精品一区二区 | 韩国一区在线 | 91成人欧美 | 日本少妇久久久 | 草久久久久久久 | 国内精品久久天天躁人人爽 | 色偷偷av男人天堂 | 在线小视频你懂的 | 日日碰狠狠躁久久躁综合网 | 人人爽人人爱 | 国产91精品一区二区绿帽 | 亚洲成人xxx | 欧美日韩aa | 国产午夜精品一区二区三区在线观看 | 黄a在线看 | 欧美久久久久久久久久久 | 日韩精品视频在线观看免费 | 欧美日韩伦理一区 | 久久成人亚洲欧美电影 | 亚洲日日射 | 久久电影中文字幕视频 | 国精产品999国精产品岳 | 91av在线免费观看 | 亚洲免费激情 | 色视频在线观看免费 | 伊人国产在线播放 | 最近中文字幕在线中文高清版 | 日本久久久亚洲精品 | 欧美日韩超碰 | 97超碰人人模人人人爽人人爱 | 欧美在线视频一区二区 | 国内成人精品视频 | 国内精品久久久久久久久久久久 | 中文字幕在线看 | 国产成人一区二区三区 | 中文字幕一区在线观看视频 | 国产又粗又猛又黄又爽 | 亚洲乱码精品 | 成人精品电影 | 激情五月婷婷网 | 狠狠亚洲 | 在线观看日韩精品 | 久久草在线免费 | 热re99久久精品国产99热 | 午夜精品久久久久久久99婷婷 | 精品久久精品 | 中文字幕 欧美性 | 久久综合九色综合欧美狠狠 | 亚洲欧美成人综合 | 女人魂免费观看 | 天天爽天天摸 | 久久久久久久久久久久久久免费看 | 蜜桃传媒一区二区 | 99超碰在线播放 | 亚洲乱亚洲乱妇 | 日本午夜在线亚洲.国产 | 国产a网站| sesese图片 | 国产小视频免费在线网址 | 欧美日韩二区在线 | 99精品欧美一区二区蜜桃免费 | 欧美精品久久久久久久久久 | 天天干夜夜干 | 久久私人影院 | 中文字幕精品视频 | 97看片吧 | 91亚洲国产 | 日本中文字幕在线观看 | 中文字幕一区二区三区在线观看 | 夜夜躁日日躁狠狠久久av | www.天天干.com | 人人爽人人澡人人添人人人人 | 成人av日韩 | 99久久日韩精品免费热麻豆美女 | 最近更新的中文字幕 | 中文资源在线官网 | 天天操天天干天天操天天干 | 91精品亚洲影视在线观看 | 色婷婷综合久久久久 | 九草视频在线 | 中文字幕第一页在线vr | 91最新中文字幕 | 日本在线h | 少妇搡bbb | 国产精品久久久电影 | 97免费视频在线播放 | av免费片| 亚洲色图 校园春色 | 国产精品6 | 久久国产精品二国产精品中国洋人 | 99久久精品国产亚洲 | 丁香婷婷在线观看 | 五月婷综合网 | 久久精品首页 | 一区二区三区播放 | 黄色av在| 久久色视频| 天天色天天射综合网 | 97色综合| 欧美污在线观看 | 伊人天天操 | 99久久精品费精品 | 在线精品视频在线观看高清 | 在线视频 亚洲 | 国产永久网站 | 精品视频999| 国产精品一区欧美 | 91精品伦理 | 国内久久看 | 91精品在线播放 | 国产一级免费播放 | 综合色久 | 成年人视频免费在线 | 国产成人精品一区二区 | 夜添久久精品亚洲国产精品 | 中文字幕国产精品一区二区 | 久草免费在线视频观看 | 国产视频一区在线免费观看 | av在线免费网站 | 国产专区第一页 | 很黄很污的视频网站 | 久久久久亚洲精品国产 | av在线播放不卡 | 国产视频一区精品 | 99精品视频播放 | 九九久久精品视频 | av天天澡天天爽天天av | 激情婷婷| 日韩超碰 | 一区二区视频在线播放 | 欧美亚洲国产精品久久高清浪潮 | 97香蕉超级碰碰久久免费软件 | 婷婷.com | 欧美精品久久久久久久久久 | 久久伊人五月天 | 日韩成人av在线 | 免费观看全黄做爰大片国产 | 超碰在线观看av | 91av视频在线免费观看 | av 一区二区三区四区 | 欧美精品一区二区在线观看 | 草久在线观看视频 | 日韩av片在线 | 日本中文不卡 | 97电院网手机版 | 婷婷www| 麻豆国产视频 | 国产亚洲精品久久久久动 | 国产精品女 | 激情视频在线观看网址 | 国产高清黄 | 成人午夜电影在线播放 |