青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

woaidongmao

文章均收錄自他人博客,但不喜標(biāo)題前加-[轉(zhuǎn)貼],因其丑陋,見(jiàn)諒!~
隨筆 - 1469, 文章 - 0, 評(píng)論 - 661, 引用 - 0
數(shù)據(jù)加載中……

通過(guò)分區(qū)(Partition)提升MySQL性能

幾年前,俺寫過(guò)一篇題為“The Foundation of Excellent Performance”的文章(現(xiàn)在仍然可以在http://www.tdan.com/i016fe03.htm看到),俺對(duì)SQL語(yǔ)句是影響數(shù)據(jù)庫(kù)驅(qū)動(dòng)系統(tǒng)性能的第一要素的觀點(diǎn)有點(diǎn)質(zhì)疑。其實(shí)在那時(shí)我在文章中就堅(jiān)信數(shù)據(jù)庫(kù)的物理設(shè)計(jì)在對(duì)高級(jí)數(shù)據(jù)庫(kù)的性能影響上遠(yuǎn)比其他因素重要。同時(shí)俺還給大家看了Oracle的研究,他們解釋了為什么拙劣的物理設(shè)計(jì)是數(shù)據(jù)庫(kù)停機(jī)(無(wú)論是有計(jì)劃的還是沒(méi)計(jì)劃的)背后的主要原因。這么多年都過(guò)來(lái)啦(幸好沒(méi)多少人朝俺扔磚頭),俺的觀點(diǎn)是改變了一些,但在這點(diǎn)上俺還是堅(jiān)持DBA如果想要高性能的數(shù)據(jù)庫(kù)就必須在數(shù)據(jù)庫(kù)的物理設(shè)計(jì)上多思考的觀點(diǎn),這樣才能減少響應(yīng)時(shí)間使終端用戶滿意而不是引來(lái)罵聲一片。(陳朋奕語(yǔ):不要那么嚴(yán)肅,嘿嘿)

俺今天這么激動(dòng)又想寫文章的原因是MySQL5.1的發(fā)布帶來(lái)了設(shè)計(jì)超強(qiáng)動(dòng)力數(shù)據(jù)庫(kù)的強(qiáng)有力的武器,任何MySQLDBA都應(yīng)該盡快學(xué)習(xí)并使用它。俺覺(jué)得如果能很好滴使用這個(gè)5.1版帶來(lái)的新特性,DBA可以使自己管理的VLDB(不知道什么是VLDB?告訴你,是好大好大的數(shù)據(jù)庫(kù)的意思,Very Large DB)或數(shù)據(jù)倉(cāng)庫(kù)奇跡般的獲得巨大的性能提升。


什么是數(shù)據(jù)庫(kù)分區(qū)?

數(shù)據(jù)庫(kù)分區(qū)是一種物理數(shù)據(jù)庫(kù)設(shè)計(jì)技術(shù),DBA和數(shù)據(jù)庫(kù)建模人員對(duì)其相當(dāng)熟悉。雖然分區(qū)技術(shù)可以實(shí)現(xiàn)很多效果,但其主要目的是為了在特定的SQL操作中減少數(shù)據(jù)讀寫的總量以縮減響應(yīng)時(shí)間。

分區(qū)主要有兩種形式://這里一定要注意行和列的概念(row是行,column是列)

  1. 水平分區(qū)(Horizontal Partitioning這種形式分區(qū)是對(duì)表的行進(jìn)行分區(qū),通過(guò)這樣的方式不同分組里面的物理列分割的數(shù)據(jù)集得以組合,從而進(jìn)行個(gè)體分割(單分區(qū))或集體分割(1個(gè)或多個(gè)分區(qū))。所有在表中定義的列在每個(gè)數(shù)據(jù)集中都能找到,所以表的特性依然得以保持。
    舉個(gè)簡(jiǎn)單例子:一個(gè)包含十年發(fā)票記錄的表可以被分區(qū)為十個(gè)不同的分區(qū),每個(gè)分區(qū)包含的是其中一年的記錄。(朋奕注:這里具體使用的分區(qū)方式我們后面再說(shuō),可以先說(shuō)一點(diǎn),一定要通過(guò)某個(gè)屬性列來(lái)分割,譬如這里使用的列就是年份)
  2. 垂直分區(qū)(Vertical Partitioning這種分區(qū)方式一般來(lái)說(shuō)是通過(guò)對(duì)表的垂直劃分來(lái)減少目標(biāo)表的寬度,使某些特定的列被劃分到特定的分區(qū),每個(gè)分區(qū)都包含了其中的列所對(duì)應(yīng)的行。
    舉個(gè)簡(jiǎn)單例子:一個(gè)包含了大textBLOB列的表,這些textBLOB列又不經(jīng)常被訪問(wèn),這時(shí)候就要把這些不經(jīng)常使用的textBLOB了劃分到另一個(gè)分區(qū),在保證它們數(shù)據(jù)相關(guān)性的同時(shí)還能提高訪問(wèn)速度。

在數(shù)據(jù)庫(kù)供應(yīng)商開(kāi)始在他們的數(shù)據(jù)庫(kù)引擎中建立分區(qū)(主要是水平分區(qū))時(shí),DBA和建模者必須設(shè)計(jì)好表的物理分區(qū)結(jié)構(gòu),不要保存冗余的數(shù)據(jù)(不同表中同時(shí)都包含父表中的數(shù)據(jù))或相互聯(lián)結(jié)成一個(gè)邏輯父對(duì)象(通常是視圖)。這種做法會(huì)使水平分區(qū)的大部分功能失效,有時(shí)候也會(huì)對(duì)垂直分區(qū)產(chǎn)生影響。

 


MySQL 5.1中進(jìn)行分區(qū)

     MySQL5.1中最激動(dòng)人心的新特性應(yīng)該就是對(duì)水平分區(qū)的支持了。這對(duì)MySQL的使用者來(lái)說(shuō)確實(shí)是個(gè)好消息,而且她已經(jīng)支持分區(qū)大部分模式:

         Range(范圍)這種模式允許DBA將數(shù)據(jù)劃分不同范圍。例如DBA可以將一個(gè)表通過(guò)年份劃分成三個(gè)分區(qū),80年代(1980's)的數(shù)據(jù),90年代(1990's)的數(shù)據(jù)以及任何在2000年(包括2000年)后的數(shù)據(jù)。 
         Hash
(哈希)這中模式允許DBA通過(guò)對(duì)表的一個(gè)或多個(gè)列的Hash Key進(jìn)行計(jì)算,最后通過(guò)這個(gè)Hash碼不同數(shù)值對(duì)應(yīng)的數(shù)據(jù)區(qū)域進(jìn)行分區(qū),。例如DBA可以建立一個(gè)對(duì)表主鍵進(jìn)行分區(qū)的表。 
         Key
(鍵值)上面Hash模式的一種延伸,這里的Hash KeyMySQL系統(tǒng)產(chǎn)生的。 
         List
(預(yù)定義列表)這種模式允許系統(tǒng)通過(guò)DBA定義的列表的值所對(duì)應(yīng)的行數(shù)據(jù)進(jìn)行分割。例如:DBA建立了一個(gè)橫跨三個(gè)分區(qū)的表,分別根據(jù)20042005年和2006年值所對(duì)應(yīng)的數(shù)據(jù)。 
        Composite
(復(fù)合模式) - 很神秘吧,哈哈,其實(shí)是以上模式的組合使用而已,就不解釋了。舉例:在初始化已經(jīng)進(jìn)行了Range范圍分區(qū)的表上,我們可以對(duì)其中一個(gè)分區(qū)再進(jìn)行hash哈希分區(qū)。

    分區(qū)帶來(lái)的好處太多太多了,有多少?俺也不知道,自己猜去吧,要是覺(jué)得沒(méi)有多少就別用,反正俺也不求你用。不過(guò)在這里俺強(qiáng)調(diào)兩點(diǎn)好處:

性能的提升(Increased performance - 在掃描操作中,如果MySQL的優(yōu)化器知道哪個(gè)分區(qū)中才包含特定查詢中需要的數(shù)據(jù),它就能直接去掃描那些分區(qū)的數(shù)據(jù),而不用浪費(fèi)很多時(shí)間掃描不需要的地方了。需要舉個(gè)例子?好啊,百萬(wàn)行的表劃分為10個(gè)分區(qū),每個(gè)分區(qū)就包含十萬(wàn)行數(shù)據(jù),那么查詢分區(qū)需要的時(shí)間僅僅是全表掃描的十分之一了,很明顯的對(duì)比。同時(shí)對(duì)十萬(wàn)行的表建立索引的速度也會(huì)比百萬(wàn)行的快得多得多。如果你能把這些分區(qū)建立在不同的磁盤上,這時(shí)候的I/O讀寫速度就不堪設(shè)想(沒(méi)用錯(cuò)詞,真的太快了,理論上100倍的速度提升啊,這是多么快的響應(yīng)速度啊,所以有點(diǎn)不堪設(shè)想了)了。

對(duì)數(shù)據(jù)管理的簡(jiǎn)化(Simplified data management - 分區(qū)技術(shù)可以讓DBA對(duì)數(shù)據(jù)的管理能力提升。通過(guò)優(yōu)良的分區(qū),DBA可以簡(jiǎn)化特定數(shù)據(jù)操作的執(zhí)行方式。例如:DBA在對(duì)某些分區(qū)的內(nèi)容進(jìn)行刪除的同時(shí)能保證余下的分區(qū)的數(shù)據(jù)完整性(這是跟對(duì)表的數(shù)據(jù)刪除這種大動(dòng)作做比較的)

此外分區(qū)是由MySQL系統(tǒng)直接管理的,DBA不需要手工的去劃分和維護(hù)。例如:這個(gè)例如沒(méi)意思,不講了,如果你是DBA,只要你劃分了分區(qū),以后你就不用管了就是了。

站在性能設(shè)計(jì)的觀點(diǎn)上,俺們對(duì)以上的內(nèi)容也是相當(dāng)感興趣滴。通過(guò)使用分區(qū)和對(duì)不同的SQL操作的匹配設(shè)計(jì),數(shù)據(jù)庫(kù)的性能一定能獲得巨大提升。下面咱們一起用用這個(gè)MySQL 5.1的新功能看看。
下面所有的測(cè)試都在Dell Optiplex box with a Pentium 4 3.00GHz processor, 1GB of RAM機(jī)器上(炫耀啊……),Fedora Core 4MySQL 5.1.6 alpha上運(yùn)行通過(guò)。



如何進(jìn)行實(shí)際分區(qū)

看看分區(qū)的實(shí)際效果吧。我們建立幾個(gè)同樣的MyISAM引擎的表,包含日期敏感的數(shù)據(jù),但只對(duì)其中一個(gè)分區(qū)。分區(qū)的表(表名為part_tab)我們采用Range范圍分區(qū)模式,通過(guò)年份進(jìn)行分區(qū):

mysql> CREATE TABLE part_tab

    ->      ( c1 int default NULL,

    -> c2 varchar(30) default NULL,

    -> c3 date default NULL

    ->

    ->      ) engine=myisam

    ->      PARTITION BY RANGE (year(c3)) (PARTITION p0 VALUES LESS THAN (1995),

    ->      PARTITION p1 VALUES LESS THAN (1996) , PARTITION p2 VALUES LESS THAN (1997) ,

    ->      PARTITION p3 VALUES LESS THAN (1998) , PARTITION p4 VALUES LESS THAN (1999) ,

    ->      PARTITION p5 VALUES LESS THAN (2000) , PARTITION p6 VALUES LESS THAN (2001) ,

    ->      PARTITION p7 VALUES LESS THAN (2002) , PARTITION p8 VALUES LESS THAN (2003) ,

    ->      PARTITION p9 VALUES LESS THAN (2004) , PARTITION p10 VALUES LESS THAN (2010),

    ->      PARTITION p11 VALUES LESS THAN MAXVALUE );

Query OK, 0 rows affected (0.00 sec)

注意到了這里的最后一行嗎?這里把不屬于前面年度劃分的年份范圍都包含了,這樣才能保證數(shù)據(jù)不會(huì)出錯(cuò),大家以后要記住啊,不然數(shù)據(jù)庫(kù)無(wú)緣無(wú)故出錯(cuò)你就爽了。那下面我們建立沒(méi)有分區(qū)的表(表名為no_part_tab):

mysql> create table no_part_tab

    -> (c1 int(11) default NULL,

    -> c2 varchar(30) default NULL,

    -> c3 date default NULL) engine=myisam;

Query OK, 0 rows affected (0.02 sec)

下面咱寫一個(gè)存儲(chǔ)過(guò)程(感謝Peter Gulutzan給的代碼,如果大家需要Peter Gulutzan的存儲(chǔ)過(guò)程教程的中文翻譯也可以跟我要,chenpengyigmail.com),它能向咱剛才建立的已分區(qū)的表中平均的向每個(gè)分區(qū)插入共8百萬(wàn)條不同的數(shù)據(jù)。填滿后,咱就給沒(méi)分區(qū)的克隆表中插入相同的數(shù)據(jù):

mysql> delimiter //

mysql> CREATE PROCEDURE load_part_tab()

    -> begin

    -> declare v int default 0;

    ->          while v < 8000000

    -> do

    -> insert into part_tab

    -> values (v,'testing partitions',adddate('1995-01-01',(rand(v)*36520) mod 3652));

    -> set v = v + 1;

    -> end while;

    -> end

    -> //

Query OK, 0 rows affected (0.00 sec)

mysql> delimiter ;

mysql> call load_part_tab();

Query OK, 1 row affected (8 min 17.75 sec)

mysql> insert into no_part_tab select * from part_tab;

Query OK, 8000000 rows affected (51.59 sec)

Records: 8000000 Duplicates: 0 Warnings: 0


表都準(zhǔn)備好了。咱開(kāi)始對(duì)這兩表中的數(shù)據(jù)進(jìn)行簡(jiǎn)單的范圍查詢吧。先分區(qū)了的,后沒(méi)分區(qū)的,跟著有執(zhí)行過(guò)程解析(MySQL Explain命令解析器),可以看到MySQL做了什么:

mysql> select count(*) from no_part_tab where

    -> c3 > date '1995-01-01' and c3 < date '1995-12-31';

+----------+

| count(*) |

+----------+

|   795181 |

+----------+

1 row in set (38.30 sec)

 

mysql> select count(*) from part_tab where

    -> c3 > date '1995-01-01' and c3 < date '1995-12-31';

+----------+

| count(*) |

+----------+

|   795181 |

+----------+

1 row in set (3.88 sec)

 

mysql> explain select count(*) from no_part_tab where

    -> c3 > date '1995-01-01' and c3 < date '1995-12-31'\G

*************************** 1. row ***************************

           id: 1

select_type: SIMPLE

        table: no_part_tab

         type: ALL

possible_keys: NULL

          key: NULL

      key_len: NULL

          ref: NULL

         rows: 8000000

        Extra: Using where

1 row in set (0.00 sec)

 

mysql> explain partitions select count(*) from part_tab where

    -> c3 > date '1995-01-01' and c3 < date '1995-12-31'\G

*************************** 1. row ***************************

           id: 1

select_type: SIMPLE

        table: part_tab

   partitions: p1

         type: ALL

possible_keys: NULL

          key: NULL

      key_len: NULL

          ref: NULL

         rows: 798458

        Extra: Using where

1 row in set (0.00 sec)

從上面結(jié)果可以容易看出,設(shè)計(jì)恰當(dāng)表分區(qū)能比非分區(qū)的減少90%的響應(yīng)時(shí)間。而命令解析Explain程序也告訴我們?cè)趯?duì)已分區(qū)的表的查詢過(guò)程中僅對(duì)第一個(gè)分區(qū)進(jìn)行了掃描,其他都跳過(guò)了。

嗶厲吧拉,說(shuō)阿說(shuō)……反正就是這個(gè)分區(qū)功能對(duì)DBA很有用拉,特別對(duì)VLDB和需要快速反應(yīng)的系統(tǒng)。


對(duì)Vertical Partitioning的一些看法

雖然MySQL 5.1自動(dòng)實(shí)現(xiàn)了水平分區(qū),但在設(shè)計(jì)數(shù)據(jù)庫(kù)的時(shí)候不要輕視垂直分區(qū)。雖然要手工去實(shí)現(xiàn)垂直分區(qū),但在特定場(chǎng)合下你會(huì)收益不少的。例如在前面建立的表中,VARCHAR字段是你平常很少引用的,那么對(duì)它進(jìn)行垂直分區(qū)會(huì)不會(huì)提升速度呢?咱們看看測(cè)試結(jié)果:

mysql> desc part_tab;

+-------+-------------+------+-----+---------+-------+

| Field | Type        | Null | Key | Default | Extra |

+-------+-------------+------+-----+---------+-------+

| c1    | int(11)     | YES |     | NULL    |       |

| c2    | varchar(30) | YES |     | NULL    |       |

| c3    | date        | YES |     | NULL    |       |

+-------+-------------+------+-----+---------+-------+

3 rows in set (0.03 sec)

 

mysql> alter table part_tab drop column c2;

Query OK, 8000000 rows affected (42.20 sec)

Records: 8000000 Duplicates: 0 Warnings: 0

 

mysql> desc part_tab;

+-------+---------+------+-----+---------+-------+

| Field | Type    | Null | Key | Default | Extra |

+-------+---------+------+-----+---------+-------+

| c1    | int(11) | YES |     | NULL    |       |

| c3    | date    | YES |     | NULL    |       |

+-------+---------+------+-----+---------+-------+

2 rows in set (0.00 sec)

 

mysql> select count(*) from part_tab where

    -> c3 > date '1995-01-01' and c3 < date '1995-12-31';

+----------+

| count(*) |

+----------+

|   795181 |

+----------+

1 row in set (0.34 sec)

在設(shè)計(jì)上去掉了VARCHAR字段后,不止是你,俺也發(fā)現(xiàn)查詢響應(yīng)速度上獲得了另一個(gè)90%的時(shí)間節(jié)省。所以大家在設(shè)計(jì)表的時(shí)候,一定要考慮,表中的字段是否真正關(guān)聯(lián),又是否在你的查詢中有用?


補(bǔ)充說(shuō)明 

這么簡(jiǎn)單的文章肯定不能說(shuō)全MySQL 5.1 分區(qū)機(jī)制的所有好處和要點(diǎn)(雖然對(duì)自己寫文章水平很有信心),下面就說(shuō)幾個(gè)感興趣的:

  • 支持所有存儲(chǔ)引擎(MyISAM, Archive, InnoDB, 等等)
  • 對(duì)分區(qū)的表支持索引,包括本地索引local indexes,對(duì)其進(jìn)行的是一對(duì)一的視圖鏡像,假設(shè)一個(gè)表有十個(gè)分區(qū),那么其本地索引也包含十個(gè)分區(qū)。
  • 關(guān)于分區(qū)的元數(shù)據(jù)Metadata的表可以在INFORMATION_SCHEMA數(shù)據(jù)庫(kù)中找到,表名為PARTITIONS
  • All SHOW 命令支持返回分區(qū)表以及元數(shù)據(jù)的索引。
  • 對(duì)其操作的命令和實(shí)現(xiàn)的維護(hù)功能有(比對(duì)全表的操作還多):
    • ADD PARTITION
    • DROP PARTITION
    • COALESCE PARTITION
    • REORGANIZE PARTITION
    • ANALYZE PARTITION
    • CHECK PARTITION
    • OPTIMIZE PARTITION
    • REBUILD PARTITION
    • REPAIR PARTITION

站在性能主導(dǎo)的觀點(diǎn)上來(lái)說(shuō),MySQL 5.1的分區(qū)功能能給數(shù)據(jù)性能帶來(lái)巨大的提升的同時(shí)減輕DBA的管理負(fù)擔(dān),如果分區(qū)合理的話。如果需要更多的資料可以去http://dev.mysql.com/doc/refman/5.1/en/partitioning.htmlhttp://forums.mysql.com/list.php?106獲得相關(guān)資料。

關(guān)于MySQL分區(qū)的使用方法很快發(fā)布上來(lái),這里有什么錯(cuò)誤歡迎指出,或給我來(lái)信

——2006-05-05陳朋奕

 

posted on 2009-06-10 14:33 肥仔 閱讀(424) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 數(shù)據(jù)庫(kù)

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            99re66热这里只有精品4| 日韩视频一区二区三区| 亚洲电影成人| 久久精品国产第一区二区三区最新章节 | 国产精品久久久久一区二区| 午夜性色一区二区三区免费视频| 欧美久久久久| 日韩视频免费观看| 亚洲伊人观看| 影音先锋久久资源网| 欧美高清视频一二三区| 亚洲已满18点击进入久久| 久久一区激情| 制服诱惑一区二区| 黄色成人av| 欧美日韩另类字幕中文| 久久激情视频久久| 9人人澡人人爽人人精品| 久久久久久久久岛国免费| 亚洲精品一区二区三区四区高清| 国产精品一区二区三区久久久| 久久婷婷久久| 亚洲一区二区免费看| 亚洲大胆人体视频| 99视频精品全部免费在线| 国产一区二区三区久久久| 欧美日韩日本网| 免费不卡中文字幕视频| 亚洲欧美区自拍先锋| 亚洲黄一区二区三区| 久久久久五月天| 亚洲在线成人| 99精品视频一区| 韩国一区二区三区在线观看| 欧美三级日本三级少妇99| 免费看亚洲片| 久久精品欧美日韩精品| 亚洲一区二区四区| 亚洲精品久久久久久久久| 免费欧美电影| 久久久久久久网站| 午夜国产欧美理论在线播放| 日韩视频三区| 亚洲国产一区二区a毛片| 国产日韩亚洲欧美综合| 欧美亚男人的天堂| 欧美日韩国产精品一卡| 免费成人小视频| 久久人人超碰| 久久国产精品久久久| 亚洲网站在线播放| 一本色道久久综合狠狠躁篇的优点 | 亚洲国产成人久久综合一区| 国产精品主播| 国产精品国产自产拍高清av王其 | 性欧美video另类hd性玩具| 日韩一级片网址| 亚洲日本欧美在线| 亚洲人成在线观看| 亚洲国产精品久久久久婷婷老年| 国模精品一区二区三区| 国产亚洲人成a一在线v站| 国产精品入口福利| 国产精品网站在线| 国产欧美在线视频| 国产日本欧洲亚洲| 国产在线播精品第三| 国产一区二区在线观看免费播放| 国产日韩欧美不卡在线| 欧美视频福利| 久久精品理论片| 久久精品亚洲精品国产欧美kt∨| 欧美一二区视频| 欧美伊人久久久久久午夜久久久久| 亚洲欧美影音先锋| 欧美一区二区日韩一区二区| 欧美一级午夜免费电影| 欧美专区日韩视频| 久久亚洲视频| 欧美激情视频网站| 欧美新色视频| 国产日韩成人精品| 伊人久久男人天堂| 亚洲日本中文字幕免费在线不卡| 亚洲人成网站在线观看播放| 一区二区三区欧美日韩| 亚洲欧美一区二区三区极速播放 | 性欧美精品高清| 久久精品91久久久久久再现| 久久亚洲二区| 欧美久久久久久| 国产精品欧美久久| 狠狠色综合一区二区| 亚洲黄色影院| 亚洲综合导航| 美女国内精品自产拍在线播放| 亚洲电影在线观看| 中文亚洲免费| 久久久精品一区二区三区| 欧美成人亚洲成人| 国产精品v亚洲精品v日韩精品 | 久色成人在线| 亚洲三级电影全部在线观看高清| 国产精品99久久久久久久女警| 欧美亚洲免费在线| 欧美成人精品不卡视频在线观看| 国产精品v欧美精品v日韩| 国产亚洲一本大道中文在线| 亚洲破处大片| 久久成人精品电影| 亚洲电影欧美电影有声小说| 亚洲视频免费在线| 久久久免费精品视频| 欧美日韩情趣电影| 伊人久久综合| 亚洲香蕉在线观看| 久久综合久久综合九色| 日韩视频不卡| 久久久精品一区二区三区| 欧美日韩一二三四五区| 伊人久久综合97精品| 亚洲免费中文字幕| 欧美黄色影院| 欧美一区二区视频97| 欧美精品一卡二卡| 狠狠色丁香婷婷综合久久片| 亚洲网站在线观看| 欧美电影免费观看| 午夜一区二区三区在线观看| 欧美日本中文字幕| 亚洲国产成人tv| 久久久99爱| 亚洲性图久久| 欧美日韩国产色站一区二区三区| 在线播放豆国产99亚洲| 亚洲欧美日本另类| 亚洲激情影院| 久久综合久久综合久久综合| 国产欧美一区二区精品性色| 国产精品99久久久久久www| 欧美成人在线免费观看| 欧美一区二区观看视频| 欧美日韩综合精品| 日韩一区二区免费看| 欧美福利视频网站| 久久久久国产成人精品亚洲午夜| 国产欧美大片| 性做久久久久久| 一区二区三区视频观看| 欧美日韩国产二区| 亚洲日本va午夜在线影院| 亚洲视频福利| 久久精品一区二区三区四区| 国产九九精品视频| 亚洲女人av| 一区二区三区福利| 欧美日韩ab| 一本久道久久综合狠狠爱| 亚洲国产日韩美| 欧美大片国产精品| 亚洲三级色网| 亚洲国产精品久久精品怡红院| 老司机午夜免费精品视频| 欧美一区亚洲一区| 国产亚洲精品久久久| 欧美中文字幕精品| 午夜视频在线观看一区| 国产欧美91| 久久久久久97三级| 欧美在线一二三四区| 国产日韩一区二区| 久久精品视频免费观看| 性色av一区二区三区| 国产主播在线一区| 美女露胸一区二区三区| 久久久久欧美| 亚洲精品1区| 亚洲精选一区| 国产精品国产a| 欧美一区影院| 欧美一区二区三区视频免费| 国产一区自拍视频| 蜜桃av噜噜一区| 欧美mv日韩mv国产网站| 日韩视频中文| 一区二区三区偷拍| 国产精品亚洲综合天堂夜夜| 欧美一级欧美一级在线播放| 亚洲综合大片69999| 国产午夜精品久久久久久免费视 | 欧美激情亚洲自拍| 一区二区日韩| 亚洲五月六月| 狠狠色丁香婷婷综合影院| 欧美大片在线观看一区二区| 欧美激情一区在线| 亚洲欧洲99久久| 久久精品123| 一卡二卡3卡四卡高清精品视频| 亚洲午夜一二三区视频|