婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > MySQL數據庫表分區注意事項大全【推薦】

MySQL數據庫表分區注意事項大全【推薦】

熱門標簽:龍圖酒吧地圖標注 怎么辦理400電話呢 好搜地圖標注 地圖標注圖標素材入駐 電話機器人免費嗎 百度地圖標注地方備注 怎么申請400電話申請 400電話申請什么好 電銷機器人價格多少錢一臺

表分區與數據庫分區是不一樣的那么碰到表分區使用時我們要注意一些什么事情呢,今天我們來看一篇關于MySQL數據庫表分區注意事項的細節。

1、分區列索引約束

若表有primary key或unique key,則分區表的分區列必須包含在primary key或unique key列表里,這是為了確保主鍵的效率,否則同一主鍵區的東西一個在A分區,一個在B分區,顯然會比較麻煩。

2、各分區類型條件

range 每個分區包含那些分區表達式的值位于一個給定的連續區間內的行。這些區間要連續且不能相互重疊

list只支持整形字段或返回整形數的表達式,每個分區列表里的值列表必須整數

hash類型只支持整形字段或返回整形數的表達式

key類型只支持列名形式(可一個或多個列名),不支持表達式

3、分區可用函數

ABS()

CEILING() (see CEILING() and FLOOR(), immediately following this list)

DAY()

DAYOFMONTH()

DAYOFWEEK()

DAYOFYEAR()

DATEDIFF()

EXTRACT()

FLOOR() (see CEILING() and FLOOR(), immediately following this list)

HOUR()

MICROSECOND()

MINUTE()

MOD()

MONTH()

QUARTER()

SECOND()

TIME_TO_SEC()

TO_DAYS()

WEEKDAY()

YEAR()

YEARWEEK()

注意:

因為分區函數不包括FROM_UNIXTIME函數,所以用時間戳轉時間來分區就無法實現了,只能用date或者datetime來分區

例如按年我們可以用:

PARTITION BY RANGE (YEAR(date))

按月:

PARTITION BY RANGE(date div 100)  

#div 會把日期變成整數,例如:2014-12-01 -> 20141201、100就是從后面去掉兩位,最后結果是201412

一個訂單做分區的例子:

CREATE TABLE `order` (
 `order_id` bigint(19) NOT NULL DEFAULT '0' COMMENT '訂單ID:年月日時分秒12位 7位隨機數',
 `date` date NOT NULL DEFAULT '0000-00-00' COMMENT '訂單日期',
 `amount` int(11) DEFAULT NULL COMMENT '支付金額,單位分',
 `status` tinyint(1) DEFAULT '0' COMMENT '0:等待支付 1:支付成功 2:支付失敗 3:驗證失敗',
 `addtime` int(10) DEFAULT NULL COMMENT '訂單添加時間',
 PRIMARY KEY (`order_id`,`date`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

因為我們沒法用時間戳來做按時間分區,所以添加了一個date字段,這個字段和order_id一起作為主鍵,我們知道分區的列一定要放到主鍵里面去的。下面我們用date計算成年月組合來分區

ALTER TABLE order PARTITION BY RANGE( date DIV 100)
(
  PARTITION p_2014_06 VALUES LESS THAN (201407),
  PARTITION p_2014_07 VALUES LESS THAN (201408),
  PARTITION p_2014_08 VALUES LESS THAN (201409),
  PARTITION p_2014_09 VALUES LESS THAN (201410),
  PARTITION p_2014_10 VALUES LESS THAN (201411),
  PARTITION p_catch_all VALUES LESS THAN MAXVALUE
);

以上 LESS THAN MAXVALUE 設置了最后一個分區p_catch_all,所以不能用add的方式來添加分區了,以下語句不可用:
ALTER TABLE order ADD PARTITION (PARTITION p_2014_11 VALUES LESS THAN (201412));

只能把最后的p_catch_all分區拆分成兩個,這樣還有一個好處就是在p_catch_all分區的數據不會丟失。數據的合并與拆分用REORGANIZE PARTITION進行。

alter table order reorganize partition p_catch_all into 
(
  partition p_2014_11 values less than (201412),
  partition p_catch_all values less than maxvalue
);

合并分區:

alter table order reorganize partition p_2014_10,p_2014_11,p_catch_all into 
(
  partition p_catch_test values less than MAXVALUE
);

為什么不分到p_catch_all去?因為會報分區以存在。

為什么合并的時候要帶上最后一個分區p_catch_all?因為除了最后一個分區,其他重組的分區范圍不能改變總范圍。
刪除分區但是不刪除數據:

alter table 表名 remove partitioning

注意:上面語句在5.5可以執行,5.6好像有問題,要先測試一下

分區之后,where條件是一個范圍的話分區是不起作用的,如 where date >= '2014-01-01' And date = '2014-01-31'
一定要用 = 或者 in 條件才行 where date = '2014-01-01' 或者 where date in ('2014-01-01', '2014-01-02', '2014-01-03'...)

補充:MySQL表的四種分區類型

一、什么是表分區

通俗地講表分區是將一大表,根據條件分割成若干個小表。mysql5.1開始支持數據表分區了。 如:某用戶表的記錄超過了600萬條,那么就可以根據入庫日期將表分區,也可以根據所在地將表分區。當然也可根據其他的條件分區。

二、為什么要對表進行分區

為了改善大型表以及具有各種訪問模式的表的可伸縮性,可管理性和提高數據庫效率。

分區的一些優點包括:

與單個磁盤或文件系統分區相比,可以存儲更多的數據。

對于那些已經失去保存意義的數據,通常可以通過刪除與那些數據有關的分區,很容易地刪除那些數據。相反地,在某些情況下,添加新數據的過程又可以通過為那些新數據專門增加一個新的分區,來很方便地實現。通常和分區有關的其他優點包括下面列出的這些。MySQL分區中的這些功能目前還沒有實現,但是在我們的優先級列表中,具有高的優先級;我們希望在5.1的生產版本中,能包括這些功能。

一些查詢可以得到極大的優化,這主要是借助于滿足一個給定WHERE語句的數據可以只保存在一個或多個分區內,這樣在查找時就不用查找其他剩余的分區。因為分區可以在創建了分區表后進行修改,所以在第一次配置分區方案時還不曾這么做時,可以重新組織數據,來提高那些常用查詢的效率。

涉及到例如SUM()和COUNT()這樣聚合函數的查詢,可以很容易地進行并行處理。這種查詢的一個簡單例子如 “SELECT salesperson_id, COUNT (orders) as order_total FROM sales GROUP BY salesperson_id;”。通過“并行”,這意味著該查詢可以在每個分區上同時進行,最終結果只需通過總計所有分區得到的結果。

通過跨多個磁盤來分散數據查詢,來獲得更大的查詢吞吐量。

三、分區類型

RANGE分區:基于屬于一個給定連續區間的列值,把多行分配給分區。

LIST分區:類似于按RANGE分區,區別在于LIST分區是基于列值匹配一個離散值集合中的某個值來進行選擇。

HASH分區:基于用戶定義的表達式的返回值來進行選擇的分區,該表達式使用將要插入到表中的這些行的列值進行計算。這個函數可以包含MySQL 中有效的、產生非負整數值的任何表達式。

KEY分區:類似于按HASH分區,區別在于KEY分區只支持計算一列或多列,且MySQL服務器提供其自身的哈希函數。必須有一列或多列包含整數值。

RANGE分區

基于屬于一個給定連續區間的列值,把多行分配給分區。

這些區間要連續且不能相互重疊,使用VALUES LESS THAN操作符來進行定義。以下是實例。

Sql代碼:

CREATE TABLE employees (
  id INT NOT NULL,
  fname VARCHAR(30),
  lname VARCHAR(30),
  hired DATE NOT NULL DEFAULT '1970-01-01',
  separated DATE NOT NULL DEFAULT '9999-12-31',
  job_code INT NOT NULL,
  store_id INT NOT NULL
)
partition BY RANGE (store_id) (
  partition p0 VALUES LESS THAN (6),
  partition p1 VALUES LESS THAN (11),
  partition p2 VALUES LESS THAN (16),
  partition p3 VALUES LESS THAN (21)
);

按照這種分區方案,在商店1到5工作的雇員相對應的所有行被保存在分區P0中,商店6到10的雇員保存在P1中,依次類推。注意,每個分區都是按順序進行定義,從最低到最高。這是PARTITION BY RANGE 語法的要求;在這點上,它類似于C或Java中的“switch … case”語句。對于包含數據(72, ‘Michael', ‘Widenius', '1998-06-25′, NULL, 13)的一個新行,可以很容易地確定它將插入到p2分區中,但是如果增加了一個編號為第21的商店,將會發生什么呢?在這種方案下,由于沒有規則把store_id大于20的商店包含在內,服務器將不知道把該行保存在何處,將會導致錯誤。 要避免這種錯誤,可以通過在CREATE TABLE語句中使用一個“catchall” VALUES LESS THAN子句,該子句提供給所有大于明確指定的最高值的值:

Sql代碼:

CREATE TABLE employees (
  id INT NOT NULL,
  fname VARCHAR(30),
  lname VARCHAR(30),
  hired DATE NOT NULL DEFAULT '1970-01-01',
  separated DATE NOT NULL DEFAULT '9999-12-31',
  job_code INT NOT NULL,
  store_id INT NOT NULL
)
PARTITION BY RANGE (store_id) (
  PARTITION p0 VALUES LESS THAN (6),
  PARTITION p1 VALUES LESS THAN (11),
  PARTITION p2 VALUES LESS THAN (16),
  PARTITION p3 VALUES LESS THAN MAXVALUE
);

MAXVALUE 表示最大的可能的整數值。現在,store_id 列值大于或等于16(定義了的最高值)的所有行都將保存在分區p3中。在將來的某個時候,當商店數已經增長到25, 30, 或更多 ,可以使用ALTER TABLE語句為商店21-25, 26-30,等等增加新的分區。在幾乎一樣的結構中,你還可以基于雇員的工作代碼來分割表,也就是說,基于job_code 列值的連續區間。例如——假定2位數字的工作代碼用來表示普通(店內的)工人,三個數字代碼表示辦公室和支持人員,四個數字代碼表示管理層,你可以使用下面的語句創建該分區表:

Sql代碼:

CREATE TABLE employees (
  id INT NOT NULL,
  fname VARCHAR(30),
  lname VARCHAR(30),
  hired DATE NOT NULL DEFAULT '1970-01-01',
  separated DATE NOT NULL DEFAULT '9999-12-31',
  job_code INT NOT NULL,
  store_id INT NOT NULL
)
PARTITION BY RANGE (job_code) (
  PARTITION p0 VALUES LESS THAN (100),
  PARTITION p1 VALUES LESS THAN (1000),
  PARTITION p2 VALUES LESS THAN (10000)
);

在這個例子中, 店內工人相關的所有行將保存在分區p0中,辦公室和支持人員相關的所有行保存在分區p1中,管理層相關的所有行保存在分區p2中。在VALUES LESS THAN 子句中使用一個表達式也是可能的。這里最值得注意的限制是MySQL 必須能夠計算表達式的返回值作為LESS THAN ()比較的一部分;因此,表達式的值不能為NULL 。由于這個原因,雇員表的hired, separated, job_code,和store_id列已經被定義為非空(NOT NULL)。除了可以根據商店編號分割表數據外,你還可以使用一個基于兩個DATE (日期)中的一個的表達式來分割表數據。例如,假定你想基于每個雇員離開公司的年份來分割表,也就是說,YEAR(separated)的值。實現這種分區模式的CREATE TABLE 語句的一個例子如下所示:

Sql代碼:

CREATE TABLE employees (
  id INT NOT NULL,
  fname VARCHAR(30),
  lname VARCHAR(30),
  hired DATE NOT NULL DEFAULT '1970-01-01',
  separated DATE NOT NULL DEFAULT '9999-12-31',
  job_code INT,
  store_id INT
)
PARTITION BY RANGE (YEAR(separated)) (
  PARTITION p0 VALUES LESS THAN (1991),
  PARTITION p1 VALUES LESS THAN (1996),
  PARTITION p2 VALUES LESS THAN (2001),
  PARTITION p3 VALUES LESS THAN MAXVALUE
);

在這個方案中,在1991年前雇傭的所有雇員的記錄保存在分區p0中,1991年到1995年期間雇傭的所有雇員的記錄保存在分區p1中, 1996年到2000年期間雇傭的所有雇員的記錄保存在分區p2中,2000年后雇傭的所有工人的信息保存在p3中。
RANGE分區在如下場合特別有用:1)、當需要刪除一個分區上的“舊的”數據時,只刪除分區即可。如果你使用上面最近的那個例子給出的分區方案,你只需簡單地使用”ALTER TABLE employees DROP PARTITION p0;”來刪除所有在1991年前就已經停止工作的雇員相對應的所有行。對于有大量行的表,這比運行一個如”DELETE FROM employees WHERE YEAR (separated) = 1990;”這樣的一個DELETE查詢要有效得多。 2)、想要使用一個包含有日期或時間值,或包含有從一些其他級數開始增長的值的列。3)、經常運行直接依賴于用于分割表的列的查詢。例如,當執行一個如”SELECT COUNT(*) FROM employees WHERE YEAR(separated) = 2000 GROUP BY store_id;”這樣的查詢時,MySQL可以很迅速地確定只有分區p2需要掃描,這是因為余下的分區不可能包含有符合該WHERE子句的任何記錄。

注釋:這種優化還沒有在MySQL 5.1源程序中啟用,但是,有關工作正在進行中。

LIST分區

類似于按RANGE分區,區別在于LIST分區是基于列值匹配一個離散值集合中的某個值來進行選擇。

LIST分區通過使用“PARTITION BY LIST(expr)”來實現,其中“expr”是某列值或一個基于某個列值、并返回一個整數值的表達式,然后通過“VALUES IN (value_list)”的方式來定義每個分區,其中“value_list”是一個通過逗號分隔的整數列表。 注釋:在MySQL 5.1中,當使用LIST分區時,有可能只能匹配整數列表。

Sql代碼:

CREATE TABLE employees (
  id INT NOT NULL,
  fname VARCHAR(30),
  lname VARCHAR(30),
  hired DATE NOT NULL DEFAULT '1970-01-01',
  separated DATE NOT NULL DEFAULT '9999-12-31',
  job_code INT,
  store_id INT
);

假定有20個音像店,分布在4個有經銷權的地區,如下表所示:

====================
地區 商店ID 號
北區 3, 5, 6, 9, 17
東區 1, 2, 10, 11, 19, 20
西區 4, 12, 13, 14, 18
中心區 7, 8, 15, 16
====================

要按照屬于同一個地區商店的行保存在同一個分區中的方式來分割表,可以使用下面的“CREATE TABLE”語句:

Sql代碼:

CREATE TABLE employees (
  id INT NOT NULL,
  fname VARCHAR(30),
  lname VARCHAR(30),
  hired DATE NOT NULL DEFAULT '1970-01-01',
  separated DATE NOT NULL DEFAULT '9999-12-31',
  job_code INT,
  store_id INT
)
PARTITION BY LIST(store_id)
  PARTITION pNorth VALUES IN (3,5,6,9,17),
  PARTITION pEast VALUES IN (1,2,10,11,19,20),
  PARTITION pWest VALUES IN (4,12,13,14,18),
  PARTITION pCentral VALUES IN (7,8,15,16)
);

這使得在表中增加或刪除指定地區的雇員記錄變得容易起來。例如,假定西區的所有音像店都賣給了其他公司。那么與在西區音像店工作雇員相關的所有記錄(行)可以使用查詢“ALTER TABLE employees DROP PARTITION pWest;”來進行刪除,它與具有同樣作用的DELETE(刪除)查詢“DELETE query DELETE FROM employees WHERE store_id IN (4,12,13,14,18);”比起來,要有效得多。【要點】:如果試圖插入列值(或分區表達式的返回值)不在分區值列表中的一行時,那么“INSERT”查詢將失敗并報錯。例如,假定LIST分區的采用上面的方案,下面的查詢將失敗:

Sql代碼:

INSERT INTO employees VALUES(224, 'Linus', 'Torvalds', '2002-05-01', '2004-10-12', 42, 21);

這是因為“store_id”列值21不能在用于定義分區pNorth, pEast, pWest,或pCentral的值列表中找到。要重點注意的是,LIST分區沒有類似如“VALUES LESS THAN MAXVALUE”這樣的包含其他值在內的定義。將要匹配的任何值都必須在值列表中找到。
LIST分區除了能和RANGE分區結合起來生成一個復合的子分區,與HASH和KEY分區結合起來生成復合的子分區也是可能的。

HASH分區

基于用戶定義的表達式的返回值來進行選擇的分區,該表達式使用將要插入到表中的這些行的列值進行計算。這個函數可以包含MySQL 中有效的、產生非負整數值的任何表達式。

要使用HASH分區來分割一個表,要在CREATE TABLE 語句上添加一個“PARTITION BY HASH (expr)”子句,其中“expr”是一個返回一個整數的表達式。它可以僅僅是字段類型為MySQL整型的一列的名字。此外,你很可能需要在后面再添加一個“PARTITIONS num”子句,其中num是一個非負的整數,它表示表將要被分割成分區的數量。

Sql代碼:

CREATE TABLE employees (
  id INT NOT NULL,
  fname VARCHAR(30),
  lname VARCHAR(30),
  hired DATE NOT NULL DEFAULT '1970-01-01',
  separated DATE NOT NULL DEFAULT '9999-12-31',
  job_code INT,
  store_id INT
)
PARTITION BY HASH(store_id)
PARTITIONS 4;

如果沒有包括一個PARTITIONS子句,那么分區的數量將默認為1。例外:對于NDB Cluster(簇)表,默認的分區數量將與簇數據節點的數量相同,這種修正可能是考慮任何MAX_ROWS設置,以便確保所有的行都能合適地插入到分區中。

LINER HASH

MySQL還支持線性哈希功能,它與常規哈希的區別在于,線性哈希功能使用的一個線性的2的冪(powers-of-two)運算法則,而常規哈希使用的是求哈希函數值的模數。線性哈希分區和常規哈希分區在語法上的唯一區別在于,在“PARTITION BY”子句中添加“LINEAR”關鍵字。

Sql代碼:

CREATE TABLE employees (
  id INT NOT NULL,
  fname VARCHAR(30),
  lname VARCHAR(30),
  hired DATE NOT NULL DEFAULT '1970-01-01',
  separated DATE NOT NULL DEFAULT '9999-12-31',
  job_code INT,
  store_id INT
)
PARTITION BY LINEAR HASH(YEAR(hired))
PARTITIONS 4;

假設一個表達式expr,當使用線性哈希功能時,記錄將要保存到的分區是num 個分區中的分區N,其中N是根據下面的算法得到: 1. 找到下一個大于num.的、2的冪,我們把這個值稱為V ,它可以通過下面的公式得到: 2. V = POWER(2, CEILING(LOG(2, num))) (例如,假定num是13。那么LOG(2,13)就是3.7004397181411。 CEILING(3.7004397181411)就是4,則V = POWER(2,4), 即等于16)。 3. 設置 N = F(column_list) (V – 1). 4. 當 N >= num: 設置 V = CEIL(V / 2) 設置 N = N (V – 1) 例如,假設表t1,使用線性哈希分區且有4個分區,是通過下面的語句創建的: CREATE TABLE t1 (col1 INT, col2 CHAR(5), col3 DATE) PARTITION BY LINEAR HASH( YEAR(col3) ) PARTITIONS 6; 現在假設要插入兩行記錄到表t1中,其中一條記錄col3列值為'2003-04-14′,另一條記錄col3列值為'1998-10-19′。第一條記錄將要保存到的分區確定如下: V = POWER(2, CEILING(LOG(2,7))) = 8 N = YEAR('2003-04-14′) (8 – 1) = 2003 7 = 3 (3 >= 6 為假(FALSE): 記錄將被保存到#3號分區中) 第二條記錄將要保存到的分區序號計算如下: V = 8 N = YEAR('1998-10-19′) (8-1) = 1998 7 = 6 (6 >= 4 為真(TRUE): 還需要附加的步驟) N = 6 CEILING(5 / 2) = 6 3 = 2 (2 >= 4 為假(FALSE): 記錄將被保存到#2分區中) 按照線性哈希分區的優點在于增加、刪除、合并和拆分分區將變得更加快捷,有利于處理含有極其大量(1000吉)數據的表。它的缺點在于,與使用常規HASH分區得到的數據分布相比,各個分區間數據的分布不大可能均衡。

KEY分區

類似于按HASH分區,區別在于KEY分區只支持計算一列或多列,且MySQL服務器提供其自身的哈希函數。必須有一列或多列包含整數值。

Sql代碼:

CREATE TABLE tk (
  col1 INT NOT NULL,
  col2 CHAR(5),
  col3 DATE
)
PARTITION BY LINEAR KEY (col1)
PARTITIONS 3;

在KEY分區中使用關鍵字LINEAR和在HASH分區中使用具有同樣的作用,分區的編號是通過2的冪(powers-of-two)算法得到,而不是通過模數算法

總結

以上就是本文關于mysql數據庫表分區注意事項的全部內容,感興趣的朋友可以參閱:MySQL刪除表數據的方法、幾個比較重要的MySQL變量、MYSQL子查詢和嵌套查詢優化實例解析等,希望對大家有所幫助。有什么問題請留言,歡迎大家交流討論。

您可能感興趣的文章:
  • 創建mysql表分區的方法
  • MySQL的表分區詳解
  • Mysql數據表分區技術PARTITION淺析
  • MySQL中表分區技術詳細解析
  • MySQL數據表分區策略及優缺點分析
  • MySQL高級特性——數據表分區的概念及機制詳解
  • mysql表分區的使用與底層原理詳解

標簽:汕尾 防疫工作 溫州 浙江 撫順 固原 廣西 內江

巨人網絡通訊聲明:本文標題《MySQL數據庫表分區注意事項大全【推薦】》,本文關鍵詞  MySQL,數據庫,表,分區,注意事項,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《MySQL數據庫表分區注意事項大全【推薦】》相關的同類信息!
  • 本頁收集關于MySQL數據庫表分區注意事項大全【推薦】的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    日韩精品影音先锋| 激情五月激情综合网| 亚洲精品国产一区二区精华液| 日韩不卡手机在线v区| 在线中文字幕一区| 亚洲综合视频网| 欧美三级视频在线| 亚洲风情在线资源站| 欧美日韩精品系列| 久久99九九99精品| 国产欧美视频一区二区三区| 一区二区三区精品视频| 91免费精品国自产拍在线不卡| 激情综合网最新| 中文字幕不卡在线| 色屁屁一区二区| 日韩二区三区四区| 久久久久久久av麻豆果冻| 成人黄色777网| 亚洲成人一区在线| 国产麻豆精品95视频| 国产精品网友自拍| 色婷婷综合久久久中文字幕| 亚洲小说欧美激情另类| 欧美一区二区人人喊爽| 国产一区二区在线观看视频| 国产日韩欧美一区二区三区乱码| 91免费国产视频网站| 日韩av一级片| 国产精品黄色在线观看| 欧美丝袜自拍制服另类| 国产精品一二二区| 午夜激情一区二区三区| 久久99国产精品久久99果冻传媒| 日本一区二区视频在线| 欧洲生活片亚洲生活在线观看| 亚洲va在线va天堂| 中文字幕av资源一区| 欧美日韩亚州综合| 国产片一区二区| 7777女厕盗摄久久久| 岛国一区二区在线观看| 亚洲一区二区三区四区在线| 国产视频一区二区在线| 欧美日韩成人综合| 色综合久久综合网欧美综合网| 精品一区二区影视| 日本在线不卡视频| 亚洲午夜免费电影| 亚洲视频一区二区在线| 国产三级精品视频| 亚洲精品在线观看网站| 6080日韩午夜伦伦午夜伦| 95精品视频在线| 国产欧美精品国产国产专区| 欧美一区二区三区的| 97se狠狠狠综合亚洲狠狠| 国产成人8x视频一区二区| 亚洲18女电影在线观看| 一区二区三区成人| 亚洲区小说区图片区qvod| 国产大陆亚洲精品国产| 久久99精品国产麻豆不卡| 青青青伊人色综合久久| 日韩av午夜在线观看| 亚洲一区二区三区三| 亚洲欧美另类久久久精品| 国产精品久久久久久久岛一牛影视| 久久一区二区视频| 久久久三级国产网站| 日韩精品一区二区三区在线| 91麻豆精品国产91久久久久久| 色综合久久综合网欧美综合网| 菠萝蜜视频在线观看一区| 成人蜜臀av电影| 欧美激情综合网| 中文字幕久久午夜不卡| 中文字幕一区二区三区在线观看 | 国产精品久久久久久久久久久免费看 | 亚洲国产aⅴ天堂久久| 亚洲婷婷综合久久一本伊一区| 国产日韩三级在线| 自拍偷拍国产精品| 夜夜精品视频一区二区| 丝瓜av网站精品一区二区| 日本午夜一本久久久综合| 精品在线免费观看| 色噜噜狠狠成人中文综合| 精品国产乱码久久久久久蜜臀| 欧美日韩视频专区在线播放| 国产精品毛片高清在线完整版| 色婷婷久久综合| 亚洲品质自拍视频| 欧美日韩免费一区二区三区| 成人黄色电影在线| 亚洲高清免费在线| 国产精品丝袜久久久久久app| 精品国产91乱码一区二区三区 | www精品美女久久久tv| 精品久久久久久久久久久院品网| 一区二区理论电影在线观看| 精品写真视频在线观看| 欧美日韩精品三区| 日韩电影免费在线看| 91搞黄在线观看| 亚洲无人区一区| 在线观看亚洲a| 日本中文字幕一区| 欧美妇女性影城| 在线免费av一区| 午夜精品视频一区| 爽好久久久欧美精品| 亚洲欧美日韩国产一区二区三区 | 国产欧美日韩视频在线观看| 日本电影亚洲天堂一区| 欧美无砖专区一中文字| 免费在线观看一区| 蜜臀精品久久久久久蜜臀| 中文欧美字幕免费| 亚洲综合偷拍欧美一区色| 日韩一区二区三区四区| 亚洲18影院在线观看| 亚洲三级久久久| 久久久久国产精品厨房| 91精品国产综合久久婷婷香蕉 | 麻豆成人在线观看| 亚洲成人免费在线观看| 欧美岛国在线观看| 午夜精品久久久久久久| 国产高清不卡二三区| 一区二区三区产品免费精品久久75| 免费看黄色91| 欧美日韩一区二区三区高清| 中文字幕第一区综合| 91精品在线免费| 在线观看亚洲a| 亚洲欧洲一区二区在线播放| 国产一区二区在线视频| 欧美一区二区三区不卡| 天天综合网天天综合色| xnxx国产精品| 欧美国产国产综合| 久久久精品综合| 综合av第一页| 久久久亚洲精品一区二区三区| av一区二区三区四区| 国产老肥熟一区二区三区| 国产乱淫av一区二区三区| 91在线精品一区二区| 欧美性猛交xxxx黑人交| 欧美午夜不卡视频| 欧美一级二级三级蜜桃| 欧美综合在线视频| 亚洲男女一区二区三区| 久久精品72免费观看| 日韩 欧美一区二区三区| 亚洲成人1区2区| 国产精品一区二区久激情瑜伽 | 国产精品免费看片| 欧美一区二区三区人| 日本不卡免费在线视频| 色一情一乱一乱一91av| 三级影片在线观看欧美日韩一区二区 | 亚洲一区二区四区蜜桃| 午夜精品福利在线| 狠狠色伊人亚洲综合成人| 91黄色在线观看| 在线不卡中文字幕| 日韩伦理av电影| 日本少妇一区二区| 成人精品国产免费网站| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 日本视频免费一区| 精品国内片67194| 91久久精品一区二区三区| 成人午夜视频免费看| 91精品国产综合久久久蜜臀粉嫩| av中文字幕在线不卡| 激情丁香综合五月| 免费成人在线播放| 日韩黄色免费电影| 5566中文字幕一区二区电影| 欧美一二三四在线| 同产精品九九九| 免费黄网站欧美| 丝袜美腿亚洲一区| 天堂在线亚洲视频| 精品国产亚洲在线| 亚洲一区二区在线免费观看视频| caoporn国产一区二区| 精品免费一区二区三区| 亚洲午夜在线观看视频在线| 色综合久久久久综合体| 一区二区三区欧美日| 国产成人免费视| 亚洲国产精品久久久久婷婷884| 91丝袜美女网| 亚洲一区二区三区精品在线| 91国偷自产一区二区三区观看| 精品国产人成亚洲区|