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

MySQL:不是MySQL問題的MySQL問題

數據庫 MySQL
有的時候我們遇到的問題,看起來像MySQL自身的問題,但是實際上是業務代碼自己的問題,這里我們來看兩個例子,這兩個看起來像MySQL自身的問題,但是實際上不是的,這里就來聊一下這兩個問題,以及我的分析方式。

一、自定義函數的BUG導致的問題

這個問題是跑一條如下的的SQL

update test set p_id=getPid(c_id);

這個表只有10w條數據,但是語句卻一直不能完成,如果將語句加上limit,當limit 50000的時候是可以執行完成的,但是當limit 80000的時候就一直不能完成。并且有一個現象,就是語句會不斷會出現opening tables的狀態。

 既然語句不能執行完成,那么就需要找到為什么不能完成,先把等待的原因找到,比如:

  • 鎖等待?
  • CPU打滿?
  • IO打滿?

排查下來發現這個語句在實際執行的時候占用了大量的CPU,因此我們分別采集了正常執行和異常的情況,發現異常的時候正常的邏輯幾乎成了一根線,而非正常的邏輯占用了大量的CPU如下:圖片

那么很顯然,實際上本語句執行異常的情況下,CPU都沒有處理正常的邏輯。而其上層調用sp_head::execute_function就是執行函數的上層調用,而這里只有一個自定義函數,因此幾乎可以判定是自定義函數內部邏輯遇到了什么問題。接著我們使用pstack對異常情況的執行棧進行了查看,并且多次測試正常邏輯的pstack執行棧,發現其中有一個邏輯入參不斷在膨脹,且內存長度不斷增加(length),圖片

當然這里所有的都是我的測試環境的構建,不是線上環境。那么就可以確認函數內部在做拼接的時候遇到了問題,繼而我們打開自定義函數getPid,發現其中有一個while循環,循環內部在做字段的拼接,拼接完成后返回值,就是這個while循環,在滿足一定情況下會出現死循環,而且根據pstack入參這個字符串,實際上就是不斷在拼接某個字段,這個字段的值為1,由于死循環拼接了很長很長,這里看到就是1,1,1,1,1,1......,這樣我們也拿到了這個出現問題行的字段值 1,并且我們通過死循環條件也能判斷出另外一個字段的值,接下來就根據這兩個字段在表里面查一下就可以找到導致死循環的行,當然這里只是講一個思路,不方便給出這個自定義函數。出現死循環的問題也剛好符合CPU打滿的情況。

其次由于自定義函數內存有select 語句,這個語句在遇到自定義函數死循環的情況下要不斷的循環跑,因此就觀察到update 語句執行異常期間,觀察到opening tables的情況。

二、應用代碼static 變量導致的死鎖

這個問題在MySQL層的表現就是出現了死鎖,但是這個死鎖表很簡單,簡單到只有少量的記錄,而且只有主鍵,并且沒有其他的索引這里假定主鍵就是id,且為RC隔離級別,每次執行的語句也是根據主鍵來查詢和更新的,如下:

begin;
select * from test where id=1 for update;
update test set name='a' where id=1;
commit;

死鎖如下(這里刪除了詳細數據):
------------------------
LATEST DETECTED DEADLOCK
------------------------
2022-07-06 19:48:38 0x7efc44162700
*** (1) TRANSACTION:
TRANSACTION 12739556, ACTIVE 0 sec starting index read
mysql tables in use 1, locked 1
LOCK WAIT 3 lock struct(s), heap size 1136, 2 row lock(s)
MySQL thread id 627119, OS thread handle 139619931977472, query id 129095157 192.168.1.81 root updating
update test set name='a' where id=1

*** (1) HOLDS THE LOCK(S):
RECORD LOCKS space id 388279 page no 4 n bits 152 index PRIMARY of table `test`.`test` trx id 12739556 lock_mode X locks rec but not gap
Record lock, heap no 82 PHYSICAL RECORD: n_fields 16; compact format; info bits 0

*** (1) WAITING FOR THIS LOCK TO BE GRANTED:
RECORD LOCKS space id 388279 page no 4 n bits 152 index PRIMARY of table `test`.`test` trx id 12739556 lock_mode X locks rec but not gap waiting
Record lock, heap no 55 PHYSICAL RECORD: n_fields 16; compact format; info bits 0

*** (2) TRANSACTION:
TRANSACTION 12739557, ACTIVE 0 sec starting index read
mysql tables in use 1, locked 1
LOCK WAIT 3 lock struct(s), heap size 1136, 2 row lock(s)
MySQL thread id 627114, OS thread handle 139621354526464, query id 129095158 192.168.1.81 root updating
update test set name='o' where id=2

*** (2) HOLDS THE LOCK(S):
RECORD LOCKS space id 388279 page no 4 n bits 152 index PRIMARY of table `test`.`test` trx id 12739557 lock_mode X locks rec but not gap
Record lock, heap no 55 PHYSICAL RECORD: n_fields 16; compact format; info bits 0

*** (2) WAITING FOR THIS LOCK TO BE GRANTED:
RECORD LOCKS space id 388279 page no 4 n bits 152 index PRIMARY of table `test`.`test` trx id 12739557 lock_mode X locks rec but not gap waiting
Record lock, heap no 82 PHYSICAL RECORD: n_fields 16; compact format; info bits 0

*** WE ROLL BACK TRANSACTION (2)

那么出現這種死鎖問題,一般分析路徑為:

  • 業務代碼是否有問題。
  • 執行計劃是否有問題。
  • 最后才是重現,分析MySQL本身的問題。

當我們分析第一點的時候,業務代碼寫得很簡單,也很清晰就是前面的事務邏輯,這種事務說實話出現死鎖貌似不太可能,因為很簡單查詢是查詢的主鍵,更新的時候也是通過主鍵更新一個字段的值而已,且除了主鍵沒有其他的索引,這種情況一般只會是堵塞而不會出現死鎖。

然后我們在測試環境模擬死鎖的時候打開了general log,發現并不是我們想象的,多線程的各個語句和事務是在一個session 交替進行的,這就奇怪了,言外之意就是多個業務線程對應了一個session,大概如下:

begin;
update set name='o' where id=2
commit;
begin;
select * from test where id=1 for update;
select * from test where id=3 for update;
select * from test where id=4 for update;
update test set name='a' where id=3;
update test set name='a' where id=1;
commit;
update set name='o' where id=4;

反正沒什么規律,這貌似很像多線程并發并且所有語句堆到了同一個session。

那么進而分析,代碼變量的定義我們才發現代碼中將連接變量的屬性設置為了static類型的,開發環境當然是java的 ,我們可以類比C++,C++中如果將類變量的屬性加上static代表是靜態變量,這種變量的值不是存在棧上的,而是存在靜態全局區,所有通過本類實例化的對象,都共享了這個靜態變量,換一句話說,如果某個實例化的對象修改了這個靜態變量那么所有的實例化對象都會修改,當然java/python 都有類似的使用方法。主要還是看內存到底是棧內存/堆內存/全局內存。那么這個問題就變得簡單了,當多個線程同時初始化建立好連接過后,所有的線程實際上最后得到連接只有一個。類似如下:

最后為了驗證我寫了一個測試用例(見末尾),很難跑成功,因為4個線程同時使用了一個connect,感覺應該是C下面這樣在獲取結果(mysql_store_result)和free結果(mysql_free_result)的時候可能的情況是未知的,當然也沒去仔細研究lib庫函數的使用方式可能寫的方式也有問題,反正各種crash(core dump)。但是在偶爾能夠成功的時候可以在general log中看到如下日志,這里就是所有線程的語句堆到同一個session:

static變量:
2022-07-08T07:07:50.364174Z 173 Query select 1
2022-07-08T07:07:50.365168Z 173 Query select 2
2022-07-08T07:07:50.365903Z 173 Query select 3
2022-07-08T07:07:50.370390Z 173 Query select 0
2022-07-08T07:07:51.367748Z 173 Query select 2
2022-07-08T07:07:51.367903Z 173 Query select 1
2022-07-08T07:07:51.368161Z 173 Query select 3

顯然這是一個session id 為173,而實際上測試用例4個線程會不斷的跑select 0/select 1/select 2/select 3。但是4個線程對應了同一個session,這也和我們實際情況一致,這樣如果多個應用各自啟動了多個線程,那么混跑語句就會出現下面的情況:

app1 多線程:                                                               
begin;
select * from test where id=1 for update;
select * from test where id=2 for update;
select * from test where id=3 for update;
update set name='a' where id=1;
update set name='a' where id=2;
commit;

app2 多線程:
begin;
select * from test where id=2 for update;
select * from test where id=1 for update;
select * from test where id=3 for update;
update set name='a' where id=2;
update set name='a' where id=3;
commit;

事務被無序的擴大了,死鎖概率當然大大增加。這也是我們實際環境中看到的情況。當然如果測試用例使用局部變量就沒有問題,改為局部變量后正常執行如下:

2022-07-08T07:18:22.582624Z       225 Query     select 0
2022-07-08T07:18:22.582732Z 222 Query select 2
2022-07-08T07:18:22.582638Z 223 Query select 1
2022-07-08T07:18:22.583214Z 224 Query select 3
2022-07-08T07:18:23.583894Z 225 Query select 0
2022-07-08T07:18:23.583973Z 222 Query select 2
2022-07-08T07:18:23.583915Z 223 Query select 1
2022-07-08T07:18:23.584315Z 224 Query select 3

這里就是4個thread對應了4個session,各自跑的各自的語句。

附件

C++ 測試用例,如果改成局部變量后4個線程對應4個session,可以正常跑沒有問題如下,static 變量容易導致各種crash。

#include<stdio.h>
#include<stdlib.h>
#include<iostream>
#include "/opt/mysql/mysql3306/install/include/mysql.h"
#include <time.h>
#include <unistd.h>

using namespace std;


class My_Con
{
public:
MYSQL conn_ptr;
My_Con(const char *host,const char *user,const char *passwd,unsigned int port)
{
mysql_init(&conn_ptr);
if(mysql_real_connect(&conn_ptr,host,user,passwd,NULL,port,NULL,0)==NULL)
{
printf("err: mysql_real_connect() error %s\n",mysql_error(&conn_ptr));
exit(1);
}
}
MYSQL* get_conn()
{
return &conn_ptr;
}
//~My_Con(){mysql_close(&conn_ptr);cout<<"close connect"<<endl;}
};


class My_Test
{
public:
static MYSQL* conn_ptr; //靜態指針
static My_Con* test; //靜態指針
int myid;
MYSQL_RES *query_res;
char strtest[30];

My_Test(const int i)
{
test = new My_Con("192.168.1.61","testuser","gelc123",3306);
conn_ptr = test->get_conn();
myid = i ;
query_res = NULL;
}
void* get_string(int id)
{
sprintf(strtest, "select %d ;", id);
cout<<strtest<<endl;
}



void test_query()
{
get_string(myid);
if(mysql_query(conn_ptr,strtest) != 0)
{
printf("err: mysql_query() error %s %s\n",mysql_error(conn_ptr),strtest);
//exit(1);
}

query_res=mysql_store_result(conn_ptr);
if(query_res == NULL)
{
;
}
mysql_free_result(query_res);

}
//TIPS: static variables
// ~My_Test(){delete []test;}

};
My_Con* My_Test::test = NULL;
MYSQL* My_Test::conn_ptr = NULL;


void* test_func(void* arg)
{
My_Test a(*((int*)arg)); //建立連接
struct timespec n_sec;
n_sec.tv_sec = 1;
n_sec.tv_nsec = 0;

for(;;)
{
nanosleep(&n_sec,NULL);
a.test_query();
}

}


int main()
{
pthread_t tid[4];
int tid_num = 0;
int i = 0;
int ret = 0;
int seq[4] = {0,1,2,3};

pthread_create(tid+tid_num,NULL,test_func,(void*)seq);
tid_num++;
pthread_create(tid+tid_num,NULL,test_func,(void*)(seq+1));
tid_num++;
pthread_create(tid+tid_num,NULL,test_func,(void*)(seq+2));
tid_num++;
pthread_create(tid+tid_num,NULL,test_func,(void*)(seq+3));
tid_num++;

//堵塞回收
for(i = 0;i<=tid_num;i++)
{
ret = pthread_join( *(tid+i) , NULL );
}
return 0 ;
}


責任編輯:華軒 來源: MySQL學習
相關推薦

2011-05-16 09:44:40

Mysql

2011-05-16 10:31:19

mysql亂碼

2009-07-10 18:02:05

MyEclipseMySQL

2011-03-22 16:09:33

MySQL 5.0.1亂碼

2021-06-08 08:38:36

MySQL數據庫死鎖問題

2019-01-02 13:03:53

MySQL存儲權限

2018-04-18 09:18:44

數據庫MySQL存儲過程

2010-11-25 11:15:11

MySQL查詢超時

2010-06-10 14:03:00

MySQL EMS

2010-06-10 14:03:00

MySQL EMS

2011-03-14 11:01:42

LAMPMYsql1045

2022-01-26 19:42:05

MySQL亂碼排查

2010-05-12 09:08:49

Mysql中文

2010-05-28 15:37:36

MySQL中文顯示

2010-05-11 17:45:17

MySQL字符

2010-05-25 11:24:34

MySQL 亂碼

2013-07-04 10:55:20

2010-10-14 13:55:58

MySQL創建函數

2018-11-06 12:12:00

MySQL內存排查

2010-10-14 09:15:20

MySQL查詢
點贊
收藏

51CTO技術棧公眾號

亚洲欧美日韩国产综合| 日韩极品在线观看| 亚洲女人天堂网| 青青青在线视频免费观看| 老司机精品影院| 成人手机电影网| 国产精品一区久久| 一级aaa毛片| 欧美日韩在线网站| 欧美精品一区二区久久久 | 亚洲高清在线| 亚洲精品自拍第一页| 999这里有精品| 日本免费一区二区六区| 亚洲天堂免费看| 欧美精品在线一区| 亚洲大尺度网站| 六月丁香婷婷久久| 欧美在线一区二区视频| 久久国产一级片| 日本不卡高清| 亚洲精品视频在线观看视频| 国产精品91av| 9999精品视频| 欧美性受极品xxxx喷水| 国自产拍偷拍精品啪啪一区二区| 国产精品扒开做爽爽爽的视频| 久久香蕉国产线看观看99| 成人91视频| 国产一区二区网站| 日韩电影免费一区| 欧美一区二区大胆人体摄影专业网站| 九九视频在线观看| 午夜精品久久久久久久四虎美女版| 亚洲欧美国产精品专区久久| 超碰caoprom| 视频在线亚洲| 欧美一级夜夜爽| 日韩欧美中文在线视频| 欧美一区=区三区| 欧美性大战久久久久久久| 无码人妻丰满熟妇区五十路百度| av影院在线免费观看| 亚洲成人一区二区在线观看| 91国在线高清视频| 99热国产在线| 一区二区三区国产精品| 日韩精品第1页| 影音先锋在线播放| 亚洲精品久久7777| 久久久99精品视频| 91黄色在线| 亚洲在线免费播放| 免费视频爱爱太爽了| 97天天综合网| 亚洲丰满少妇videoshd| 欧美 日韩 亚洲 一区| 国产传媒在线| 色拍拍在线精品视频8848| av片中文字幕| yiren22亚洲综合| 欧美精品视频www在线观看| 亚洲一区二区福利视频| 国产日韩中文在线中文字幕| 日韩久久久精品| 成人免费看片载| 日韩理论电影中文字幕| 亚洲欧美中文日韩在线| 99自拍偷拍视频| 久久久久国产精品| 欧美激情中文字幕乱码免费| 久久不卡免费视频| 天堂va蜜桃一区二区三区漫画版| 国产精品精品国产| 国产伦理吴梦梦伦理| 国产成人av在线影院| 国内精品二区| 在线中文资源天堂| 亚洲午夜激情网页| 黄色片一级视频| 四虎影视精品永久在线观看| 日韩欧美一区二区不卡| 91精品小视频| 日韩精品四区| 久久久亚洲国产| 免费看毛片网站| 中文字幕第一页在线播放| 精品国产亚洲一区二区在线观看 | 欧美日韩国产专区| 99福利在线观看| 精品乱码一区二区三区四区| 精品人伦一区二区色婷婷| 美女又爽又黄视频毛茸茸| 色琪琪久久se色| 久久久久久久亚洲精品| 在线免费一区二区| 丁香婷婷综合网| 亚洲激情一区二区三区| heyzo高清国产精品| 日本道在线观看一区二区| 先锋资源在线视频| 国产在视频线精品视频www666| 久久在精品线影院精品国产| 国产精品999在线观看| 久久精品av麻豆的观看方式| 精品国产一区二区三区麻豆免费观看完整版| 国产中文字幕在线播放| 亚洲一区视频在线观看视频| 亚洲36d大奶网| 久久97精品| 久久这里有精品| 成人毛片一区二区三区| 成人性视频网站| 一区二区三区我不卡| 中文字幕一区久| 欧美成人一区二区三区片免费 | 色黄视频免费看| 色综合综合网| 久久久久久久久久久免费 | 久久久久久久黄色| 麻豆精品精品国产自在97香蕉| 精品一区久久久| 免费在线中文字幕| 欧美一级欧美一级在线播放| 超碰人人人人人人人| 性高湖久久久久久久久| 99久久精品免费看国产一区二区三区 | 精品亚洲一区二区| 国产午夜福利片| 国产成人精品一区二区三区四区| 一区二区不卡视频| 国产麻豆久久| 亚洲色图第一页| 视频一区二区三区四区五区| 成人激情黄色小说| 日韩av中文字幕第一页| 试看120秒一区二区三区| www高清在线视频日韩欧美| 少妇无套内谢久久久久| 国产亚洲综合av| 日韩手机在线观看视频| 欧美福利在线播放网址导航| 97色伦亚洲国产| 天天干,天天操,天天射| 午夜电影久久久| 人妻无码中文久久久久专区| 99香蕉国产精品偷在线观看| 国产美女精品在线观看| 6699嫩草久久久精品影院| 精品av综合导航| 日韩成人免费观看| 91丨九色丨蝌蚪富婆spa| 欧美日本视频在线观看| 亚洲综合小说图片| 国产成人avxxxxx在线看| 韩国中文字幕2020精品| 欧美熟乱第一页| 自拍偷拍第9页| 国产裸体歌舞团一区二区| 亚洲小说欧美另类激情| 一级毛片精品毛片| 羞羞色国产精品| 精品久久久久一区二区三区 | 久久久久女教师免费一区| 国产v在线观看| 亚洲高清不卡在线| 青青草视频播放| 天堂一区二区在线| 中文字幕一区二区三区精彩视频| 亚洲精品一区二区三区中文字幕| 97香蕉超级碰碰久久免费的优势| 精品av中文字幕在线毛片 | 国产大片一区| 不卡日韩av| 刘亦菲一区二区三区免费看| 色噜噜国产精品视频一区二区| 成人h动漫精品一区二区无码 | 盗摄系列偷拍视频精品tp| 68精品国产免费久久久久久婷婷| 国产鲁鲁视频在线观看免费| 欧美丰满少妇xxxxx高潮对白| 欧美黑吊大战白妞| 久久蜜桃一区二区| 波多野结衣国产精品| 在线免费高清一区二区三区| 奇米影视首页 狠狠色丁香婷婷久久综合| 日本在线视频一区二区| 欧美国产精品日韩| 国产youjizz在线| 欧美一区二区三区的| 国产性猛交╳xxx乱大交| 国产精品理伦片| 人妻激情偷乱频一区二区三区| 日韩一区精品字幕| 国产成人一区二区三区别| 精品国产一区一区二区三亚瑟| av在线亚洲男人的天堂| 国产精品一区二区免费福利视频| 久久久久国产视频| 91在线看片| 日韩av在线天堂网| 国产高潮流白浆喷水视频| 在线一区二区三区做爰视频网站| 久久免费精彩视频| 国产精品天干天干在线综合| xfplay5566色资源网站| 久久国产婷婷国产香蕉| 97在线播放视频| 激情久久久久久| 艳母动漫在线观看| 国产成人久久| 精品乱码一区| 一区二区三区视频免费视频观看网站| 国产欧美日韩最新| 亚洲承认视频| 日本精品在线视频| 成入视频在线观看| 久久91亚洲精品中文字幕| av亚洲在线| 亚洲桃花岛网站| 亚洲日本中文字幕在线| 精品久久久久久无| 国产成人精品免费看视频| 欧美日免费三级在线| 91久久国产综合久久91| 欧美日韩国产精品一区| 国产精品2020| 亚洲午夜久久久| 久草网视频在线观看| 一区二区免费在线| 婷婷色中文字幕| 亚洲免费在线看| 免费国产羞羞网站美图| 国产精品无人区| 日韩精品电影一区二区三区| 国产亚洲一区字幕| 亚洲一区二区自偷自拍| 久久亚洲精品小早川怜子| 精品人妻少妇嫩草av无码| 91年精品国产| 波多野结衣先锋影音| 99久久伊人精品| 91精品人妻一区二区| 久久亚洲精品小早川怜子| av网在线播放| 国产日本欧美一区二区| 亚洲一级理论片| 亚洲丝袜制服诱惑| 国产十六处破外女视频| 亚洲在线一区二区三区| 九九热国产视频| 欧美午夜丰满在线18影院| 久久人妻免费视频| 欧美亚洲一区二区三区四区| 中文人妻熟女乱又乱精品| 欧美精品v日韩精品v韩国精品v| 亚洲一级特黄毛片| 欧美一区二区黄| 人人妻人人玩人人澡人人爽| 精品无人国产偷自产在线| 裸体xxxx视频在线| 综合激情国产一区| 国产精品久久麻豆| 久久久久久久久国产精品| 在线天堂新版最新版在线8| 国产成人黄色av| 欧美黄色网络| 国产精品久久久久久久小唯西川 | 亚洲不卡1区| 国产麻豆一区二区三区精品视频| 亚洲图片都市激情| 欧美女激情福利| 亚洲中文字幕无码av永久| 欧美一区=区| www.污污视频| 99久久99久久久精品齐齐| 性猛交娇小69hd| 亚洲品质自拍视频| 中文字幕免费在线观看视频 | 免费国产羞羞网站视频| 亚洲欧美日韩中文在线| 黄网站在线免费| 91国偷自产一区二区三区的观看方式| 91精品国产66| 国产美女99p| 青青草原综合久久大伊人精品| 91麻豆天美传媒在线| 国产一区二区三区久久久久久久久| 欧美自拍小视频| 国产aⅴ精品一区二区三区色成熟| 毛茸茸多毛bbb毛多视频| 国产精品久久久久久福利一牛影视| 久久国产在线视频| 欧美写真视频网站| 黄色小视频免费在线观看| 自拍偷拍亚洲精品| 国产高清中文字幕在线| 国产日韩中文在线| 亚洲最好看的视频| 日韩久久久久久久久久久久| 青青草国产成人av片免费| 天天色天天干天天色| 国产午夜亚洲精品理论片色戒| 久久久久成人精品无码| 欧美日韩成人综合在线一区二区| 性感美女福利视频| 精品综合久久久久久97| 国产成人毛片| 欧美亚洲免费在线| 亚洲激情av| 在线免费黄色小视频| 国产欧美日韩不卡| www.av麻豆| 精品久久久久一区| 2020国产在线视频| 91精品视频免费观看| 国产亚洲电影| 免费观看日韩毛片| 成人高清视频免费观看| www.超碰在线观看| 欧美美女一区二区三区| 国产69久久| 国产精品2018| 欧美美乳视频| 欧美一级在线看| 成人国产精品免费网站| 91精品国产高清一区二区三蜜臀| 欧美日韩亚洲综合| 成年网站在线| 国产精品www网站| 国产成人三级| 国产一线二线三线在线观看| 9l国产精品久久久久麻豆| 精品无码久久久久久久| 精品久久国产字幕高潮| 婷婷色在线播放| 91青青草免费观看| 午夜日本精品| 女同性αv亚洲女同志| 一区二区三区精品在线| 黄色片网站免费在线观看| 欧美精品www| 国产另类在线| jizzjizzxxxx| 久久精品欧美一区二区三区麻豆| 国产精品免费精品一区| 亚洲人成网在线播放| 91国拍精品国产粉嫩亚洲一区| 亚洲欧美影院| 国产最新精品免费| 久久久久久久久97| 亚洲精品久久久一区二区三区| 毛片在线网站| 日本一区二区三区免费看| 蜜臀av一级做a爰片久久| 亚洲人做受高潮| 日韩一级黄色大片| bbw在线视频| 欧美三级网色| 激情综合网av| 妺妺窝人体色www聚色窝仙踪| 亚洲电影免费观看高清| 一个人看的www视频在线免费观看| 欧美在线播放一区| 久久精品国产免费| 久久亚洲精品大全| 亚洲乱亚洲乱妇无码| 日韩一级视频| 97碰在线视频| 久久先锋影音av| 国产精品玖玖玖| 高清视频欧美一级| 精品美女久久久| 色黄视频免费看| 色综合亚洲欧洲| 黄色网页在线播放| 国产精品久久久久久久天堂第1集| 老牛嫩草一区二区三区日本 | 亚洲国产精品无码久久久久高潮 | 九九热免费精品视频| 亚洲欧美视频在线观看视频| 天天干天天爱天天操| 国产精品丝袜视频| 亚洲经典在线| 五月激情四射婷婷| 亚洲黄色www网站| 欧美美女福利视频| 国产原创中文在线观看 | 亚洲女人天堂色在线7777| 亚洲电影二区| 久久精品国产精品亚洲色婷婷| 亚洲欧洲国产日韩| 性xxxx视频| 91久久极品少妇xxxxⅹ软件| 久久一日本道色综合久久| 波多野结衣亚洲色图| 在线a欧美视频| 日韩中出av| 99国产精品免费视频| 欧美主播一区二区三区|