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

面試官:線上MySQL的自增id用盡怎么辦?

數據庫 MySQL
MySQL的自增id都定義了初始值,然后不斷加步長。雖然自然數沒有上限,但定義了表示這個數的字節長度,計算機存儲就有上限。

比如,無符號整型(unsigned int)是4個字節,上限就是2^32 - 1。那自增id用完,會怎么樣?

表定義自增值id

表定義的自增值達到上限后的邏輯是:再申請下一個id時,得到的值保持不變。

mysql> create table t(id int unsigned auto_increment primary key) auto_increment=4294967295;
Query OK, 0 rows affected (0.01 sec)
mysql> insert into t values(null);
Query OK, 1 row affected (0.00 sec)
mysql> show create table t;
+-------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| t | CREATE TABLE `t` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4294967295 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci |
+-------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
//成功插入一行 4294967295
mysql> insert into t values(null);
ERROR 1062 (23000): Duplicate entry '4294967295' for key 't.PRIMARY'

第一個insert成功后,該表的AUTO_INCREMENT還是4294967295,導致第二個insert又拿到相同自增id值,再試圖執行插入語句,主鍵沖突。

2^32 - 1(4294967295)不是一個特別大的數,一個頻繁插入刪除數據的表是可能用完的。建表時就需要考慮你的表是否有可能達到該上限,若有,就應創建成8字節的bigint unsigned。

InnoDB系統自增row_id

若你創建的InnoDB表未指定主鍵,則InnoDB會自動創建一個不可見的,6個字節的row_id。InnoDB維護了一個全局的dict_sys->row_id值

所有無主鍵的InnoDB表,每插入一行數據,都將當前的dict_sys->row_id作為要插入數據的row_id,然后把dict_sys->row_id加1。

代碼實現時row_id是個長度為8字節的無符號長整型(bigint unsigned)。但InnoDB在設計時,給row_id留的只是6個字節的長度,這樣寫到數據表中時只放了最后6個字節,所以row_id能寫到數據表中的值,就有兩個特征:

  • row_id寫入表中的值范圍,是從0到2^48 - 1
  • 當dict_sys.row_id=2^48時,如果再有插入數據的行為要來申請row_id,拿到以后再取最后6個字節的話就是0

即寫入表的row_id從0~2^48 - 1。達到上限后,下個值就是0,然后繼續循環。

2^48 - 1已經很大,但若一個MySQL實例活得久,還是可能達到上限。

InnoDB里,申請到row_id=N后,就將這行數據寫入表中;若表中已經存在row_id=N的行,新寫入的行就會覆蓋原有的行。

驗證該結論:通過gdb修改系統的自增row_id。用gdb是為了便于復現問題,只能在測試環境使用。

  • row_id用完的驗證序列

  • row_id用完的效果驗證

可見,在我用gdb將dict_sys.row_id設置為2^48之后,再插入a=2會出現在表t的第一行,因為該值的row_id=0。

之后再插入a=3,由于row_id=1,就覆蓋了之前a=1的行,因為a=1這一行的row_id也是1。

所以應該在InnoDB表中主動創建自增主鍵:當表自增id到達上限后,再插入數據時會報主鍵沖突錯誤。

畢竟覆蓋數據,就意味著數據丟失,影響數據可靠性;報主鍵沖突,插入失敗,影響可用性。一般可靠性優于可用性。

Xid

redo log和binlog有個共同字段Xid,用來對應事務。Xid在MySQL內部是如何生成的呢?

MySQL內部維護了一個全局變量global_query_id

每次執行語句時,將它賦值給query_id,然后給該變量+1:

若當前語句是該事務執行的第一條語句,則MySQL還會同時把query_id賦值給該事務的Xid:

而global_query_id是一個純內存變量,重啟之后就清零了。所以同一DB實例,不同事務的Xid可能相同。

但MySQL重啟之后會重新生成新binlog文件,這就保證同一個binlog文件里的Xid唯一。

雖然MySQL重啟不會導致同一個binlog里面出現兩個相同Xid,但若global_query_id達到上限,就會繼續從0開始計數。理論上還是會出現同一個binlog里面出現相同Xid。

因為global_query_id8字節,上限2^64 - 1。要出現這種情況,需滿足:

  • 執行一個事務,假設Xid是A
  • 接下來執行2^64次查詢語句,讓global_query_id回到A 2^64太大了,這種可能只存在于理論中。
  • 再啟動一個事務,這個事務的Xid也是A

Innodb trx_id

  • Xid由server層維護

InnoDB內部使用Xid,為了關聯InnoDB事務和server

但InnoDB自己的trx_id,是另外維護的事務id(transaction id)。

InnoDB內部維護了一個max_trx_id全局變量,每次需要申請一個新的trx_id時,就獲得max_trx_id的當前值,然后并將max_trx_id加1。

InnoDB數據可見性的核心思想

每一行數據都記錄了更新它的trx_id,當一個事務讀到一行數據時,判斷該數據是否可見,就是通過事務的一致性視圖與這行數據的trx_id做對比。

對于正在執行的事務,你可以從information_schema.innodb_trx表中看到事務的trx_id。

看如下案例:事務的trx_id

S2 的執行記錄:

mysql> use information_schema;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> select trx_id, trx_mysql_thread_id from innodb_trx;
+-----------------+---------------------+
| trx_id | trx_mysql_thread_id |
+-----------------+---------------------+
| 421972504382792 | 70 |
+-----------------+---------------------+
1 row in set (0.00 sec)
mysql> select trx_id, trx_mysql_thread_id from innodb_trx;
+---------+---------------------+
| trx_id | trx_mysql_thread_id |
+---------+---------------------+
| 1355623 | 70 |
+---------+---------------------+
1 row in set (0.01 sec)

S2從innodb_trx表里查出的這兩個字段,第二個字段trx_mysql_thread_id就是線程id。顯示線程id,是為說明這兩次查詢看到的事務對應的線程id都是5,即S1所在線程。

t2時顯示的trx_id是一個很大的數;t4時刻顯示的trx_id是1289,看上去是一個比較正常的數字。這是為啥?

  • t1時,S1還未涉及更新,是一個只讀事務。對于只讀事務,InnoDB并不會分配trx_id:
  • t1時,trx_id的值就是0。而這個很大的數,只是顯示用

直到S1在t3時執行insert,InnoDB才真正分配trx_id。所以t4時,S2查到該trx_id的值就是1289。

除了明顯的修改類語句,若在select 語句后面加上for update,也不是只讀事務。

  • update 和 delete語句除了事務本身,還涉及到標記刪除舊數據,即要把數據放到purge隊列里等待后續物理刪除,這個操作也會把max_trx_id+1, 因此在一個事務中至少加2
  • InnoDB的后臺操作,比如表的索引信息統計這類操作,也是會啟動內部事務的,因此你可能看到,trx_id值并不是按照加1遞增的。

t2時查到的很大數字是怎么來的?

每次查詢時,由系統臨時計算:

當前事務的trx變量的指針地址轉成整數,再加上248

這樣可以保證:

  • 因為同一只讀事務在執行期間,它的指針地址不會變,所以無論在 innodb_trx還是在innodb_locks表里,同一個只讀事務查出來的trx_id就會是一樣的
  • 若有并行只讀事務,每個事務的trx變量的指針地址肯定不同。這樣,不同并發只讀事務,查出來的trx_id就是不同的。

為什么要加248?

保證只讀事務顯示的trx_id值比較大,正常情況下就會區別于讀寫事務的id。但trx_id跟row_id的邏輯類似,定義為8個字節。

理論上還是可能出現一個讀寫事務與一個只讀事務顯示的trx_id相同。不過概率很低,也沒有什么實質危害,不管。

為何只讀事務不分配trx_id?

  • 減小事務視圖里面活躍事務數組的大小。因為當前正在運行的只讀事務,不影響數據的可見性判斷。所以,在創建事務的一致性視圖時,InnoDB就只需要拷貝讀寫事務的trx_id
  • 減少trx_id的申請次數。InnoDB執行一個普通的select語句,也要對應一個只讀事務。所以只讀事務優化后,普通查詢語句無需申請trx_id,大大減少并發事務申請trx_id的鎖沖突

由于只讀事務不分配trx_id,顯然trx_id的增速變慢。

但 max_trx_id 會持久化存儲,重啟也不會重置為0。理論上,只要一個MySQL實例跑得夠久,就可能出現max_trx_id達到2^48 - 1,然后從0開始循環。

達到該狀態后,MySQL就會持續出現一個臟讀bug:

首先把當前的max_trx_id先修改成2^48 - 1。這里是可重復讀。

  • 復現臟讀

  • 因為系統的max_trx_id被設置成2^48 - 1,所以在session A啟動的事務TA的低水位就是2^48 - 1。

t2時:

  • session B執行第一條update語句的事務id=2^48 - 1
  • 第二條事務id就是0了,這條update執行后生成的數據版本上的trx_id=0

t3時:

session A執行select的可見性判斷:c=3這個數據版本的trx_id(0),小于事務TA的低水位(2^48 - 1),所以認為該數據可見。

但這是臟讀。

由于低水位值會持續增加,而事務id從0開始計數,導致系統在該時刻后,所有查詢都會出現臟讀。

并且MySQL重啟時max_trx_id也不會清0,即重啟MySQL,這個bug仍然存在。那這bug也是只存在于理論上嗎?

假設一個MySQL實例的TPS是50w,持續這樣,17.8年后就會出現該情況。但從MySQL真正開始流行到現在,恐怕都還沒有實例跑到過這個上限。不過,只要MySQL實例服務時間夠長,就必然會出現該bug。

這也可以加深對低水位和數據可見性的理解

thread_id

系統保存了一個全局變量thread_id_counter

每新建一個連接,就將thread_id_counter賦值給這個新連接的線程變量new_id。

thread_id_counter定義為4個字節,因此達到2^32 - 1,就會重置為0,繼續增加。

但不會在show processlist看到兩個相同的thread_id。因為MySQL使用了一個唯一數組

給新線程分配thread_id時的邏輯:

總結

每種自增id有各自的應用場景,在達到上限后的表現也不同:

表的自增id達到上限后,再申請時它的值就不會改變,進而導致繼續插入數據時報主鍵沖突錯誤。

row_id達到上限后,則會歸0再重新遞增,如果出現相同的row_id,后寫的數據會覆蓋之前的數據。

Xid只需要不在同一個binlog文件中出現重復值即可。雖然理論上會出現重復值,但是概率極小,可以忽略不計。

InnoDB的max_trx_id 遞增值每次MySQL重啟都會被保存起來,所以我們文章中提到的臟讀的例子就是一個必現的bug,好在留給我們的時間還很充裕。

責任編輯:龐桂玉 來源: Java面試那些事兒
相關推薦

2020-03-28 15:50:18

數據庫自增ID維護

2019-09-18 15:49:06

MySQL數據庫面試官

2024-11-11 00:00:06

MySQLID數據類型

2023-10-17 09:41:04

自增主鍵MySQL

2022-02-14 15:03:50

MySQL程序員面試

2024-10-24 09:22:30

2023-10-24 15:27:33

Mysql自增主鍵

2024-08-27 11:59:47

2021-09-06 12:58:26

MQ面試數據庫

2024-06-14 08:34:36

2024-03-27 14:39:48

MySQL數據庫分庫分表

2025-11-03 13:00:00

SQL慢SQL數據庫

2024-09-03 09:20:45

2025-10-28 02:00:00

2018-12-14 15:35:20

MySQL索引數據庫

2015-08-13 10:29:12

面試面試官

2022-10-31 09:30:32

kafkaconsumer服務端

2025-10-31 02:00:00

2025-11-11 08:29:01

2023-12-26 01:09:28

MySQL存儲釋放鎖
點贊
收藏

51CTO技術棧公眾號

日产中文字幕在线精品一区| 日韩av大片在线| www激情五月| 日本aa在线| 99久久免费视频.com| 26uuu另类亚洲欧美日本一| av女人的天堂| 久久久久久亚洲精品美女 | 538精品视频| 日本精品国产| 日本高清成人免费播放| 精品国产三级a∨在线| 亚洲 欧美 自拍偷拍| 麻豆精品新av中文字幕| 久久久久久国产精品三级玉女聊斋| 瑟瑟视频在线观看| 精品国产不卡一区二区| 欧美日韩视频在线| 国产又爽又黄ai换脸| 婷婷丁香一区二区三区| 极品尤物av久久免费看| 5566成人精品视频免费| 九九热最新地址| 中日韩免视频上线全都免费| 日韩三级.com| 高清av免费看| 东京一区二区| 亚洲午夜在线视频| 伊人久久大香线蕉精品| 亚洲欧美日韩免费| 国产二区国产一区在线观看| 国产精品视频99| 狠狠躁夜夜躁人人爽天天高潮| 久久香蕉国产| 亚洲性猛交xxxxwww| 日本美女视频网站| 亚洲欧洲专区| 欧美亚洲一区二区三区四区| 欧美激情 国产精品| av网址在线播放| 国产精品久久久久一区二区三区 | 秋霞综合在线视频| 日韩亚洲欧美一区二区三区| 999精品视频在线| 涩涩视频在线免费看| 伊人性伊人情综合网| 亚洲精品在线免费| 国产精品久久久久久久龚玥菲 | 综合久久2019| 中文字幕综合网| 亚洲精品久久久久久一区二区| 欧美日韩视频精品二区| 99麻豆久久久国产精品免费优播| 国产精品10p综合二区| 国产日韩在线观看一区| 国产呦萝稀缺另类资源| 成人精品一区二区三区电影免费| 在线免费a视频| 欧美aaaaaa午夜精品| 中文字幕中文字幕中文字幕亚洲无线| 亚洲三级免费看| 亚洲最大免费视频| 黑色丝袜福利片av久久| 亚洲精品国产欧美| 狠狠人妻久久久久久综合蜜桃| 加勒比久久高清| 亚洲成人精品久久| 亚洲综合自拍网| 在线视频亚洲专区| 国产一区二区三区四区福利| 五月激情四射婷婷| 99精品在线免费在线观看| 日韩中文字幕在线视频| 我要看黄色一级片| 欧美精品日本| 午夜精品蜜臀一区二区三区免费| 久久精品国产成人av| 老牛嫩草一区二区三区日本| 国产精品扒开腿爽爽爽视频| 影音先锋黄色网址| 国产在线视频一区二区三区| αv一区二区三区| 天天操天天操天天干| 26uuu亚洲综合色欧美| 手机成人在线| а√天堂资源地址在线下载| 亚洲综合丁香婷婷六月香| 日韩免费一级视频| 国产原创一区| 日韩一二三区视频| 久久久久国产精品区片区无码| 国产亚洲一区| 欧美尺度大的性做爰视频| 国产午夜小视频| 日韩成人免费在线| 超碰97人人人人人蜜桃| 嫩草精品影院| 亚洲人被黑人高潮完整版| 男人天堂av片| 成人看片毛片免费播放器| 日韩欧美国产一二三区| 国精产品一区二区三区| 亚洲国产一区二区在线观看 | 第一av在线| 欧美性受xxxx黑人xyx| japan高清日本乱xxxxx| 深爱激情综合| 久久99久国产精品黄毛片入口| 999这里只有精品| 激情图片小说一区| 国产一区二区三区免费不卡| 日本福利在线| 精品国产鲁一鲁一区二区张丽| 午夜免费福利视频在线观看| 天美av一区二区三区久久| 精品国偷自产在线| www.com国产| 国产91露脸合集magnet| 天天好比中文综合网| av资源中文在线| 欧美一区二区三区视频在线| 91成年人网站| 亚洲日本欧美| 亚洲一区二区三区乱码aⅴ蜜桃女 亚洲一区二区三区乱码aⅴ | 黑人一区二区| 国产精品中文久久久久久久| 欧美男男激情freegay| 亚洲线精品一区二区三区八戒| gogogo高清免费观看在线视频| 老牛精品亚洲成av人片| 色中色综合影院手机版在线观看 | 欧美一级一区二区| 日本一区二区视频在线播放| 在线亚洲一区| 国产精品xxx在线观看www| 免费观看在线黄色网| 91高清在线观看| 日本黄色录像片| 欧美日韩综合| 91精品天堂| 好了av在线| 欧美视频一区在线观看| 成人黄色免费网址| 久久福利精品| 欧美日韩高清在线一区| 手机在线理论片| 日韩精品高清在线| 日本va欧美va国产激情| aaa国产一区| 蜜臀av无码一区二区三区| 91蝌蚪精品视频| 欧美贵妇videos办公室| 精品国产九九九| 亚洲综合久久久久| 亚洲一级Av无码毛片久久精品| 国产精品videosex极品| 波多野结衣久草一区| 中文字幕有码在线观看| 日韩欧美高清在线| 免费一级全黄少妇性色生活片| 国产a区久久久| 国产日韩欧美精品在线观看| 九色丨蝌蚪丨成人| 欧美亚洲日本网站| 久久精品a一级国产免视看成人| 色婷婷久久综合| аⅴ天堂中文在线网| 麻豆极品一区二区三区| 亚洲国产一区二区在线| 97久久精品一区二区三区的观看方式 | 午夜精品福利在线| 日本一区二区在线免费观看| 午夜在线视频观看日韩17c| 欧美亚洲精品日韩| av成人亚洲| 久久亚洲电影天堂| 亚洲第一视频在线| 欧美视频在线视频| 中文字幕第24页| 国产在线视频一区二区| 欧美狂野激情性xxxx在线观| 五月天亚洲一区| 国产精品久久久久久五月尺| 国产日产一区二区三区| 精品蜜桃在线看| 探花视频在线观看| 国产精品午夜在线观看| 97人人模人人爽人人澡| 在线一区欧美| 国产a级片免费看| 日韩手机在线| 国产欧美日韩高清| 国产色婷婷在线| 亚洲一区二区黄| 国产高清在线免费| 色哟哟国产精品| 全程偷拍露脸中年夫妇| 久久看人人爽人人| 亚欧美一区二区三区| 亚洲综合丁香| 热久久最新网址| 亚洲精华一区二区三区| 91欧美精品午夜性色福利在线| 欧美gv在线| 久久久av亚洲男天堂| 飘雪影院手机免费高清版在线观看| 欧美男男青年gay1069videost| 久久精品国产亚洲av无码娇色| 欧美国产1区2区| 国产精品一区二区人妻喷水| 久久99精品久久久久久| 久久精品国产sm调教网站演员 | 91精品国产毛片武则天| 久草在线成人| 国产成人精品日本亚洲11| 成人自拍视频网| 91国内揄拍国内精品对白| 麻豆系列在线观看| 亚洲一区二区久久久| 亚洲乱码在线观看| 欧美日韩www| 无码一区二区三区| 婷婷久久综合九色国产成人| 久久中文免费视频| 国产精品女同一区二区三区| 欧美精品欧美极品欧美激情| 国产精品77777| 污污网站在线观看视频| 日韩精品欧美成人高清一区二区| 婷婷五月综合缴情在线视频| 中文在线日韩| 在线无限看免费粉色视频| 精品国产精品| 欧美激情一区二区三区在线视频| 成人性生交大片免费看96| 91老司机在线| 亚洲热av色在线播放| 国产精品一区二区3区| 欧美色片在线观看| 日韩av手机在线看| 天堂中文av在线资源库| 97精品一区二区视频在线观看| 青青青草视频在线| 欧美高清在线观看| 欧美6一10sex性hd| 欧美精品少妇videofree| 国产乱色在线观看| 日韩中文有码在线视频| 99视频在线观看地址| 国产一区二区三区精品久久久 | 久久视频在线观看免费| 天堂地址在线www| 色一情一乱一区二区| 丝袜美腿美女被狂躁在线观看| 中文字幕亚洲专区| 永久av在线| 久久精品久久久久| 福利视频在线| 欧美第一黄色网| japanese色国产在线看视频| 久久久最新网址| 欧亚av在线| 国产成人久久精品| 韩国成人在线| 亚洲sss综合天堂久久| 日韩欧美中文在线观看| 成人av免费看| 亚洲大片精品免费| 日本中文不卡| 国产精品久久久久9999赢消| 一区二区三区四区免费观看| 黄色成人精品网站| 噜噜噜久久亚洲精品国产品麻豆 | 2019中文字幕免费视频| 一区二区三区电影大全| 国产精品视频久久久久| 国产999精品在线观看| 国产超碰91| 久久99免费视频| 中文字幕一区二区三区乱码| 午夜精品网站| 国产免费黄色av| 日韩精品电影在线| 中文字幕一区二区三区四| 成人永久看片免费视频天堂| jizz日本免费| 中文字幕中文字幕一区| 久久久www成人免费毛片| 天天操天天干天天综合网| 一二三区免费视频| 91精品综合久久久久久| 天天干天天插天天操| 一区二区三欧美| 丁香花在线观看完整版电影| 国产精国产精品| 999久久久精品一区二区| 欧洲一区二区日韩在线视频观看免费| 外国成人免费视频| 18禁免费观看网站| 精品影视av免费| 三级黄色片网站| 日韩理论片网站| 天天操夜夜操视频| 日韩欧美一区电影| 国产精品二线| 97在线看福利| 久久av网站| 四虎影院一区二区三区 | 久久国产精品久久久久| 9i看片成人免费高清| 444亚洲人体| 成人无号精品一区二区三区| 黄色国产一级视频| 久久aⅴ国产欧美74aaa| 三级电影在线看| 亚洲午夜精品网| 国产在成人精品线拍偷自揄拍| 亚洲欧美国产va在线影院| av片在线观看永久免费| 国产精品久久久久久久电影| 日本精品影院| 少妇人妻大乳在线视频| 国产精品一区二区果冻传媒| 18啪啪污污免费网站| 日韩欧美国产一区二区| 高清一区二区三区四区| 久久久999精品视频| 99久久er| 日本一区二区三区精品视频| 欧美一级播放| 日本黄色录像片| 亚洲成av人片在www色猫咪| 国产男男gay体育生网站| 这里只有精品在线播放| 韩国美女久久| 鲁鲁狠狠狠7777一区二区| 亚洲福利电影| 美女露出粉嫩尿囗让男人桶| 亚洲精品伦理在线| 国产美女永久免费| 色偷偷av一区二区三区| 丁香婷婷久久| 亚洲综合五月天| 久久福利资源站| 女教师淫辱の教室蜜臀av软件| 欧美三级蜜桃2在线观看| av资源种子在线观看| 国产大片精品免费永久看nba| 亚洲精品国产精品粉嫩| 大肉大捧一进一出好爽视频| 99视频超级精品| 亚洲日本韩国在线| 日韩精品视频在线播放| 亚洲精品福利电影| 精品中文字幕人| 男女精品网站| 无码人妻aⅴ一区二区三区69岛| 色综合久久久久综合体| 国产午夜视频在线观看| 国产精品成人av性教育| 成人免费电影网址| 日本美女视频一区| 亚洲男人的天堂一区二区| 国产三区在线播放| 欧美激情中文字幕在线| 卡一精品卡二卡三网站乱码| 可以在线看的黄色网址| 国产日韩一级二级三级| 亚洲熟女乱色一区二区三区久久久| 日韩在线免费视频观看| 欧美一级大片在线视频| 欧美黄网在线观看| 99精品久久久久久| 黄色污污网站在线观看| 日韩视频第一页| 136福利精品导航| 午夜精品久久久久久久无码| 国产欧美日韩视频在线观看| 91女人18毛片水多国产| 久久99国产精品自在自在app| 三级小说欧洲区亚洲区| 天天色综合天天色| 亚洲乱码中文字幕| 婷婷色在线视频| 国产精品嫩草视频| 红桃视频亚洲| 级毛片内射视频| 日韩欧美中文一区| 成人片免费看| 美女在线免费视频| 久久综合精品国产一区二区三区| 一女二男一黄一片| 久久久这里只有精品视频| 激情婷婷综合| 国产黑丝在线视频| 色94色欧美sute亚洲线路二 | 欧美一级裸体视频| 亚洲综合一区二区三区| 国产鲁鲁视频在线观看免费| 91久久伊人青青碰碰婷婷|