久久精品国产精品国产精品污,男人扒开添女人下部免费视频,一级国产69式性姿势免费视频,夜鲁夜鲁很鲁在线视频 视频,欧美丰满少妇一区二区三区,国产偷国产偷亚洲高清人乐享,中文 在线 日韩 亚洲 欧美,熟妇人妻无乱码中文字幕真矢织江,一区二区三区人妻制服国产

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 人文社科 > 生活经验 >内容正文

生活经验

第18章:MYSQL分区

發(fā)布時(shí)間:2023/11/27 生活经验 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第18章:MYSQL分区 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

第18章:分區(qū)

目錄

18.1. MySQL中的分區(qū)概述18.2. 分區(qū)類型
18.2.1. RANGE分區(qū)18.2.2. LIST分區(qū)18.2.3. HASH分區(qū)18.2.4. KEY分區(qū)18.2.5. 子分區(qū)18.2.6. MySQL分區(qū)處理NULL值的方式
18.3. 分區(qū)管理
18.3.1. RANGE和LIST分區(qū)的管理18.3.2. HASH和KEY分區(qū)的管理18.3.3. 分區(qū)維護(hù)18.3.4. 獲取關(guān)于分區(qū)的信息

本章討論MySQL 5.1.中實(shí)現(xiàn)的分區(qū)。關(guān)于分區(qū)和分區(qū)概念的介紹可以在18.1節(jié),“MySQL中的分區(qū)概述”中找到。MySQL 5.1?支持哪幾種類型的分區(qū),在18.2節(jié),“分區(qū)類型”?中討論。關(guān)于子分區(qū)在18.2.5節(jié),“子分區(qū)”?中討論。現(xiàn)有分區(qū)表中分區(qū)的增加、刪除和修改的方法在18.3節(jié),“分區(qū)管理”?中介紹。 和分區(qū)表一同使用的表維護(hù)命令在18.3.3節(jié),“分區(qū)維護(hù)”?中介紹。

請(qǐng)注意:MySQL 5.1中的分區(qū)實(shí)現(xiàn)仍然很新(pre-alpha品質(zhì)),此時(shí)還不是可生產(chǎn)的(not production-ready)。 同樣,許多也適用于本章:在這里描述的一些功能還沒有實(shí)際上實(shí)現(xiàn)(分區(qū)維護(hù)和重新分區(qū)命令),其他的可能還沒有完全如所描述的那樣實(shí)現(xiàn)(例如,?用于分區(qū)的數(shù)據(jù)目錄(DATA DIRECTORY)和索引目錄(INDEX DIRECTORY)選項(xiàng)受到Bug #13520)?不利的影響).?我們已經(jīng)設(shè)法在本章中標(biāo)出這些差異。在提出缺陷報(bào)告前,我們鼓勵(lì)參考下面的一些資源:

  • MySQL 分區(qū)論壇

    這是一個(gè)為對(duì)MySQL分區(qū)技術(shù)感興趣或用MySQL分區(qū)技術(shù)做試驗(yàn)提供的官方討論論壇。來自MySQL?的開發(fā)者和其他的人,會(huì)在上面發(fā)表和更新有關(guān)的材料。它由分區(qū)開發(fā)和文獻(xiàn)團(tuán)隊(duì)的成員負(fù)責(zé)監(jiān)控。

  • 分區(qū)缺陷報(bào)告

    已經(jīng)歸檔在缺陷系統(tǒng)中的、所有分區(qū)缺陷的一個(gè)列表,而無論這些缺陷的年限、嚴(yán)重性或當(dāng)前的狀態(tài)如何。根據(jù)許多規(guī)則可以對(duì)這些缺陷進(jìn)行篩選,或者可以從MySQL缺陷系統(tǒng)主頁(yè)開始,然后查找你特別感興趣的缺陷。

  • Mikael Ronstr?m's Blog

    MySQL分區(qū)體系結(jié)構(gòu)和領(lǐng)先的開發(fā)者M(jìn)ikael Ronstr?m?經(jīng)常在這里貼關(guān)于他研究MySQL?分區(qū)和MySQL簇的文章。

  • PlanetMySQL

    一個(gè)MySQL?新聞網(wǎng)站,它以匯集MySQL相關(guān)的網(wǎng)誌為特點(diǎn),那些使用我的MySQL的人應(yīng)該對(duì)此有興趣。我們鼓勵(lì)查看那些研究MySQL分區(qū)的人的網(wǎng)誌鏈接,或者把你自己的網(wǎng)誌加到這些新聞報(bào)道中。

MySQL 5.1的二進(jìn)制版本目前還不可用;但是,可以從BitKeeper知識(shí)庫(kù)中獲得源碼。要激活分區(qū),需要使用--with-分區(qū)選項(xiàng)編譯服務(wù)器。關(guān)于建立MySQL?的更多信息,請(qǐng)參見2.8節(jié),“使用源碼分發(fā)版安裝MySQL”。如果在編譯一個(gè)激活分區(qū)的MySQL 5.1創(chuàng)建中碰到問題,可以在MySQL分區(qū)論壇中查找解決辦法,如果在論壇中已經(jīng)貼出的文章中沒有找到問題的解決辦法,可以在上面尋找?guī)椭?/p>

18.1.?MySQL中的分區(qū)概述

本節(jié)提供了關(guān)于MySQL 5.1.分區(qū)在概念上的概述。

SQL標(biāo)準(zhǔn)在數(shù)據(jù)存儲(chǔ)的物理方面沒有提供太多的指南。SQL語言的使用獨(dú)立于它所使用的任何數(shù)據(jù)結(jié)構(gòu)或圖表、表、行或列下的介質(zhì)。但是,大部分高級(jí)數(shù)據(jù)庫(kù)管理系統(tǒng)已經(jīng)開發(fā)了一些根據(jù)文件系統(tǒng)、硬件或者這兩者來確定將要用于存儲(chǔ)特定數(shù)據(jù)塊物理位置的方法。在MySQL中,InnoDB存儲(chǔ)引擎長(zhǎng)期支持表空間的概念,并且MySQL服務(wù)器甚至在分區(qū)引入之前,就能配置為存儲(chǔ)不同的數(shù)據(jù)庫(kù)使用不同的物理路徑(關(guān)于如何配置的解釋,請(qǐng)參見7.6.1節(jié),“使用符號(hào)鏈接”)。

分區(qū)又把這個(gè)概念推進(jìn)了一步,它允許根據(jù)可以設(shè)置為任意大小的規(guī)則,跨文件系統(tǒng)分配單個(gè)表的多個(gè)部分。實(shí)際上,表的不同部分在不同的位置被存儲(chǔ)為單獨(dú)的表。用戶所選擇的、實(shí)現(xiàn)數(shù)據(jù)分割的規(guī)則被稱為分區(qū)函數(shù),這在MySQL中它可以是模數(shù),或者是簡(jiǎn)單的匹配一個(gè)連續(xù)的數(shù)值區(qū)間或數(shù)值列表,或者是一個(gè)內(nèi)部HASH函數(shù),或一個(gè)線性HASH函數(shù)。函數(shù)根據(jù)用戶指定的分區(qū)類型來選擇,把用戶提供的表達(dá)式的值作為參數(shù)。該表達(dá)式可以是一個(gè)整數(shù)列值,或一個(gè)作用在一個(gè)或多個(gè)列值上并返回一個(gè)整數(shù)的函數(shù)。這個(gè)表達(dá)式的值傳遞給分區(qū)函數(shù),分區(qū)函數(shù)返回一個(gè)表示那個(gè)特定記錄應(yīng)該保存在哪個(gè)分區(qū)的序號(hào)。這個(gè)函數(shù)不能是常數(shù),也不能是任意數(shù)。它不能包含任何查詢,但是實(shí)際上可以使用MySQL?中任何可用的SQL表達(dá)式,只要該表達(dá)式返回一個(gè)小于MAXVALUE(最大可能的正整數(shù))的正數(shù)值。分區(qū)函數(shù)的例子可以在本章后面關(guān)于分區(qū)類型的討論中找到?(請(qǐng)參見18.2節(jié),“分區(qū)類型”?),也可在13.1.5節(jié),“CREATE TABLE語法”的分區(qū)語法描述中找到。

當(dāng)二進(jìn)制碼變成可用時(shí)(也就是說,5.1?-max?二進(jìn)制碼將通過--with-partition?建立),分區(qū)支持就將包含在MySQL 5.1的-max?版本中。如果MySQL二進(jìn)制碼是使用分區(qū)支持建立的,那么激活它不需要任何其他的東西?(例如,在my.cnf?文件中,不需要特殊的條目)。可以通過使用SHOW VARIABLES命令來確定MySQL是否支持分區(qū),例如:

mysql> SHOW VARIABLES LIKE '%partition%';
?
+-----------------------+-------+
| Variable_name???????? | Value |
+-----------------------+-------+
| have_partition_engine | YES?? |
+-----------------------+-------+
1 row in set (0.00 sec)

在如上列出的一個(gè)正確的SHOW VARIABLES?命令所產(chǎn)生的輸出中,如果沒有看到變量have_partition_engine的值為YES,那么MySQL的版本就不支持分區(qū)。(注意:在顯示任何有關(guān)分區(qū)支持信息的命令SHOW ENGINES的輸出中,不會(huì)給出任何信息;必須使用SHOW VARIABLES命令來做出這個(gè)判斷)。

對(duì)于創(chuàng)建了分區(qū)的表,可以使用你的MySQL?服務(wù)器所支持的任何存儲(chǔ)引擎;MySQL?分區(qū)引擎在一個(gè)單獨(dú)的層中運(yùn)行,并且可以和任何這樣的層進(jìn)行相互作用。在MySQL 5.1版中,同一個(gè)分區(qū)表的所有分區(qū)必須使用同一個(gè)存儲(chǔ)引擎;例如,不能對(duì)一個(gè)分區(qū)使用MyISAM,而對(duì)另一個(gè)使用InnoDB。但是,這并不妨礙在同一個(gè)?MySQL?服務(wù)器中,甚至在同一個(gè)數(shù)據(jù)庫(kù)中,對(duì)于不同的分區(qū)表使用不同的存儲(chǔ)引擎。

要為某個(gè)分區(qū)表配置一個(gè)專門的存儲(chǔ)引擎,必須且只能使用[STORAGE] ENGINE?選項(xiàng),這如同為非分區(qū)表配置存儲(chǔ)引擎一樣。但是,必須記住[STORAGE] ENGINE(和其他的表選項(xiàng))必須列在用在CREATE TABLE語句中的其他任何分區(qū)選項(xiàng)之前。下面的例子給出了怎樣創(chuàng)建一個(gè)通過HASH分成6個(gè)分區(qū)、使用InnoDB存儲(chǔ)引擎的表:

CREATE TABLE ti (id INT, amount DECIMAL(7,2), tr_date DATE)
??? ENGINE=INNODB
??? PARTITION BY HASH(MONTH(tr_date))
??? PARTITIONS 6;

(注釋:每個(gè)PARTITION?子句可以包含一個(gè)?[STORAGE] ENGINE?選項(xiàng),但是在MySQL 5.1版本中,這沒有作用)。

創(chuàng)建分區(qū)的臨時(shí)表也是可能的;但是,這種表的生命周期只有當(dāng)前MySQL?的會(huì)話的時(shí)間那么長(zhǎng)。對(duì)于非分區(qū)的臨時(shí)表,這也是一樣的。

注釋:分區(qū)適用于一個(gè)表的所有數(shù)據(jù)和索引;不能只對(duì)數(shù)據(jù)分區(qū)而不對(duì)索引分區(qū),反之亦然,同時(shí)也不能只對(duì)表的一部分進(jìn)行分區(qū)。

可以通過使用用來創(chuàng)建分區(qū)表的CREATE TABLE語句的PARTITION子句的DATA DIRECTORY(數(shù)據(jù)路徑)和INDEX DIRECTORY(索引路徑)選項(xiàng),為每個(gè)分區(qū)的數(shù)據(jù)和索引指定特定的路徑。此外,MAX_ROWS和MIN_ROWS選項(xiàng)可以用來設(shè)定最大和最小的行數(shù),它們可以各自保存在每個(gè)分區(qū)里。關(guān)于這些選項(xiàng)的更多信息,請(qǐng)參見18.3節(jié),“分區(qū)管理”。注釋:這個(gè)特殊的功能由于Bug #13250的原因,目前還不能實(shí)用。在第一個(gè)5.1二進(jìn)制版本投入使用時(shí),我們應(yīng)該已經(jīng)把這個(gè)問題解決了。

分區(qū)的一些優(yōu)點(diǎn)包括:

·?????????與單個(gè)磁盤或文件系統(tǒng)分區(qū)相比,可以存儲(chǔ)更多的數(shù)據(jù)。

·?????????對(duì)于那些已經(jīng)失去保存意義的數(shù)據(jù),通常可以通過刪除與那些數(shù)據(jù)有關(guān)的分區(qū),很容易地刪除那些數(shù)據(jù)。相反地,在某些情況下,添加新數(shù)據(jù)的過程又可以通過為那些新數(shù)據(jù)專門增加一個(gè)新的分區(qū),來很方便地實(shí)現(xiàn)。

通常和分區(qū)有關(guān)的其他優(yōu)點(diǎn)包括下面列出的這些。MySQL?分區(qū)中的這些功能目前還沒有實(shí)現(xiàn),但是在我們的優(yōu)先級(jí)列表中,具有高的優(yōu)先級(jí);我們希望在5.1的生產(chǎn)版本中,能包括這些功能。

·?????????一些查詢可以得到極大的優(yōu)化,這主要是借助于滿足一個(gè)給定WHERE?語句的數(shù)據(jù)可以只保存在一個(gè)或多個(gè)分區(qū)內(nèi),這樣在查找時(shí)就不用查找其他剩余的分區(qū)。因?yàn)榉謪^(qū)可以在創(chuàng)建了分區(qū)表后進(jìn)行修改,所以在第一次配置分區(qū)方案時(shí)還不曾這么做時(shí),可以重新組織數(shù)據(jù),來提高那些常用查詢的效率。

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

·?????????通過跨多個(gè)磁盤來分散數(shù)據(jù)查詢,來獲得更大的查詢吞吐量。

要經(jīng)常檢查本頁(yè)和本章,因?yàn)樗鼘㈦SMySQL 5.1后續(xù)的分區(qū)進(jìn)展而更新。

18.2.?分區(qū)類型

18.2.1. RANGE分區(qū)18.2.2. LIST分區(qū)18.2.3. HASH分區(qū)18.2.4. KEY分區(qū)18.2.5. 子分區(qū)18.2.6. MySQL分區(qū)處理NULL值的方式

本節(jié)討論在MySQL 5.1中可用的分區(qū)類型。這些類型包括:

·?????????RANGE?分區(qū):基于屬于一個(gè)給定連續(xù)區(qū)間的列值,把多行分配給分區(qū)。參見18.2.1節(jié),“RANGE分區(qū)”。

·?????????LIST?分區(qū):類似于按RANGE分區(qū),區(qū)別在于LIST分區(qū)是基于列值匹配一個(gè)離散值集合中的某個(gè)值來進(jìn)行選擇。參見18.2.2節(jié),“LIST分區(qū)”。

·?????????HASH分區(qū):基于用戶定義的表達(dá)式的返回值來進(jìn)行選擇的分區(qū),該表達(dá)式使用將要插入到表中的這些行的列值進(jìn)行計(jì)算。這個(gè)函數(shù)可以包含MySQL?中有效的、產(chǎn)生非負(fù)整數(shù)值的任何表達(dá)式。參見18.2.3節(jié),“HASH分區(qū)”。

·?????????KEY?分區(qū):類似于按HASH分區(qū),區(qū)別在于KEY分區(qū)只支持計(jì)算一列或多列,且MySQL?服務(wù)器提供其自身的哈希函數(shù)。必須有一列或多列包含整數(shù)值。參見18.2.4節(jié),“KEY分區(qū)”。

無論使用何種類型的分區(qū),分區(qū)總是在創(chuàng)建時(shí)就自動(dòng)的順序編號(hào),且從0開始記錄,記住這一點(diǎn)非常重要。當(dāng)有一新行插入到一個(gè)分區(qū)表中時(shí),就是使用這些分區(qū)編號(hào)來識(shí)別正確的分區(qū)。例如,如果你的表使用4個(gè)分區(qū),那么這些分區(qū)就編號(hào)為0,?1,?2,?和3。對(duì)于RANGE和LIST分區(qū)類型,確認(rèn)每個(gè)分區(qū)編號(hào)都定義了一個(gè)分區(qū),很有必要。對(duì)HASH分區(qū),使用的用戶函數(shù)必須返回一個(gè)大于0的整數(shù)值。對(duì)于KEY分區(qū),這個(gè)問題通過MySQL服務(wù)器內(nèi)部使用的 哈希函數(shù)自動(dòng)進(jìn)行處理。

分區(qū)的名字基本上遵循其他MySQL?標(biāo)識(shí)符應(yīng)當(dāng)遵循的原則,例如用于表和數(shù)據(jù)庫(kù)名字的標(biāo)識(shí)符。但是應(yīng)當(dāng)注意,分區(qū)的名字是不區(qū)分大小寫的。例如,下面的CREATE TABLE語句將會(huì)產(chǎn)生如下的錯(cuò)誤:

mysql> CREATE TABLE t2 (val INT)
??? -> PARTITION BY LIST(val)(
??? ->???? PARTITION mypart VALUES IN (1,3,5),
??? ->???? PARTITION MyPart VALUES IN (2,4,6)
??? -> );
錯(cuò)誤1488 (HY000): 表的所有分區(qū)必須有唯一的名字。

這是因?yàn)镸ySQL認(rèn)為分區(qū)名字mypart和MyPart沒有區(qū)別。

注釋:在下面的章節(jié)中,我們沒有必要提供可以用來創(chuàng)建每種分區(qū)類型語法的所有可能形式,這些信息可以在13.1.5節(jié),“CREATE TABLE語法”?中找到。

18.2.1.?RANGE分區(qū)

按照RANGE分區(qū)的表是通過如下一種方式進(jìn)行分區(qū)的,每個(gè)分區(qū)包含那些分區(qū)表達(dá)式的值位于一個(gè)給定的連續(xù)區(qū)間內(nèi)的行。這些區(qū)間要連續(xù)且不能相互重疊,使用VALUES LESS THAN操作符來進(jìn)行定義。在下面的幾個(gè)例子中,假定你創(chuàng)建了一個(gè)如下的一個(gè)表,該表保存有20家音像店的職員記錄,這20家音像店的編號(hào)從1到20。

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
);

根據(jù)你的需要,這個(gè)表可以有多種方式來按照區(qū)間進(jìn)行分區(qū)。一種方式是使用store_id?列。例如,你可能決定通過添加一個(gè)PARTITION BY RANGE子句把這個(gè)表分割成4個(gè)區(qū)間,如下所示:

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)
);

按照這種分區(qū)方案,在商店1到5工作的雇員相對(duì)應(yīng)的所有行被保存在分區(qū)P0中,商店6到10的雇員保存在P1中,依次類推。注意,每個(gè)分區(qū)都是按順序進(jìn)行定義,從最低到最高。這是PARTITION BY RANGE?語法的要求;在這點(diǎn)上,它類似于C或Java中的“switch ... case”語句。

對(duì)于包含數(shù)據(jù)(72, 'Michael', 'Widenius', '1998-06-25', NULL, 13)的一個(gè)新行,可以很容易地確定它將插入到p2分區(qū)中,但是如果增加了一個(gè)編號(hào)為第21的商店,將會(huì)發(fā)生什么呢?在這種方案下,由于沒有規(guī)則把store_id大于20的商店包含在內(nèi),服務(wù)器將不知道把該行保存在何處,將會(huì)導(dǎo)致錯(cuò)誤。?要避免這種錯(cuò)誤,可以通過在CREATE TABLE語句中使用一個(gè)“catchall”?VALUES LESS THAN子句,該子句提供給所有大于明確指定的最高值的值:

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?表示最大的可能的整數(shù)值。現(xiàn)在,store_id?列值大于或等于16(定義了的最高值)的所有行都將保存在分區(qū)p3中。在將來的某個(gè)時(shí)候,當(dāng)商店數(shù)已經(jīng)增長(zhǎng)到25, 30,?或更多 ,可以使用ALTER TABLE語句為商店21-25, 26-30,等等增加新的分區(qū) (關(guān)于如何實(shí)現(xiàn)的詳細(xì)信息參見18.3節(jié),“分區(qū)管理”?)。

在幾乎一樣的結(jié)構(gòu)中,你還可以基于雇員的工作代碼來分割表,也就是說,基于job_code?列值的連續(xù)區(qū)間。例如——假定2位數(shù)字的工作代碼用來表示普通(店內(nèi)的)工人,三個(gè)數(shù)字代碼表示辦公室和支持人員,四個(gè)數(shù)字代碼表示管理層,你可以使用下面的語句創(chuàng)建該分區(qū)表:

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)
);

在這個(gè)例子中,?店內(nèi)工人相關(guān)的所有行將保存在分區(qū)p0中,辦公室和支持人員相關(guān)的所有行保存在分區(qū)p1中,管理層相關(guān)的所有行保存在分區(qū)p2中。

在VALUES LESS THAN?子句中使用一個(gè)表達(dá)式也是可能的。這里最值得注意的限制是MySQL?必須能夠計(jì)算表達(dá)式的返回值作為L(zhǎng)ESS THAN?(<)比較的一部分;因此,表達(dá)式的值不能為NULL?。由于這個(gè)原因,雇員表的hired,separated,?job_code,和store_id列已經(jīng)被定義為非空(NOT NULL)。

除了可以根據(jù)商店編號(hào)分割表數(shù)據(jù)外,你還可以使用一個(gè)基于兩個(gè)DATE?(日期)中的一個(gè)的表達(dá)式來分割表數(shù)據(jù)。例如,假定你想基于每個(gè)雇員離開公司的年份來分割表,也就是說,YEAR(separated)的值。實(shí)現(xiàn)這種分區(qū)模式的CREATE TABLE?語句的一個(gè)例子如下所示:

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
);

在這個(gè)方案中,在1991年前雇傭的所有雇員的記錄保存在分區(qū)p0中,1991年到1995年期間雇傭的所有雇員的記錄保存在分區(qū)p1中,?1996年到2000年期間雇傭的所有雇員的記錄保存在分區(qū)p2中,2000年后雇傭的所有工人的信息保存在p3中。

RANGE分區(qū)在如下場(chǎng)合特別有用:

·?????????當(dāng)需要?jiǎng)h除“舊的”數(shù)據(jù)時(shí)。如果你使用上面最近的那個(gè)例子給出的分區(qū)方案,你只需簡(jiǎn)單地使用 “ALTER TABLE employees DROP PARTITION p0;”來刪除所有在1991年前就已經(jīng)停止工作的雇員相對(duì)應(yīng)的所有行。(更多信息請(qǐng)參見13.1.2節(jié),“ALTER TABLE語法”?和?18.3節(jié),“分區(qū)管理”)。對(duì)于有大量行的表,這比運(yùn)行一個(gè)如“DELETE FROM employees WHERE YEAR(separated) <= 1990;”這樣的一個(gè)DELETE查詢要有效得多。

·?????????想要使用一個(gè)包含有日期或時(shí)間值,或包含有從一些其他級(jí)數(shù)開始增長(zhǎng)的值的列。

·?????????經(jīng)常運(yùn)行直接依賴于用于分割表的列的查詢。例如,當(dāng)執(zhí)行一個(gè)如“SELECT COUNT(*) FROM employees WHERE YEAR(separated) = 2000 GROUP BY store_id;”這樣的查詢時(shí),MySQL可以很迅速地確定只有分區(qū)p2需要掃描,這是因?yàn)橛嘞碌姆謪^(qū)不可能包含有符合該WHERE子句的任何記錄。注釋:這種優(yōu)化還沒有在MySQL 5.1源程序中啟用,但是,有關(guān)工作正在進(jìn)行中。

18.2.2.?LIST分區(qū)

MySQL中的LIST分區(qū)在很多方面類似于RANGE分區(qū)。和按照RANGE分區(qū)一樣,每個(gè)分區(qū)必須明確定義。它們的主要區(qū)別在于,LIST分區(qū)中每個(gè)分區(qū)的定義和選擇是基于某列的值從屬于一個(gè)值列表集中的一個(gè)值,而RANGE分區(qū)是從屬于一個(gè)連續(xù)區(qū)間值的集合。LIST分區(qū)通過使用“PARTITION BY LIST(expr)”來實(shí)現(xiàn),其中“expr”?是某列值或一個(gè)基于某個(gè)列值、并返回一個(gè)整數(shù)值的表達(dá)式,然后通過“VALUES IN (value_list)”的方式來定義每個(gè)分區(qū),其中“value_list”是一個(gè)通過逗號(hào)分隔的整數(shù)列表。

注釋:在MySQL 5.1中,當(dāng)使用LIST分區(qū)時(shí),有可能只能匹配整數(shù)列表。

不像按照RANGE定義分區(qū)的情形,LIST分區(qū)不必聲明任何特定的順序。關(guān)于LIST分區(qū)更詳細(xì)的語法信息,請(qǐng)參考13.1.5節(jié),“CREATE TABLE語法”?。

對(duì)于下面給出的例子,我們假定將要被分區(qū)的表的基本定義是通過下面的“CREATE TABLE”語句提供的:

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
);

(這和18.2.1節(jié),“RANGE分區(qū)”?中的例子中使用的是同一個(gè)表)。?

假定有20個(gè)音像店,分布在4個(gè)有經(jīng)銷權(quán)的地區(qū),如下表所示:

地區(qū)

商店ID?號(hào)

北區(qū)

3, 5, 6, 9, 17

東區(qū)

1, 2, 10, 11, 19, 20

西區(qū)

4, 12, 13, 14, 18

中心區(qū)

7, 8, 15, 16

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

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)
);

這使得在表中增加或刪除指定地區(qū)的雇員記錄變得容易起來。例如,假定西區(qū)的所有音像店都賣給了其他公司。那么與在西區(qū)音像店工作雇員相關(guān)的所有記錄(行)可以使用查詢“ALTER TABLE employees DROP PARTITION pWest;”來進(jìn)行刪除,它與具有同樣作用的DELETE?(刪除)查詢“DELETE?query?DELETE FROM employees WHERE store_id IN (4,12,13,14,18);”比起來,要有效得多。

要點(diǎn):如果試圖插入列值(或分區(qū)表達(dá)式的返回值)不在分區(qū)值列表中的一行時(shí),那么“INSERT”查詢將失敗并報(bào)錯(cuò)。例如,假定LIST分區(qū)的采用上面的方案,下面的查詢將失敗:

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

這是因?yàn)椤皊tore_id”列值21不能在用于定義分區(qū)pNorth,?pEast,?pWest,或pCentral的值列表中找到。要重點(diǎn)注意的是,LIST分區(qū)沒有類似如“VALUES LESS THAN MAXVALUE”這樣的包含其他值在內(nèi)的定義。將要匹配的任何值都必須在值列表中找到。

LIST分區(qū)除了能和RANGE分區(qū)結(jié)合起來生成一個(gè)復(fù)合的子分區(qū),與HASH和KEY分區(qū)結(jié)合起來生成復(fù)合的子分區(qū)也是可能的。?關(guān)于這方面的討論,請(qǐng)參考18.2.5節(jié),“子分區(qū)”。

18.2.3.?HASH分區(qū)

18.2.3.1. LINEAR HASH分區(qū)

HASH分區(qū)主要用來確保數(shù)據(jù)在預(yù)先確定數(shù)目的分區(qū)中平均分布。在RANGE和LIST分區(qū)中,必須明確指定一個(gè)給定的列值或列值集合應(yīng)該保存在哪個(gè)分區(qū)中;而在HASH分區(qū)中,MySQL?自動(dòng)完成這些工作,你所要做的只是基于將要被哈希的列值指定一個(gè)列值或表達(dá)式,以及指定被分區(qū)的表將要被分割成的分區(qū)數(shù)量。

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

例如,下面的語句創(chuàng)建了一個(gè)使用基于“store_id”列進(jìn)行 哈希處理的表,該表被分成了4個(gè)分區(qū):

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;

如果沒有包括一個(gè)PARTITIONS子句,那么分區(qū)的數(shù)量將默認(rèn)為1。?例外:?對(duì)于NDB Cluster(簇)表,默認(rèn)的分區(qū)數(shù)量將與簇?cái)?shù)據(jù)節(jié)點(diǎn)的數(shù)量相同,這種修正可能是考慮任何MAX_ROWS?設(shè)置,以便確保所有的行都能合適地插入到分區(qū)中。(參見第17章:MySQL簇)。

如果在關(guān)鍵字“PARTITIONS”后面沒有加上分區(qū)的數(shù)量,將會(huì)出現(xiàn)語法錯(cuò)誤。

expr”還可以是一個(gè)返回一個(gè)整數(shù)的SQL表達(dá)式。例如,也許你想基于雇用雇員的年份來進(jìn)行分區(qū)。這可以通過下面的語句來實(shí)現(xiàn):

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(YEAR(hired))
PARTITIONS 4;

expr”還可以是MySQL?中有效的任何函數(shù)或其他表達(dá)式,只要它們返回一個(gè)既非常數(shù)、也非隨機(jī)數(shù)的整數(shù)。(換句話說,它既是變化的但又是確定的)。但是應(yīng)當(dāng)記住,每當(dāng)插入或更新(或者可能刪除)一行,這個(gè)表達(dá)式都要計(jì)算一次;這意味著非常復(fù)雜的表達(dá)式可能會(huì)引起性能問題,尤其是在執(zhí)行同時(shí)影響大量行的運(yùn)算(例如批量插入)的時(shí)候。

最有效率的哈希函數(shù)是只對(duì)單個(gè)表列進(jìn)行計(jì)算,并且它的值隨列值進(jìn)行一致地增大或減小,因?yàn)檫@考慮了在分區(qū)范圍上的“修剪”。也就是說,表達(dá)式值和它所基于的列的值變化越接近,MySQL就可以越有效地使用該表達(dá)式來進(jìn)行HASH分區(qū)。

例如,“date_col” 是一個(gè)DATE(日期)類型的列,那么表達(dá)式TO_DAYS(date_col)就可以說是隨列“date_col”值的變化而發(fā)生直接的變化,因?yàn)榱小癲ate_col”值的每個(gè)變化,表達(dá)式的值也將發(fā)生與之一致的變化。而表達(dá)式Y(jié)EAR(date_col)的變化就沒有表達(dá)式TO_DAYS(date_col)那么直接,因?yàn)椴皇橇小癲ate_col”每次可能的改變都能使表達(dá)式Y(jié)EAR(date_col)發(fā)生同等的改變。即便如此,表達(dá)式Y(jié)EAR(date_col)也還是一個(gè)用于 哈希函數(shù)的、好的候選表達(dá)式,因?yàn)樗S列date_col的一部分發(fā)生直接變化,并且列date_col的變化不可能引起表達(dá)式Y(jié)EAR(date_col)不成比例的變化。

作為對(duì)照,假定有一個(gè)類型為整型(INT)的、列名為“int_col”的列。現(xiàn)在考慮表達(dá)式“POW(5-int_col,3) + 6”。這對(duì)于哈希函數(shù)就是一個(gè)不好的選擇,因?yàn)椤癷nt_col”值的變化并不能保證表達(dá)式產(chǎn)生成比例的變化。列 “int_col”的值發(fā)生一個(gè)給定數(shù)目的變化,可能會(huì)引起表達(dá)式的值產(chǎn)生一個(gè)很大不同的變化。例如,把列“int_col”的值從5變?yōu)?,表達(dá)式的值將產(chǎn)生“-1”的改變,但是把列“int_col”的值從6變?yōu)?時(shí),表達(dá)式的值將產(chǎn)生“-7”的變化。

換句話說,如果列值與表達(dá)式值之比的曲線圖越接近由等式“y=nx(其中n為非零的常數(shù))描繪出的直線,則該表達(dá)式越適合于 哈希。這是因?yàn)?#xff0c;表達(dá)式的非線性越嚴(yán)重,分區(qū)中數(shù)據(jù)產(chǎn)生非均衡分布的趨勢(shì)也將越嚴(yán)重。

理論上講,對(duì)于涉及到多列的表達(dá)式,“修剪(pruning)”也是可能的,但是要確定哪些適于 哈希是非常困難和耗時(shí)的。基于這個(gè)原因,實(shí)際上不推薦使用涉及到多列的哈希表達(dá)式。

當(dāng)使用了“PARTITION BY HASH”時(shí),MySQL將基于用戶函數(shù)結(jié)果的模數(shù)來確定使用哪個(gè)編號(hào)的分區(qū)。換句話,對(duì)于一個(gè)表達(dá)式“expr”,將要保存記錄的分區(qū)編號(hào)為N?,其中“N?= MOD(expr,?num)”。例如,假定表t1?定義如下,它有4個(gè)分區(qū):

CREATE TABLE t1 (col1 INT, col2 CHAR(5), col3 DATE)
??? PARTITION BY HASH( YEAR(col3) )
??? PARTITIONS 4;

如果插入一個(gè)col3列值為'2005-09-15'的記錄到表t1中,那么保存該條記錄的分區(qū)確定如下:

MOD(YEAR('2005-09-01'),4)
=? MOD(2005,4)
=? 1

MySQL 5.1?還支持一個(gè)被稱為“linear hashing(線性哈希功能)”的變量,它使用一個(gè)更加復(fù)雜的算法來確定新行插入到已經(jīng)分區(qū)了的表中的位置。關(guān)于這種算法的描述,請(qǐng)參見18.2.3.1節(jié),“LINEAR HASH分區(qū)”?。

每當(dāng)插入或更新一條記錄,用戶函數(shù)都要計(jì)算一次。當(dāng)刪除記錄時(shí),用戶函數(shù)也可能要進(jìn)行計(jì)算,這取決于所處的環(huán)境。

注釋:如果將要分區(qū)的表有一個(gè)唯一的鍵,那么用來作為HASH用戶函數(shù)的自變數(shù)或者主鍵的column_list的自變數(shù)的任意列都必須是那個(gè)鍵的一部分。

18.2.3.1.?LINEAR HASH分區(qū)

MySQL還支持線性哈希功能,它與常規(guī)哈希的區(qū)別在于,線性哈希功能使用的一個(gè)線性的2的冪(powers-of-two)運(yùn)算法則,而常規(guī) 哈希使用的是求哈希函數(shù)值的模數(shù)。

線性哈希分區(qū)和常規(guī)哈希分區(qū)在語法上的唯一區(qū)別在于,在“PARTITION BY”?子句中添加“LINEAR”關(guān)鍵字,如下面所示:

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;

假設(shè)一個(gè)表達(dá)式expr,?當(dāng)使用線性哈希功能時(shí),記錄將要保存到的分區(qū)是num?個(gè)分區(qū)中的分區(qū)N,其中N是根據(jù)下面的算法得到:

1.????找到下一個(gè)大于num.的、2的冪,我們把這個(gè)值稱為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.????設(shè)置?N?=?F(column_list) & (V?- 1).

4.????當(dāng)?N?>=?num:

·?????????設(shè)置?V?= CEIL(V?/ 2)

·?????????設(shè)置?N?=?N?& (V?- 1)

例如,假設(shè)表t1,使用線性哈希分區(qū)且有4個(gè)分區(qū),是通過下面的語句創(chuàng)建的:

CREATE TABLE t1 (col1 INT, col2 CHAR(5), col3 DATE)
??? PARTITION BY LINEAR HASH( YEAR(col3) )
??? PARTITIONS 6;

現(xiàn)在假設(shè)要插入兩行記錄到表t1中,其中一條記錄col3列值為'2003-04-14',另一條記錄col3列值為'1998-10-19'。第一條記錄將要保存到的分區(qū)確定如下:

V = POWER(2, CEILING(LOG(2,7))) = 8
N = YEAR('2003-04-14') & (8 - 1)
?? = 2003 & 7
?? = 3
?
(3 >= 6 為假(FALSE): 記錄將被保存到#3號(hào)分區(qū)中)

第二條記錄將要保存到的分區(qū)序號(hào)計(jì)算如下:

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分區(qū)中)

按照線性哈希分區(qū)的優(yōu)點(diǎn)在于增加、刪除、合并和拆分分區(qū)將變得更加快捷,有利于處理含有極其大量(1000吉)數(shù)據(jù)的表。它的缺點(diǎn)在于,與使用常規(guī)HASH分區(qū)得到的數(shù)據(jù)分布相比,各個(gè)分區(qū)間數(shù)據(jù)的分布不大可能均衡。

18.2.4.?KEY分區(qū)

按照KEY進(jìn)行分區(qū)類似于按照HASH分區(qū),除了HASH分區(qū)使用的用戶定義的表達(dá)式,而KEY分區(qū)的 哈希函數(shù)是由MySQL?服務(wù)器提供。MySQL?簇(Cluster)使用函數(shù)MD5()來實(shí)現(xiàn)KEY分區(qū);對(duì)于使用其他存儲(chǔ)引擎的表,服務(wù)器使用其自己內(nèi)部的 哈希函數(shù),這些函數(shù)是基于與PASSWORD()一樣的運(yùn)算法則。

“CREATE TABLE ... PARTITION BY KEY”的語法規(guī)則類似于創(chuàng)建一個(gè)通過HASH分區(qū)的表的規(guī)則。它們唯一的區(qū)別在于使用的關(guān)鍵字是KEY而不是HASH,并且KEY分區(qū)只采用一個(gè)或多個(gè)列名的一個(gè)列表。

通過線性KEY分割一個(gè)表也是可能的。下面是一個(gè)簡(jiǎn)單的例子:

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

在KEY分區(qū)中使用關(guān)鍵字LINEAR和在HASH分區(qū)中使用具有同樣的作用,分區(qū)的編號(hào)是通過2的冪(powers-of-two)算法得到,而不是通過模數(shù)算法。關(guān)于該算法及其蘊(yùn)涵式的描述請(qǐng)參考?18.2.3.1節(jié),“LINEAR HASH分區(qū)”?。

18.2.5.?子分區(qū)

子分區(qū)是分區(qū)表中每個(gè)分區(qū)的再次分割。例如,考慮下面的CREATE TABLE?語句:

CREATE TABLE ts (id INT, purchased DATE)
??? PARTITION BY RANGE(YEAR(purchased))
??? SUBPARTITION BY HASH(TO_DAYS(purchased))
??? SUBPARTITIONS 2
??? (
??????? PARTITION p0 VALUES LESS THAN (1990),
??????? PARTITION p1 VALUES LESS THAN (2000),
??????? PARTITION p2 VALUES LESS THAN MAXVALUE
??? );

表ts?有3個(gè)RANGE分區(qū)。這3個(gè)分區(qū)中的每一個(gè)分區(qū)——p0,?p1,?和?p2?——又被進(jìn)一步分成了2個(gè)子分區(qū)。實(shí)際上,整個(gè)表被分成了3 * 2 = 6個(gè)分區(qū)。但是,由于PARTITION BY RANGE子句的作用,這些分區(qū)的頭2個(gè)只保存“purchased”列中值小于1990的那些記錄。

在MySQL 5.1中,對(duì)于已經(jīng)通過RANGE或LIST分區(qū)了的表再進(jìn)行子分區(qū)是可能的。子分區(qū)既可以使用HASH希分區(qū),也可以使用KEY分區(qū)。這也被稱為復(fù)合分區(qū)(composite partitioning)。

為了對(duì)個(gè)別的子分區(qū)指定選項(xiàng),使用SUBPARTITION?子句來明確定義子分區(qū)也是可能的。例如,創(chuàng)建在前面例子中給出的同一個(gè)表的、一個(gè)更加詳細(xì)的方式如下:

CREATE TABLE ts (id INT, purchased DATE)
??? PARTITION BY RANGE(YEAR(purchased))
??? SUBPARTITION BY HASH(TO_DAYS(purchased))
??? (
??????? PARTITION p0 VALUES LESS THAN (1990)
??????? (
??????????? SUBPARTITION s0,
??????????? SUBPARTITION s1
??????? ),
??????? PARTITION p1 VALUES LESS THAN (2000)
??????? (
??????????? SUBPARTITION s2,
? ??????????SUBPARTITION s3
??????? ),
??????? PARTITION p2 VALUES LESS THAN MAXVALUE
??????? (
??????????? SUBPARTITION s4,
??????????? SUBPARTITION s5
??????? )
??? );

幾點(diǎn)要注意的語法項(xiàng):

·?????????每個(gè)分區(qū)必須有相同數(shù)量的子分區(qū)。

·?????????如果在一個(gè)分區(qū)表上的任何分區(qū)上使用SUBPARTITION?來明確定義任何子分區(qū),那么就必須定義所有的子分區(qū)。換句話說,下面的語句將執(zhí)行失敗:

·??????????????? CREATE TABLE ts (id INT, purchased DATE)
·??????????????? ????PARTITION BY RANGE(YEAR(purchased))
·??????????????? ????SUBPARTITION BY HASH(TO_DAYS(purchased))
·??????????????? ????(
·??????????????? ????????PARTITION p0 VALUES LESS THAN (1990)
·??????????????? ????????(
·??????????????? ????????????SUBPARTITION s0,
·??????????????? ????????????SUBPARTITION s1
·??????????????? ????????),
·??????????????? ????????PARTITION p1 VALUES LESS THAN (2000),
·??????????????? ????????PARTITION p2 VALUES LESS THAN MAXVALUE
·??????????????? ????????(
·??????????????? ????????????SUBPARTITION s2,
·??????????????? ????????????SUBPARTITION s3
·??????????????? ????????)
·??????????????? ????);

即便這個(gè)語句包含了一個(gè)SUBPARTITIONS 2子句,但是它仍然會(huì)執(zhí)行失敗。

·?????????每個(gè)SUBPARTITION?子句必須包括?(至少)子分區(qū)的一個(gè)名字。否則,你可能要對(duì)該子分區(qū)設(shè)置任何你所需要的選項(xiàng),或者允許該子分區(qū)對(duì)那些選項(xiàng)采用其默認(rèn)的設(shè)置。

·?????????在每個(gè)分區(qū)內(nèi),子分區(qū)的名字必須是唯一的,但是在整個(gè)表中,沒有必要保持唯一。例如,下面的CREATE TABLE?語句是有效的:

·??????????????? CREATE TABLE ts (id INT, purchased DATE)
·??????????????? ????PARTITION BY RANGE(YEAR(purchased))
·??????????????? ????SUBPARTITION BY HASH(TO_DAYS(purchased))
·??????????????? ????(
·??????????????? ????????PARTITION p0 VALUES LESS THAN (1990)
·??????????????? ????????(
·??????????????? ????????????SUBPARTITION s0,
·??????????????? ????????????SUBPARTITION s1
·??????????????? ????????),
·??????????????? ????????PARTITION p1 VALUES LESS THAN (2000)
·??????????????? ????????(
·??????????????? ????????????SUBPARTITION s0,
·??????????????? ????????????SUBPARTITION s1
·??????????????? ????????),
·??????????????? ????????PARTITION p2 VALUES LESS THAN MAXVALUE
·??????????????? ????????(
·??????????????? ????????????SUBPARTITION s0,
·??????????????? ????????????SUBPARTITION s1
·??????????????? ????????)
·??????????????? ????);

子分區(qū)可以用于特別大的表,在多個(gè)磁盤間分配數(shù)據(jù)和索引。假設(shè)有6個(gè)磁盤,分別為/disk0,?/disk1,?/disk2等。現(xiàn)在考慮下面的例子:

CREATE TABLE ts (id INT, purchased DATE)
??? PARTITION BY RANGE(YEAR(purchased))
??? SUBPARTITION BY HASH(TO_DAYS(purchased))
??? (
??????? PARTITION p0 VALUES LESS THAN (1990)
??????? (
??????????? SUBPARTITION s0 
????????????????DATA DIRECTORY = '/disk0/data' 
????????????????INDEX DIRECTORY = '/disk0/idx',
??????????? SUBPARTITION s1 
????????????????DATA DIRECTORY = '/disk1/data' 
????????????????INDEX DIRECTORY = '/disk1/idx'
??????? ),
??????? PARTITION p1 VALUES LESS THAN (2000)
??????? (
??????????? SUBPARTITION s0 
????????????????DATA DIRECTORY = '/disk2/data' 
????????????????INDEX DIRECTORY = '/disk2/idx',
??????????? SUBPARTITION s1 
????????????????DATA DIRECTORY = '/disk3/data' 
????????????????INDEX DIRECTORY = '/disk3/idx'
??????? ),
??????? PARTITION p2 VALUES LESS THAN MAXVALUE
??????? (
??????????? SUBPARTITION s0 
????????????????DATA DIRECTORY = '/disk4/data' 
????????????????INDEX DIRECTORY = '/disk4/idx',
??????????? SUBPARTITION s1 
????????????????DATA DIRECTORY = '/disk5/data' 
????????????????INDEX DIRECTORY = '/disk5/idx'
??????? )
??? );

在這個(gè)例子中,每個(gè)RANGE分區(qū)的數(shù)據(jù)和索引都使用一個(gè)單獨(dú)的磁盤。還可能有許多其他的變化;下面是另外一個(gè)可能的例子:

CREATE TABLE ts (id INT, purchased DATE)
??? PARTITION BY RANGE(YEAR(purchased))
??? SUBPARTITION BY HASH(TO_DAYS(purchased))
??? (
??????? PARTITION p0 VALUES LESS THAN (1990)
??????? (
??????????? SUBPARTITION s0a 
????????????????DATA DIRECTORY = '/disk0' 
????????????????INDEX DIRECTORY = '/disk1',
??????????? SUBPARTITION s0b 
????????????????DATA DIRECTORY = '/disk2' 
????????????????INDEX DIRECTORY = '/disk3'
??????? ),
??????? PARTITION p1 VALUES LESS THAN (2000)
??????? (
??????????? SUBPARTITION s1a 
????????????????DATA DIRECTORY = '/disk4/data' 
????????????????INDEX DIRECTORY = '/disk4/idx',
??????????? SUBPARTITION s1b 
????????????????DATA DIRECTORY = '/disk5/data' 
????????????????INDEX DIRECTORY = '/disk5/idx'
??????? ),
??????? PARTITION p2 VALUES LESS THAN MAXVALUE
??????? (
??????????? SUBPARTITION s2a,
??????????? SUBPARTITION s2b
??????? )
??? );

在這個(gè)例子中,存儲(chǔ)的分配如下:

·?????????購(gòu)買日期在1990年前的記錄占了大量的存儲(chǔ)空間,所以把它分為了四個(gè)部分進(jìn)行存儲(chǔ),組成p0分區(qū)的兩個(gè)子分區(qū)(s0a?和s0b)的數(shù)據(jù)和索引都分別用一個(gè)單獨(dú)的磁盤進(jìn)行存儲(chǔ)。換句話說:

o????????子分區(qū)s0a?的數(shù)據(jù)保存在磁盤/disk0中。

o????????子分區(qū)s0a?的索引保存在磁盤/disk1中。

o????????子分區(qū)s0b?的數(shù)據(jù)保存在磁盤/disk2中。

o????????子分區(qū)s0b?的索引保存在磁盤/disk3中。

·?????????保存購(gòu)買日期從1990年到1999年間的記錄(分區(qū)p1)不需要保存購(gòu)買日期在1990年之前的記錄那么大的存儲(chǔ)空間。這些記錄分在2個(gè)磁盤(/disk4和/disk5)上保存,而不是4個(gè)磁盤:

o????????屬于分區(qū)p1的第一個(gè)子分區(qū)(s1a)的數(shù)據(jù)和索引保存在磁盤/disk4上?— 其中數(shù)據(jù)保存在路徑/disk4/data下,索引保存在/disk4/idx下。

o????????屬于分區(qū)p1的第二個(gè)子分區(qū)(s1b)的數(shù)據(jù)和索引保存在磁盤/disk5上?— 其中數(shù)據(jù)保存在路徑/disk5/data下,索引保存在/disk5/idx下。

·?????????保存購(gòu)買日期從2000年到現(xiàn)在的記錄(分區(qū)p2)不需要前面兩個(gè)RANGE分區(qū)那么大的空間。當(dāng)前,在默認(rèn)的位置能夠足夠保存所有這些記錄。

將來,如果從2000年開始后十年購(gòu)買的數(shù)量已經(jīng)達(dá)到了默認(rèn)的位置不能夠提供足夠的保存空間時(shí),相應(yīng)的記錄(行)可以通過使用“ALTER TABLE ... REORGANIZE PARTITION”語句移動(dòng)到其他的位置。關(guān)于如何實(shí)現(xiàn)的說明,請(qǐng)參見18.3節(jié),“分區(qū)管理”?。

18.2.6.?MySQL分區(qū)處理NULL值的方式

MySQL?中的分區(qū)在禁止空值(NULL)上沒有進(jìn)行處理,無論它是一個(gè)列值還是一個(gè)用戶定義表達(dá)式的值。一般而言,在這種情況下MySQL?把NULL視為0。如果你希望回避這種做法,你應(yīng)該在設(shè)計(jì)表時(shí)不允許空值;最可能的方法是,通過聲明列“NOT NULL”來實(shí)現(xiàn)這一點(diǎn)。

在本節(jié)中,我們提供了一些例子,來說明當(dāng)決定一個(gè)行應(yīng)該保存到哪個(gè)分區(qū)時(shí),MySQL?是如何處理NULL值的。

如果插入一行到按照RANGE或LIST分區(qū)的表,該行用來確定分區(qū)的列值為NULL,分區(qū)將把該NULL值視為0。例如,考慮下面的兩個(gè)表,表的創(chuàng)建和插入記錄如下:

mysql> CREATE TABLE tnlist (
??? ->???? id INT,
??? ->???? name VARCHAR(5)
??? -> )
??? -> PARTITION BY LIST(id) (
??? ->???? PARTITION p1 VALUES IN (0),
??? ->???? PARTITION p2 VALUES IN (1)
??? -> );
Query OK, 0 rows affected (0.09 sec)
?
mysql> CREATE TABLE tnrange (
??? ->???? id INT,
??? ->???? name VARCHAR(5)
??? -> )
??? -> PARTITION BY RANGE(id) (
??? ->???? PARTITION p1 VALUES LESS THAN (1),
??? ->???? PARTITION p2 VALUES LESS THAN MAXVALUE
??? -> );
Query OK, 0 rows affected (0.09 sec)
?
mysql> INSERT INTO tnlist VALUES (NULL, 'bob');
Query OK, 1 row affected (0.00 sec)
?
mysql> INSERT INTO tnrange VALUES (NULL, 'jim');
Query OK, 1 row affected (0.00 sec)
?
mysql> SELECT * FROM tnlist;
+------+------+
| id?? | name |
+------+------+
| NULL | bob? |
+------+------+
1 row in set (0.00 sec)
?
mysql> SELECT * FROM tnrange;
+------+------+
| id?? | name |
+------+------+
| NULL | jim? |
+------+------+
1 row in set (0.00 sec)

在兩個(gè)表中,id列沒有聲明為“NOT NULL”,這意味著它們?cè)试SNull值。可以通過刪除這些分區(qū),然后重新運(yùn)行SELECT?語句,來驗(yàn)證這些行被保存在每個(gè)表的p1分區(qū)中:

mysql> ALTER TABLE tnlist DROP PARTITION p1;
Query OK, 0 rows affected (0.16 sec)
?
mysql> ALTER TABLE tnrange DROP PARTITION p1;
Query OK, 0 rows affected (0.16 sec)
?
mysql> SELECT * FROM tnlist;
Empty set (0.00 sec)
?
mysql> SELECT * FROM tnrange;
Empty set (0.00 sec)

在按HASH和KEY分區(qū)的情況下,任何產(chǎn)生NULL值的表達(dá)式都視同好像它的返回值為0。我們可以通過先創(chuàng)建一個(gè)按HASH分區(qū)的表,然后插入一個(gè)包含有適當(dāng)值的記錄,再檢查對(duì)文件系統(tǒng)的作用,來驗(yàn)證這一點(diǎn)。假定有使用下面的語句在測(cè)試數(shù)據(jù)庫(kù)中創(chuàng)建了一個(gè)表tnhash:

CREATE TABLE tnhash (
??? id INT,
??? name VARCHAR(5)
)
PARTITION BY HASH(id)
PARTITIONS 2;

假如Linux?上的MySQL?的一個(gè)RPM安裝,這個(gè)語句在目錄/var/lib/mysql/test下創(chuàng)建了兩個(gè).MYD文件,這兩個(gè)文件可以在bash?shell中查看,結(jié)果如下:

/var/lib/mysql/test> ls *.MYD -l
-rw-rw----? 1 mysql mysql 0 2005-11-04 18:41 tnhash_p0.MYD
-rw-rw----? 1 mysql mysql 0 2005-11-04 18:41 tnhash_p1.MYD

注意:每個(gè)文件的大小為0字節(jié)。現(xiàn)在在表tnhash?中插入一行id列值為NULL的行,然后驗(yàn)證該行已經(jīng)被插入:

mysql> INSERT INTO tnhash VALUES (NULL, 'sam');
Query OK, 1 row affected (0.00 sec)
?
mysql> SELECT * FROM tnhash;
+------+------+
| id?? | name |
+------+------+
| NULL | sam? |
+------+------+
1 row in set (0.01 sec)

回想一下,對(duì)于任意的整數(shù)N,NULL MOD?N?的值總是等于NULL。這個(gè)結(jié)果在確定正確的分區(qū)方面被認(rèn)為是0。回到系統(tǒng)shell(仍然假定bash用于這個(gè)目的)?,通過再次列出數(shù)據(jù)文件,可以看出值被成功地插入到第一個(gè)分區(qū)(默認(rèn)名稱為p0)中:

var/lib/mysql/test> ls *.MYD -l
-rw-rw----? 1 mysql mysql 20 2005-11-04 18:44 tnhash_p0.MYD
-rw-rw----? 1 mysql mysql? 0 2005-11-04 18:41 tnhash_p1.MYD

可以看出INSERT語句只修改了文件tnhash_p0.MYD,它在磁盤上的尺寸增加了,而沒有影響其他的文件。

假定有下面的一個(gè)表:

CREATE TABLE tndate (
??? id INT,
??? dt DATE
)
PARTITION BY RANGE( YEAR(dt) ) (
??? PARTITION p0 VALUES LESS THAN (1990),
??? PARTITION p1 VALUES LESS THAN (2000),
??? PARTITION p2 VALUES LESS THAN MAXVALUE
);

像其他的MySQL函數(shù)一樣,YEAR(NULL)返回NULL值。一個(gè)dt列值為NULL的行,其分區(qū)表達(dá)式的計(jì)算結(jié)果被視為0,該行被插入到分區(qū)p0中。

18.3.?分區(qū)管理

18.3.1. RANGE和LIST分區(qū)的管理18.3.2. HASH和KEY分區(qū)的管理18.3.3. 分區(qū)維護(hù)18.3.4. 獲取關(guān)于分區(qū)的信息

MySQL 5.1?提供了許多修改分區(qū)表的方式。添加、刪除、重新定義、合并或拆分已經(jīng)存在的分區(qū)是可能的。所有這些操作都可以通過使用ALTER TABLE?命令的分區(qū)擴(kuò)展來實(shí)現(xiàn)(關(guān)于語法的定義,請(qǐng)參見13.1.2節(jié),“ALTER TABLE語法”?)。也有獲得分區(qū)表和分區(qū)信息的方式。在本節(jié),我們討論下面這些主題:

·?????????按RANGE或LIST分區(qū)的表的分區(qū)管理的有關(guān)信息,請(qǐng)參見18.3.1節(jié),“RANGE和LIST分區(qū)的管理”。

·?????????關(guān)于HASH和KEY分區(qū)管理的討論,請(qǐng)參見18.3.2節(jié),“HASH和KEY分區(qū)的管理”。

·?????????MySQL 5.1中提供的、獲得關(guān)于分區(qū)表和分區(qū)信息的機(jī)制的討論,請(qǐng)參見18.3.4節(jié),“獲取關(guān)于分區(qū)的信息”?。

·?????????關(guān)于執(zhí)行分區(qū)維護(hù)操作的討論,請(qǐng)參見18.3.3節(jié),“分區(qū)維護(hù)”。

注釋:在MySQL 5.1中,一個(gè)分區(qū)表的所有分區(qū)都必須有子分區(qū)同樣的名字,并且一旦表已經(jīng)創(chuàng)建,再改變子分區(qū)是不可能的。

要點(diǎn):當(dāng)前,從5.1系列起建立的MySQL?服務(wù)器就把“ALTER TABLE ... PARTITION BY ...”作為有效的語法,但是這個(gè)語句目前還不起作用。我們期望MySQL 5.1達(dá)到生產(chǎn)狀態(tài)時(shí),能夠按照下面的描述實(shí)現(xiàn)該語句的功能。

要改變一個(gè)表的分區(qū)模式,只需要使用帶有一個(gè)“partition_options”子句的ALTER TABLE?的命令。這個(gè)子句和與創(chuàng)建一個(gè)分區(qū)表的CREATE TABLE命令一同使用的子句有相同的語法,并且總是以關(guān)鍵字PARTITION BY?開頭。例如,假設(shè)有一個(gè)使用下面CREATE TABLE語句建立的按照RANGE分區(qū)的表:

CREATE TABLE trb3 (id INT, name VARCHAR(50), purchased DATE)
??? PARTITION BY RANGE(YEAR(purchased))
??? (
??????? PARTITION p0 VALUES LESS THAN (1990),
??????? PARTITION p1 VALUES LESS THAN (1995),
????? ??PARTITION p2 VALUES LESS THAN (2000),
??????? PARTITION p3 VALUES LESS THAN (2005)
??? );

現(xiàn)在,要把這個(gè)表按照使用id列值作為鍵的基礎(chǔ),通過KEY分區(qū)把它重新分成兩個(gè)分區(qū),可以使用下面的語句:

ALTER TABLE trb3 PARTITION BY KEY(id) PARTITIONS 2;

這和先刪除這個(gè)表、然后使用“CREATE TABLE trb3 PARTITION BY KEY(id) PARTITIONS 2;”重新創(chuàng)建這個(gè)表具有同樣的效果。

18.3.1.?RANGE和LIST分區(qū)的管理

關(guān)于如何添加和刪除分區(qū)的處理,RANGE和LIST分區(qū)非常相似。基于這個(gè)原因,我們?cè)诒竟?jié)討論這兩種分區(qū)的管理。關(guān)于HASH和KEY分區(qū)管理的信息,請(qǐng)參見18.3.2節(jié),“HASH和KEY分區(qū)的管理”。刪除一個(gè)RANGE或LIST分區(qū)比增加一個(gè)分區(qū)要更加簡(jiǎn)單易懂,所以我們先討論前者。

從一個(gè)按照RANGE或LIST分區(qū)的表中刪除一個(gè)分區(qū),可以使用帶一個(gè)DROP PARTITION子句的ALTER TABLE命令來實(shí)現(xiàn)。這里有一個(gè)非常基本的例子,假設(shè)已經(jīng)使用下面的CREATE TABLE和INSERT語句創(chuàng)建了一個(gè)按照RANGE分區(qū)的表,并且已經(jīng)插入了10條記錄:

mysql> CREATE TABLE tr (id INT, name VARCHAR(50), purchased DATE)
??? ->???? PARTITION BY RANGE(YEAR(purchased))
??? ->???? (
??? ->???????? PARTITION p0 VALUES LESS THAN (1990),
??? ->???????? PARTITION p1 VALUES LESS THAN (1995),
??? ->???????? PARTITION p2 VALUES LESS THAN (2000),
??? ->???????? PARTITION p3 VALUES LESS THAN (2005)
??? ->???? );
Query OK, 0 rows affected (0.01 sec)
?
mysql> INSERT INTO tr VALUES
??? ->???? (1, 'desk organiser', '2003-10-15'),
??? ->???? (2, 'CD player', '1993-11-05'),
??? ->???? (3, 'TV set', '1996-03-10'),
??? ->???? (4, 'bookcase', '1982-01-10'),
??? ->???? (5, 'exercise bike', '2004-05-09'),
??? ->???? (6, 'sofa', '1987-06-05'),
??? ->???? (7, 'popcorn maker', '2001-11-22'),
??? ->???? (8, 'aquarium', '1992-08-04'),
??? ->???? (9, 'study desk', '1984-09-16'),
??? ->???? (10, 'lava lamp', '1998-12-25');
Query OK, 10 rows affected (0.01 sec)????????????????? 

可以通過使用下面的命令查看那些記錄已經(jīng)插入到了分區(qū)p2中:

mysql> SELECT * FROM tr
??? -> WHERE purchased BETWEEN '1995-01-01' AND '1999-12-31';
+------+-----------+------------+
| id?? | name????? | purchased? |
+------+-----------+------------+
|??? 3 | TV set??? | 1996-03-10 |
|?? 10 | lava lamp | 1998-12-25 |
+------+-----------+------------+
2 rows in set (0.00 sec)

要?jiǎng)h除名字為p2的分區(qū),執(zhí)行下面的命令:

mysql> ALTER TABLE tr DROP PARTITION p2;
Query OK, 0 rows affected (0.03 sec)

記住下面一點(diǎn)非常重要:當(dāng)刪除了一個(gè)分區(qū),也同時(shí)刪除了該分區(qū)中所有的數(shù)據(jù)。可以通過重新運(yùn)行前面的SELECT查詢來驗(yàn)證這一點(diǎn):

mysql> SELECT * FROM tr WHERE purchased 
????-> BETWEEN '1995-01-01' AND '1999-12-31';
Empty set (0.00 sec)

如果希望從所有分區(qū)刪除所有的數(shù)據(jù),但是又保留表的定義和表的分區(qū)模式,使用TRUNCATE TABLE命令。(請(qǐng)參見13.2.9節(jié),“TRUNCATE語法”)。

如果希望改變表的分區(qū)而又不丟失數(shù)據(jù),使用“ALTER TABLE ... REORGANIZE PARTITION”語句。參見下面的內(nèi)容,或者在13.1.2節(jié),“ALTER TABLE語法”?中參考關(guān)于REORGANIZE PARTITION的信息。

如果現(xiàn)在執(zhí)行一個(gè)SHOW CREATE TABLE命令,可以觀察到表的分區(qū)結(jié)構(gòu)是如何被改變的:

mysql> SHOW CREATE TABLE tr\G
*************************** 1. row ***************************
?????? Table: tr
Create Table: CREATE TABLE `tr` (
? `id` int(11) default NULL,
? `name` varchar(50) default NULL,
? `purchased` date default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 
PARTITION BY RANGE (YEAR(purchased)) (
? PARTITION p0 VALUES LESS THAN (1990) ENGINE = MyISAM, 
??PARTITION p1 VALUES LESS THAN (1995) ENGINE = MyISAM, 
??PARTITION p3 VALUES LESS THAN (2005) ENGINE = MyISAM
)
1 row in set (0.01 sec)

如果插入購(gòu)買日期列的值在'1995-01-01'和?'2004-12-31'之間(含)的新行到已經(jīng)修改后的表中時(shí),這些行將被保存在分區(qū)p3中。可以通過下面的方式來驗(yàn)證這一點(diǎn):

mysql> INSERT INTO tr VALUES (11, 'pencil holder', '1995-07-12');
Query OK, 1 row affected (0.00 sec)
?
mysql> SELECT * FROM tr WHERE purchased 
????-> BETWEEN '1995-01-01' AND '2004-12-31';
+------+----------------+------------+
| id?? | name?????????? | purchased? |
+------+----------------+------------+
|?? 11 | pencil holder? | 1995-07-12 |
|??? 1 | desk organiser | 2003-10-15 |
|??? 5 | exercise bike? | 2004-05-09 |
|??? 7 | popcorn maker? | 2001-11-22 |
+------+----------------+------------+
4 rows in set (0.00 sec)
?
mysql> ALTER TABLE tr DROP PARTITION p3;
Query OK, 0 rows affected (0.03 sec)
?
mysql> SELECT * FROM tr WHERE purchased 
????-> BETWEEN '1995-01-01' AND '2004-12-31';
Empty set (0.00 sec)

注意:由“ALTER TABLE ... DROP PARTITION”語句引起的、從表中刪除的行數(shù)并沒有被服務(wù)器報(bào)告出來,就好像通過同等的DELETE查詢操作一樣。

刪除LIST分區(qū)使用和刪除RANGE分區(qū)完全相同的“ALTER TABLE ... DROP PARTITION”語法。但是,在對(duì)其后使用這個(gè)表的影響方面,還是有重大的區(qū)別:在這個(gè)表中,再也不能插入這么一些行,這些行的列值包含在定義已經(jīng)刪除了的分區(qū)的值列表中?(有關(guān)示例,請(qǐng)參見18.2.2節(jié),“LIST分區(qū)”?)。

要增加一個(gè)新的RANGE或LIST分區(qū)到一個(gè)前面已經(jīng)分區(qū)了的表,使用“ALTER TABLE ... ADD PARTITION”語句。對(duì)于使用RANGE分區(qū)的表,可以用這個(gè)語句添加新的區(qū)間到已有分區(qū)的序列的前面或后面。例如,假設(shè)有一個(gè)包含你所在組織的全體成員數(shù)據(jù)的分區(qū)表,該表的定義如下:

CREATE TABLE members (
??? id INT, 
????fname VARCHAR(25),
??? lname VARCHAR(25), 
????dob DATE
)
PARTITION BY RANGE(YEAR(dob)) (
??? PARTITION p0 VALUES LESS THAN (1970),
??? PARTITION p1 VALUES LESS THAN (1980),
??? PARTITION p2 VALUES LESS THAN (1990)
);

進(jìn)一步假設(shè)成員的最小年紀(jì)是16歲。隨著日歷接近2005年年底,你會(huì)認(rèn)識(shí)到不久將要接納1990年(以及以后年份)出生的成員。可以按照下面的方式,修改成員表來容納出生在1990-1999年之間的成員:

ALTER TABLE ADD PARTITION (PARTITION p3 VALUES LESS THAN (2000));

要點(diǎn):對(duì)于通過RANGE分區(qū)的表,只可以使用ADD PARTITION添加新的分區(qū)到分區(qū)列表的高端。設(shè)法通過這種方式在現(xiàn)有分區(qū)的前面或之間增加一個(gè)新的分區(qū),將會(huì)導(dǎo)致下面的一個(gè)錯(cuò)誤:

mysql> ALTER TABLE members ADD PARTITION (PARTITION p3 VALUES LESS THAN (1960));
錯(cuò)誤1463 (HY000): 對(duì)每個(gè)分區(qū),VALUES LESS THAN 值必須嚴(yán)格增長(zhǎng)

采用一個(gè)類似的方式,可以增加新的分區(qū)到已經(jīng)通過LIST分區(qū)的表。例如,假定有如下定義的一個(gè)表:

CREATE TABLE tt (
??? id INT, 
????data INT
)
PARTITION BY LIST(data) (
??? PARTITION p0 VALUES IN (5, 10, 15),
??? PARTITION p1 VALUES IN (6, 12, 18)
);

可以通過下面的方法添加一個(gè)新的分區(qū),用來保存擁有數(shù)據(jù)列值7,14和21的行:

ALTER TABLE tt ADD PARTITION (PARTITION p2 VALUES IN (7, 14, 21));

注意:不能添加這樣一個(gè)新的LIST分區(qū),該分區(qū)包含有已經(jīng)包含在現(xiàn)有分區(qū)值列表中的任意值。如果試圖這樣做,將會(huì)導(dǎo)致錯(cuò)誤:

mysql> ALTER TABLE tt ADD PARTITION (PARTITION np VALUES IN (4, 8, 12));
錯(cuò)誤1465 (HY000): 在LIST分區(qū)中,同一個(gè)常數(shù)的多次定義

因?yàn)閹в袛?shù)據(jù)列值12的任何行都已經(jīng)分配給了分區(qū)p1,所以不能在表tt上再創(chuàng)建一個(gè)其值列表包括12的新分區(qū)。為了實(shí)現(xiàn)這一點(diǎn),可以先刪除分區(qū)p1,添加分區(qū)np,然后使用修正后的定義添加一個(gè)新的分區(qū)p1。但是,正如我們前面討論過的,這將導(dǎo)致保存在分區(qū)p1中的所有數(shù)據(jù)丟失——而這往往并不是你所真正想要做的。另外一種解決方法可能是,建立一個(gè)帶有新分區(qū)的表的副本,然后使用“CREATE TABLE ... SELECT ...”把數(shù)據(jù)拷貝到該新表中,然后刪除舊表,重新命名新表,但是,當(dāng)需要處理大量的數(shù)據(jù)時(shí),這可能是非常耗時(shí)的。在需要高可用性的場(chǎng)合,這也可能是不可行的。

幸運(yùn)地是,MySQL?的分區(qū)實(shí)現(xiàn)提供了在不丟失數(shù)據(jù)的條件下重新定義分區(qū)的方式。讓我們首先看兩個(gè)涉及到RANGE分區(qū)的簡(jiǎn)單例子。回想一下現(xiàn)在定義如下的成員表:

mysql> SHOW CREATE TABLE members\G
*************************** 1. row ***************************
?????? Table: members
Create Table: CREATE TABLE `members` (
? `id` int(11) default NULL,
? `fname` varchar(25) default NULL,
? `lname` varchar(25) default NULL,
? `dob` date default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 
PARTITION BY RANGE (YEAR(dob)) (
? PARTITION p0 VALUES LESS THAN (1970) ENGINE = MyISAM, 
??PARTITION p1 VALUES LESS THAN (1980) ENGINE = MyISAM, 
??PARTITION p2 VALUES LESS THAN (1990) ENGINE = MyISAM.
? PARTITION p3 VALUES LESS THAN (2000) ENGINE = MyISAM
)

假定想要把表示出生在1960年前成員的所有行移入到一個(gè)分開的分區(qū)中。正如我們前面看到的,不能通過使用“ALTER TABLE ... ADD PARTITION”來實(shí)現(xiàn)這一點(diǎn)。但是,要實(shí)現(xiàn)這一點(diǎn),可以使用ALTER TABLE上的另外一個(gè)與分區(qū)有關(guān)的擴(kuò)展,具體實(shí)現(xiàn)如下:

ALTER TABLE members REORGANIZE PARTITION p0 INTO (
??? PARTITION s0 VALUES LESS THAN (1960),
??? PARTITION s1 VALUES LESS THAN (1970)
);

實(shí)際上,這個(gè)命令把分區(qū)p0分成了兩個(gè)新的分區(qū)s0和s1。同時(shí),它還根據(jù)包含在兩個(gè)“PARTITION ... VALUES ...”子句中的規(guī)則,把保存在分區(qū)p0中的數(shù)據(jù)移入到兩個(gè)新的分區(qū)中,所以分區(qū)s0中只包含YEAR(dob)小于1960的那些行,s1中包含那些YEAR(dob)大于或等于1960但是小于1970的行。

一個(gè)REORGANIZE PARTITION語句也可以用來合并相鄰的分區(qū)。可以使用如下的語句恢復(fù)成員表到它以前的分區(qū):

ALTER TABLE members REORGANIZE PARTITION s0,s1 INTO (
??? PARTITION p0 VALUES LESS THAN (1970)
);

使用“REORGANIZE PARTITION”拆分或合并分區(qū),沒有數(shù)據(jù)丟失。在執(zhí)行上面的語句中,MySQL?把保存在分區(qū)s0和s1中的所有數(shù)據(jù)都移到分區(qū)p0中。

“REORGANIZE PARTITION”的基本語法是:

ALTER TABLE tbl_name REORGANIZE PARTITION partition_list INTO (partition_definitions);

其中,tbl_name?是分區(qū)表的名稱,partition_list?是通過逗號(hào)分開的、一個(gè)或多個(gè)將要被改變的現(xiàn)有分區(qū)的列表。partition_definitions?是一個(gè)是通過逗號(hào)分開的、新分區(qū)定義的列表,它遵循與用在“CREATE TABLE”中的partition_definitions?相同的規(guī)則?(請(qǐng)參見13.1.5節(jié),“CREATE TABLE語法”)。應(yīng)當(dāng)注意到,在把多少個(gè)分區(qū)合并到一個(gè)分區(qū)或把一個(gè)分區(qū)拆分成多少個(gè)分區(qū)方面,沒有限制。例如,可以重新組織成員表的四個(gè)分區(qū)成兩個(gè)分區(qū),具體實(shí)現(xiàn)如下:

ALTER TABLE members REORGANIZE PARTITION p0,p1,p2,p3 INTO (
??? PARTITION m0 VALUES LESS THAN (1980),
??? PARTITION m1 VALUES LESS THAN (2000)
);

同樣,對(duì)于按LIST分區(qū)的表,也可以使用REORGANIZE PARTITION。讓我們回到那個(gè)問題,即增加一個(gè)新的分區(qū)到已經(jīng)按照LIST分區(qū)的表tt中,但是因?yàn)樵撔路謪^(qū)有一個(gè)值已經(jīng)存在于現(xiàn)有分區(qū)的值列表中,添加新的分區(qū)失敗。我們可以通過先添加只包含非沖突值的分區(qū),然后重新組織該新分區(qū)和現(xiàn)有的那個(gè)分區(qū),以便保存在現(xiàn)有的那個(gè)分區(qū)中的值現(xiàn)在移到了新的分區(qū)中,來處理這個(gè)問題:

ALTER TABLE tt ADD PARTITION (PARTITION np VALUES IN (4, 8));
ALTER TABLE tt REORGANIZE PARTITION p1,np INTO (
??? PARTITION p1 VALUES IN (6, 18),
??? PARTITION np VALUES in (4, 8, 12)
);

當(dāng)使用“ALTER TABLE ... REORGANIZE PARTITION”來對(duì)已經(jīng)按照RANGE和LIST分區(qū)表進(jìn)行重新分區(qū)時(shí),下面是一些要記住的關(guān)鍵點(diǎn):

·?????????用來確定新分區(qū)模式的PARTITION子句使用與用在CREATE TABLE中確定分區(qū)模式的PARTITION子句相同的規(guī)則。

最重要的是,應(yīng)該記住:新分區(qū)模式不能有任何重疊的區(qū)間(適用于按照RANGE分區(qū)的表)或值集合(適用于重新組織按照LIST分區(qū)的表)。

·?????????partition_definitions?列表中分區(qū)的合集應(yīng)該與在partition_list?中命名分區(qū)的合集占有相同的區(qū)間或值集合。

例如,在本節(jié)中用作例子的成員表中,分區(qū)p1和p2總共覆蓋了1980到1999的這些年。因此,對(duì)這兩個(gè)分區(qū)的重新組織都應(yīng)該覆蓋相同范圍的年份。

·?????????對(duì)于按照RANGE分區(qū)的表,只能重新組織相鄰的分區(qū);不能跳過RANGE分區(qū)。

例如,不能使用以“ALTER TABLE members REORGANIZE PARTITION p0,p2 INTO ...”開頭的語句,來重新組織本節(jié)中用作例子的成員表。因?yàn)?#xff0c;p0覆蓋了1970年以前的年份,而p2覆蓋了從1990到1999(包括1990和1999)之間的年份,因而這兩個(gè)分區(qū)不是相鄰的分區(qū)。

·?????????不能使用REORGANIZE PARTITION來改變表的分區(qū)類型;也就是說,例如,不能把RANGE分區(qū)變?yōu)镠ASH分區(qū),反之亦然。也不能使用該命令來改變分區(qū)表達(dá)式或列。如果想在不刪除和重建表的條件下實(shí)現(xiàn)這兩個(gè)任務(wù),可以使用“ALTER TABLE ... PARTITION BY ....”,例如:

·??????????????? ALTER TABLE members 
·??????????????? ????PARTITION BY HASH(YEAR(dob))
·??????????????? ????PARTITIONS 8;

注釋:在MySQL 5.1發(fā)布前的版本中,“ALTER TABLE ... PARTITION BY ...”還沒有實(shí)現(xiàn)。作為替代,要么使用先刪除表,然后使用想要的分區(qū)重建表,或者——如果需要保留已經(jīng)存儲(chǔ)在表中的數(shù)據(jù)——可以使用“CREATE TABLE ... SELECT ...”來創(chuàng)建新的表,然后從舊表中把數(shù)據(jù)拷貝到新表中,再刪除舊表,如有必要,最后重新命名新表。

18.3.2.?HASH和KEY分區(qū)的管理

在改變分區(qū)設(shè)置方面,按照HASH分區(qū)或KEY分區(qū)的表彼此非常相似,但是它們又與按照RANGE或LIST分區(qū)的表在很多方面有差別。所以,本節(jié)只討論按照HASH或KEY分區(qū)表的修改。關(guān)于添加和刪除按照RANGE或LIST進(jìn)行分區(qū)的表的分區(qū)的討論,參見18.3.1節(jié),“RANGE和LIST分區(qū)的管理”。

不能使用與從按照RANGE或LIST分區(qū)的表中刪除分區(qū)相同的方式,來從HASH或KEY分區(qū)的表中刪除分區(qū)。但是,可以使用“ALTER TABLE ... COALESCE PARTITION”命令來合并HASH或KEY分區(qū)。例如,假定有一個(gè)包含顧客信息數(shù)據(jù)的表,它被分成了12個(gè)分區(qū)。該顧客表的定義如下:

CREATE TABLE clients (
??? id INT,
??? fname VARCHAR(30),
? ??lname VARCHAR(30),
??? signed DATE
)
PARTITION BY HASH( MONTH(signed) )
PARTITIONS 12;

要減少分區(qū)的數(shù)量從12到6,執(zhí)行下面的ALTER TABLE命令:

mysql> ALTER TABLE clients COALESCE PARTITION 6
Query OK, 0 rows affected (0.02 sec)

對(duì)于按照HASH,KEY,LINEAR HASH,或LINEAR KEY分區(qū)的表,?COALESCE能起到同樣的作用。下面是一個(gè)類似于前面例子的另外一個(gè)例子,它們的區(qū)別只是在于表是按照LINEAR KEY?進(jìn)行分區(qū):

mysql> CREATE TABLE clients_lk (
??? ->???? id INT,
??? ->???? fname VARCHAR(30),
??? ->???? lname VARCHAR(30),
??? ->???? signed DATE
??? -> )
??? -> PARTITION BY LINEAR KEY(signed)
??? -> PARTITIONS 12
Query OK, 0 rows affected (0.03 sec)
?
mysql> ALTER TABLE clients_lk COALESCE PARTITION 6
Query OK, 0 rows affected (0.06 sec)
Records: 0? Duplicates: 0? Warnings: 0

COALESCE不能用來增加分區(qū)的數(shù)量,如果你嘗試這么做,結(jié)果會(huì)出現(xiàn)類似于下面的錯(cuò)誤:

mysql> ALTER TABLE clients COALESCE PARTITION 18;
錯(cuò)誤1478 (HY000): 不能移動(dòng)所有分區(qū),使用DROP TABLE代替

要增加顧客表的分區(qū)數(shù)量從12到18,使用“ALTER TABLE ... ADD PARTITION”,具體如下:

ALTER TABLE clients ADD PARTITION PARTITIONS 18;

注釋:“ALTER TABLE ... REORGANIZE PARTITION”不能用于按照HASH或HASH分區(qū)的表。

18.3.3.?分區(qū)維護(hù)

注釋:實(shí)際上,本節(jié)討論的命令還沒有在MySQL 5.1中實(shí)現(xiàn), 在這里提出的目的,是為了在5.1版投產(chǎn)前的開發(fā)周期期間,引出來自用戶測(cè)試該軟件的反饋意見。(換句話說,就是“請(qǐng)不要反饋這樣的缺陷,說這些命令不起作用”)。隨著MySQL5.1版開發(fā)的繼續(xù),這些信息很有可能發(fā)生變化。隨著分區(qū)功能的實(shí)現(xiàn)和提高,我們將更新本節(jié)的內(nèi)容。

MySQL 5.1中可以執(zhí)行許多分區(qū)維護(hù)的任務(wù)。對(duì)于分區(qū)表,MySQL不支持命令CHECK TABLE,OPTIMIZE TABLE,ANALYZE TABLE,或REPAIR TABLE。作為替代,可以使用ALTER TABLE?的許多擴(kuò)展來在一個(gè)或多個(gè)分區(qū)上直接地執(zhí)行這些操作,如下面列出的那樣:

·?????????重建分區(qū):?這和先刪除保存在分區(qū)中的所有記錄,然后重新插入它們,具有同樣的效果。它可用于整理分區(qū)碎片。

示例:

ALTER TABLE t1 REBUILD PARTITION (p0, p1);

·?????????優(yōu)化分區(qū):如果從分區(qū)中刪除了大量的行,或者對(duì)一個(gè)帶有可變長(zhǎng)度的行(也就是說,有VARCHAR,BLOB,或TEXT類型的列)作了許多修改,可以使用“ALTER TABLE ... OPTIMIZE PARTITION”來收回沒有使用的空間,并整理分區(qū)數(shù)據(jù)文件的碎片。

示例:

ALTER TABLE t1 OPTIMIZE PARTITION (p0, p1);

在一個(gè)給定的分區(qū)表上使用“OPTIMIZE PARTITION”等同于在那個(gè)分區(qū)上運(yùn)行CHECK PARTITION,ANALYZE PARTITION,和REPAIR PARTITION。

·?????????分析分區(qū):讀取并保存分區(qū)的鍵分布。

示例:

ALTER TABLE t1 ANALYZE PARTITION (p3);

·?????????修補(bǔ)分區(qū):?修補(bǔ)被破壞的分區(qū)。

示例:

ALTER TABLE t1 REPAIR PARTITION (p0,p1);

·?????????檢查分區(qū):?可以使用幾乎與對(duì)非分區(qū)表使用CHECK TABLE?相同的方式檢查分區(qū)。

示例:

ALTER TABLE trb3 CHECK PARTITION (p1);

這個(gè)命令可以告訴你表t1的分區(qū)p1中的數(shù)據(jù)或索引是否已經(jīng)被破壞。如果發(fā)生了這種情況,使用“ALTER TABLE ... REPAIR PARTITION”來修補(bǔ)該分區(qū)。

還可以使用mysqlcheckmyisamchk?應(yīng)用程序,在對(duì)表進(jìn)行分區(qū)時(shí)所產(chǎn)生的、單獨(dú)的MYI文件上進(jìn)行操作,來完成這些任務(wù)。請(qǐng)參見8.7節(jié),“mysqlcheck:表維護(hù)和維修程序”。(在pre-alpha編碼中,這個(gè)功能已經(jīng)可以使用)。

18.3.4.?獲取關(guān)于分區(qū)的信息

本節(jié)討論獲取關(guān)于現(xiàn)有分區(qū)的信息。這個(gè)功能仍然處于計(jì)劃階段,所以現(xiàn)階段在這里描述的,實(shí)際上是我們想要在MySQL 5.1中實(shí)現(xiàn)的一個(gè)概觀。

如在本章中別處討論的一樣,在SHOW CREATE TABLE的輸出中包含了用于創(chuàng)建分區(qū)表的PARTITION BY子句。例如:

mysql> SHOW CREATE TABLE trb3\G
*************************** 1. row ***************************
??? ???Table: trb3
Create Table: CREATE TABLE `trb3` (
? `id` int(11) default NULL,
? `name` varchar(50) default NULL,
? `purchased` date default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 
PARTITION BY RANGE (YEAR(purchased)) (
? PARTITION p0 VALUES LESS THAN (1990) ENGINE = MyISAM, 
??PARTITION p1 VALUES LESS THAN (1995) ENGINE = MyISAM, 
??PARTITION p2 VALUES LESS THAN (2000) ENGINE = MyISAM, 
??PARTITION p3 VALUES LESS THAN (2005) ENGINE = MyISAM
)
1 row in set (0.00 sec)

注釋:當(dāng)前,對(duì)于按HASH或KEY分區(qū)的表,PARTITIONS子句并不顯示。?(Bug #14327)

SHOW TABLE STATUS用于分區(qū)表,它的輸出與用于非分區(qū)表的輸出相同,除了引擎(Engine)列總是包含'PARTITION'值。(關(guān)于這個(gè)命令的更多信息,參見13.5.4.18節(jié),“SHOW TABLE STATUS語法”)。要獲取單個(gè)分區(qū)的狀態(tài)信息,我們計(jì)劃實(shí)現(xiàn)一個(gè)SHOW PARTITION STATUS命令(請(qǐng)參見下面)。

計(jì)劃用于分區(qū)表的、兩個(gè)附加的SHOW命令是:

·?????????SHOW PARTITIONS

這個(gè)命令預(yù)期其功能類似于SHOW TABLES和SHOW DATABASES,除了該命令將列出的是分區(qū)而不是表或數(shù)據(jù)庫(kù)。這個(gè)命令的輸出可能包含單個(gè)稱為Partitions_in_tbl_name?的列,其中tbl_name?是分區(qū)表的名字。對(duì)于SHOW TABLES命令而言,如果一旦選擇了一個(gè)數(shù)據(jù)庫(kù),隨后該數(shù)據(jù)庫(kù)將作為SHOW TABLES命令的默認(rèn)數(shù)據(jù)庫(kù)。但是由于SHOW PARTITIONS命令不可能用這樣的方式來“選擇”一個(gè)表,它很可能需要使用FROM子句,以便MySQL知道要顯示的是哪個(gè)表的分區(qū)信息。

·?????????SHOW PARTITION STATUS

這個(gè)命令將提供關(guān)于一個(gè)或多個(gè)分區(qū)的詳細(xì)狀態(tài)信息。它的輸出很可能包含有與SHOW TABLE STATUS?的輸出相同或類似的列,此外,還包括顯示用于分區(qū)的數(shù)據(jù)和索引路徑的附加列。這個(gè)命令可能支持LIKE和FROM子句,這樣使得通過名字獲得關(guān)于一個(gè)給定分區(qū)的信息,或者獲得關(guān)于屬于指定表或數(shù)據(jù)庫(kù)的分區(qū)的信息,成為可能。

擴(kuò)展INFORMATION_SCHEMA?數(shù)據(jù)庫(kù)的計(jì)劃也在進(jìn)行中,以便提供關(guān)于分區(qū)表和分區(qū)的信息。這個(gè)計(jì)劃當(dāng)前還處一個(gè)在非常早的階段;隨著補(bǔ)充的信息變得可用,以及任何新的、與分區(qū)有關(guān)的INFORMATION_SCHEMA擴(kuò)展得以實(shí)現(xiàn),我們將更新手冊(cè)相關(guān)部分的內(nèi)容。

轉(zhuǎn)載于:https://www.cnblogs.com/blogsme/p/3510815.html

總結(jié)

以上是生活随笔為你收集整理的第18章:MYSQL分区的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

欧美老妇与禽交 | 黑森林福利视频导航 | 精品午夜福利在线观看 | 午夜精品久久久内射近拍高清 | 国产精品久久久久久久9999 | 亚洲自偷自拍另类第1页 | 精品无码国产自产拍在线观看蜜 | 熟妇人妻激情偷爽文 | 乱码av麻豆丝袜熟女系列 | 久久精品国产亚洲精品 | 亚洲综合久久一区二区 | 乱人伦中文视频在线观看 | 真人与拘做受免费视频 | 亚洲小说图区综合在线 | 丰满少妇弄高潮了www | 欧美日韩一区二区免费视频 | 人妻无码久久精品人妻 | 国产精品18久久久久久麻辣 | 在线播放亚洲第一字幕 | а√资源新版在线天堂 | 成人精品天堂一区二区三区 | 成人精品一区二区三区中文字幕 | 欧美日本免费一区二区三区 | 自拍偷自拍亚洲精品10p | 麻豆av传媒蜜桃天美传媒 | 岛国片人妻三上悠亚 | 久久久久成人片免费观看蜜芽 | 一本久久伊人热热精品中文字幕 | 少妇邻居内射在线 | 精品国偷自产在线视频 | 亚洲精品成人av在线 | 久久99精品久久久久久 | 精品国产一区二区三区四区在线看 | 秋霞成人午夜鲁丝一区二区三区 | 久久久久久av无码免费看大片 | 欧洲熟妇色 欧美 | 精品欧洲av无码一区二区三区 | 中文字幕无码视频专区 | 日本xxxx色视频在线观看免费 | 六月丁香婷婷色狠狠久久 | 精品国产乱码久久久久乱码 | 一个人免费观看的www视频 | 在线播放无码字幕亚洲 | 婷婷色婷婷开心五月四房播播 | 亚洲精品国产第一综合99久久 | 久久精品国产99久久6动漫 | 日本爽爽爽爽爽爽在线观看免 | 欧美人与物videos另类 | 久久精品人人做人人综合试看 | 亚洲精品国产a久久久久久 | 国产午夜精品一区二区三区嫩草 | 999久久久国产精品消防器材 | av小次郎收藏 | 老熟妇仑乱视频一区二区 | 图片区 小说区 区 亚洲五月 | 日产精品高潮呻吟av久久 | 性啪啪chinese东北女人 | 5858s亚洲色大成网站www | 初尝人妻少妇中文字幕 | 四虎国产精品免费久久 | 国产av一区二区精品久久凹凸 | 麻豆国产人妻欲求不满谁演的 | 国产在线无码精品电影网 | 国产成人人人97超碰超爽8 | 三上悠亚人妻中文字幕在线 | 亚洲中文字幕在线无码一区二区 | 中文精品久久久久人妻不卡 | 99精品久久毛片a片 | 国产亚洲tv在线观看 | 无码国产色欲xxxxx视频 | 黄网在线观看免费网站 | 色综合久久久无码网中文 | 日韩在线不卡免费视频一区 | 久久亚洲日韩精品一区二区三区 | 日本丰满熟妇videos | 国产亚洲精品精品国产亚洲综合 | 精品 日韩 国产 欧美 视频 | 2020久久香蕉国产线看观看 | www国产亚洲精品久久网站 | 中文字幕无码日韩专区 | 丰满少妇熟乱xxxxx视频 | 四虎4hu永久免费 | 国产精品无码一区二区桃花视频 | 97夜夜澡人人爽人人喊中国片 | 国产小呦泬泬99精品 | 欧美老人巨大xxxx做受 | 中国女人内谢69xxxx | 黑森林福利视频导航 | 国产熟妇另类久久久久 | 18无码粉嫩小泬无套在线观看 | 亚洲欧美日韩成人高清在线一区 | 亚洲伊人久久精品影院 | 久久久亚洲欧洲日产国码αv | 在线欧美精品一区二区三区 | 日本在线高清不卡免费播放 | 蜜桃无码一区二区三区 | 精品无码国产一区二区三区av | 国产口爆吞精在线视频 | 一本久久伊人热热精品中文字幕 | 疯狂三人交性欧美 | 日本又色又爽又黄的a片18禁 | 黑人巨大精品欧美一区二区 | 国产麻豆精品精东影业av网站 | 亚洲乱码日产精品bd | 国产欧美精品一区二区三区 | 国产一区二区三区精品视频 | 在线看片无码永久免费视频 | 久久人人97超碰a片精品 | 久久久av男人的天堂 | 日日干夜夜干 | 日韩精品成人一区二区三区 | 精品厕所偷拍各类美女tp嘘嘘 | 久久久精品欧美一区二区免费 | 中文字幕无码日韩欧毛 | 精品一二三区久久aaa片 | 国产偷抇久久精品a片69 | 国产两女互慰高潮视频在线观看 | 精品国产麻豆免费人成网站 | 最新版天堂资源中文官网 | 亚洲色在线无码国产精品不卡 | 99国产欧美久久久精品 | 亚洲精品国偷拍自产在线麻豆 | 亚洲精品久久久久久久久久久 | 国产猛烈高潮尖叫视频免费 | 亚洲色成人中文字幕网站 | 色婷婷综合激情综在线播放 | 在线视频网站www色 | 精品久久久无码人妻字幂 | 免费观看的无遮挡av | 中文无码成人免费视频在线观看 | 撕开奶罩揉吮奶头视频 | 在线精品国产一区二区三区 | 亚洲中文字幕无码中文字在线 | 东京无码熟妇人妻av在线网址 | 亚洲无人区一区二区三区 | 成在人线av无码免费 | 亚洲一区av无码专区在线观看 | 最新版天堂资源中文官网 | √天堂资源地址中文在线 | 特级做a爰片毛片免费69 | 国产片av国语在线观看 | 成人毛片一区二区 | 精品日本一区二区三区在线观看 | 97无码免费人妻超级碰碰夜夜 | 粗大的内捧猛烈进出视频 | 国产亚洲欧美日韩亚洲中文色 | 无码av最新清无码专区吞精 | 亚洲色www成人永久网址 | 亚洲午夜福利在线观看 | 日韩精品久久久肉伦网站 | 国内精品久久毛片一区二区 | 人人超人人超碰超国产 | 一本色道婷婷久久欧美 | 久久久www成人免费毛片 | 377p欧洲日本亚洲大胆 | 激情五月综合色婷婷一区二区 | 女人色极品影院 | 国产偷抇久久精品a片69 | 久久无码人妻影院 | 欧美 日韩 人妻 高清 中文 | 亚欧洲精品在线视频免费观看 | 国产精品无码久久av | 国产一精品一av一免费 | 日产精品高潮呻吟av久久 | 正在播放东北夫妻内射 | 老司机亚洲精品影院无码 | 少妇性l交大片欧洲热妇乱xxx | 欧美人与善在线com | 九九在线中文字幕无码 | 国产精品高潮呻吟av久久 | 撕开奶罩揉吮奶头视频 | 日韩亚洲欧美中文高清在线 | 国产国产精品人在线视 | 国产成人一区二区三区别 | 清纯唯美经典一区二区 | 亚洲人成影院在线无码按摩店 | 在线观看免费人成视频 | 伊人久久大香线焦av综合影院 | 无码午夜成人1000部免费视频 | 久久精品人妻少妇一区二区三区 | 欧美 日韩 人妻 高清 中文 | 无人区乱码一区二区三区 | 亚洲成av人影院在线观看 | 少妇久久久久久人妻无码 | 乱人伦中文视频在线观看 | 中国大陆精品视频xxxx | 高清不卡一区二区三区 | v一区无码内射国产 | 亚洲日韩中文字幕在线播放 | 无套内谢老熟女 | 精品亚洲韩国一区二区三区 | 无码av岛国片在线播放 | 波多野结衣高清一区二区三区 | 亚洲熟悉妇女xxx妇女av | 无码人妻精品一区二区三区下载 | 奇米影视888欧美在线观看 | 亚洲欧美日韩国产精品一区二区 | 在线精品亚洲一区二区 | 亚洲精品一区二区三区在线 | 亚洲日本va午夜在线电影 | 亚洲精品中文字幕久久久久 | 日日天干夜夜狠狠爱 | 天天爽夜夜爽夜夜爽 | 久久久久久久人妻无码中文字幕爆 | 精品午夜福利在线观看 | 久久99精品国产麻豆蜜芽 | 无码精品人妻一区二区三区av | 爽爽影院免费观看 | 国产精品手机免费 | 欧洲vodafone精品性 | 日韩av激情在线观看 | 国产成人无码一二三区视频 | 国产成人精品三级麻豆 | 无码av岛国片在线播放 | 国产一区二区三区四区五区加勒比 | 67194成是人免费无码 | 丝袜 中出 制服 人妻 美腿 | 在线视频网站www色 | 曰韩无码二三区中文字幕 | 伦伦影院午夜理论片 | 日本大乳高潮视频在线观看 | 曰韩少妇内射免费播放 | 天天躁夜夜躁狠狠是什么心态 | 国产绳艺sm调教室论坛 | 樱花草在线播放免费中文 | 狠狠cao日日穞夜夜穞av | 人人妻人人澡人人爽人人精品浪潮 | 亚洲国产欧美日韩精品一区二区三区 | 亚洲综合伊人久久大杳蕉 | 国产人妻人伦精品1国产丝袜 | 欧美性猛交内射兽交老熟妇 | 在线欧美精品一区二区三区 | 久久亚洲日韩精品一区二区三区 | 国产成人亚洲综合无码 | 国产精品无码一区二区桃花视频 | 一个人免费观看的www视频 | √8天堂资源地址中文在线 | 国产精品理论片在线观看 | 国产内射爽爽大片视频社区在线 | 亚洲人成网站在线播放942 | 精品aⅴ一区二区三区 | 99久久婷婷国产综合精品青草免费 | 国产激情精品一区二区三区 | 亚洲 a v无 码免 费 成 人 a v | 中文字幕人妻无码一区二区三区 | 一个人免费观看的www视频 | 久久国产自偷自偷免费一区调 | 少妇被黑人到高潮喷出白浆 | 黑人巨大精品欧美一区二区 | 国产精品国产三级国产专播 | 伊人久久大香线蕉亚洲 | 蜜桃视频韩日免费播放 | 国产成人av免费观看 | 日韩人妻无码中文字幕视频 | 成人精品一区二区三区中文字幕 | 天堂久久天堂av色综合 | 国产亚洲精品精品国产亚洲综合 | 国产成人综合在线女婷五月99播放 | 国产99久久精品一区二区 | 精品国产一区二区三区四区在线看 | 久久精品一区二区三区四区 | 日日躁夜夜躁狠狠躁 | 精品人妻中文字幕有码在线 | aⅴ在线视频男人的天堂 | 人妻夜夜爽天天爽三区 | 国产69精品久久久久app下载 | 狠狠色噜噜狠狠狠狠7777米奇 | 无码人妻黑人中文字幕 | 亚洲人成网站在线播放942 | 国内综合精品午夜久久资源 | 内射爽无广熟女亚洲 | 无码一区二区三区在线观看 | 97se亚洲精品一区 | 国产午夜无码精品免费看 | 成 人 免费观看网站 | 色婷婷久久一区二区三区麻豆 | 精品一区二区三区无码免费视频 | 日日摸夜夜摸狠狠摸婷婷 | 日韩精品无码一本二本三本色 | 人人妻人人藻人人爽欧美一区 | 无码人妻精品一区二区三区不卡 | 国色天香社区在线视频 | 日本精品久久久久中文字幕 | 免费观看黄网站 | 丰满妇女强制高潮18xxxx | 成人精品天堂一区二区三区 | 中文毛片无遮挡高清免费 | 中文字幕 亚洲精品 第1页 | 少妇人妻大乳在线视频 | 久久人人爽人人爽人人片ⅴ | 日本熟妇大屁股人妻 | 男女爱爱好爽视频免费看 | 精品久久久久香蕉网 | 色 综合 欧美 亚洲 国产 | 成 人影片 免费观看 | 亚洲区欧美区综合区自拍区 | 亚洲午夜无码久久 | 少妇性荡欲午夜性开放视频剧场 | 欧美怡红院免费全部视频 | 成人无码精品一区二区三区 | 久9re热视频这里只有精品 | 亚洲自偷自偷在线制服 | 精品国产一区av天美传媒 | 国语自产偷拍精品视频偷 | 亚洲成色www久久网站 | 亚洲s码欧洲m码国产av | 无码国内精品人妻少妇 | 300部国产真实乱 | 狂野欧美激情性xxxx | 老熟妇乱子伦牲交视频 | 亚洲综合无码一区二区三区 | 最近的中文字幕在线看视频 | av人摸人人人澡人人超碰下载 | 大乳丰满人妻中文字幕日本 | 亚洲男女内射在线播放 | 娇妻被黑人粗大高潮白浆 | 欧美第一黄网免费网站 | 久久亚洲中文字幕精品一区 | 性欧美videos高清精品 | 国产激情艳情在线看视频 | 成人精品天堂一区二区三区 | 狂野欧美激情性xxxx | 日本熟妇大屁股人妻 | 亚洲乱码中文字幕在线 | 日日摸天天摸爽爽狠狠97 | 亚洲日韩精品欧美一区二区 | 扒开双腿吃奶呻吟做受视频 | 欧美精品免费观看二区 | 亚洲精品综合一区二区三区在线 | 精品无码av一区二区三区 | 久激情内射婷内射蜜桃人妖 | 性色欲网站人妻丰满中文久久不卡 | 亚洲一区二区三区香蕉 | 又色又爽又黄的美女裸体网站 | 黑人巨大精品欧美黑寡妇 | 国产欧美熟妇另类久久久 | 丰满少妇高潮惨叫视频 | 亚洲 高清 成人 动漫 | 国产av一区二区三区最新精品 | 无码精品国产va在线观看dvd | 无码av中文字幕免费放 | 麻花豆传媒剧国产免费mv在线 | 兔费看少妇性l交大片免费 | 女人和拘做爰正片视频 | 人妻少妇精品无码专区动漫 | 中文字幕乱码中文乱码51精品 | av在线亚洲欧洲日产一区二区 | 中文字幕av无码一区二区三区电影 | 日产精品高潮呻吟av久久 | 亚洲一区二区观看播放 | 国产精品高潮呻吟av久久4虎 | 欧美老熟妇乱xxxxx | 高潮毛片无遮挡高清免费 | 色情久久久av熟女人妻网站 | 1000部啪啪未满十八勿入下载 | 图片区 小说区 区 亚洲五月 | 麻豆蜜桃av蜜臀av色欲av | 国内精品久久久久久中文字幕 | 国产无套内射久久久国产 | 日本xxxx色视频在线观看免费 | 人妻少妇精品无码专区二区 | 亚洲va欧美va天堂v国产综合 | 亚洲七七久久桃花影院 | 午夜时刻免费入口 | 色偷偷av老熟女 久久精品人妻少妇一区二区三区 | 国产xxx69麻豆国语对白 | 特黄特色大片免费播放器图片 | 露脸叫床粗话东北少妇 | 午夜精品久久久内射近拍高清 | 色诱久久久久综合网ywww | 亚洲欧洲无卡二区视頻 | 中文字幕无码av激情不卡 | 日本乱偷人妻中文字幕 | 国产艳妇av在线观看果冻传媒 | 粗大的内捧猛烈进出视频 | 中文字幕乱码中文乱码51精品 | 国产精品人妻一区二区三区四 | 日本爽爽爽爽爽爽在线观看免 | 亚洲va欧美va天堂v国产综合 | 日韩精品a片一区二区三区妖精 | 麻豆精产国品 | 久久综合香蕉国产蜜臀av | 国产色xx群视频射精 | 伊人久久婷婷五月综合97色 | 久久久久久a亚洲欧洲av冫 | 97人妻精品一区二区三区 | 欧洲极品少妇 | 国产特级毛片aaaaaa高潮流水 | 丰满人妻被黑人猛烈进入 | 色综合久久久久综合一本到桃花网 | 国产另类ts人妖一区二区 | 久久久国产精品无码免费专区 | 性欧美疯狂xxxxbbbb | 国产特级毛片aaaaaa高潮流水 | 欧美喷潮久久久xxxxx | 国产精品美女久久久网av | aⅴ亚洲 日韩 色 图网站 播放 | 日日橹狠狠爱欧美视频 | 亚洲一区二区三区 | a国产一区二区免费入口 | 18黄暴禁片在线观看 | 天堂无码人妻精品一区二区三区 | 国产成人综合在线女婷五月99播放 | 内射巨臀欧美在线视频 | 精品久久久久久人妻无码中文字幕 | 国内精品人妻无码久久久影院 | 天天拍夜夜添久久精品 | 亚洲成av人片在线观看无码不卡 | 成在人线av无码免观看麻豆 | 丝袜人妻一区二区三区 | 国产熟女一区二区三区四区五区 | 大肉大捧一进一出视频出来呀 | 成人无码视频在线观看网站 | 日本肉体xxxx裸交 | 国产成人综合在线女婷五月99播放 | 日本护士xxxxhd少妇 | 2020久久超碰国产精品最新 | 正在播放老肥熟妇露脸 | 国产 精品 自在自线 | 国内老熟妇对白xxxxhd | 中文字幕中文有码在线 | 好男人www社区 | 亚洲狠狠色丁香婷婷综合 | 日产精品高潮呻吟av久久 | 少妇一晚三次一区二区三区 | 国产成人无码午夜视频在线观看 | 日本熟妇大屁股人妻 | 国语自产偷拍精品视频偷 | 国产凸凹视频一区二区 | av无码久久久久不卡免费网站 | 国产在线精品一区二区高清不卡 | 久久精品国产一区二区三区肥胖 | 一个人看的www免费视频在线观看 | 亚洲熟妇色xxxxx亚洲 | 55夜色66夜色国产精品视频 | 国产成人亚洲综合无码 | 99精品无人区乱码1区2区3区 | 国产在线无码精品电影网 | 国产色视频一区二区三区 | 久久久久成人精品免费播放动漫 | 国产精品18久久久久久麻辣 | 国产人成高清在线视频99最全资源 | 未满成年国产在线观看 | 亚洲精品国偷拍自产在线麻豆 | 国产精品人人爽人人做我的可爱 | 麻豆av传媒蜜桃天美传媒 | 欧美丰满少妇xxxx性 | 秋霞特色aa大片 | 久久人妻内射无码一区三区 | 日本va欧美va欧美va精品 | 精品欧美一区二区三区久久久 | 亚洲中文字幕乱码av波多ji | 久久99精品久久久久久 | 纯爱无遮挡h肉动漫在线播放 | 色综合视频一区二区三区 | 搡女人真爽免费视频大全 | 免费人成网站视频在线观看 | 久久久精品成人免费观看 | 欧美高清在线精品一区 | 少妇无套内谢久久久久 | 久久亚洲中文字幕无码 | 国产精品-区区久久久狼 | 欧美三级a做爰在线观看 | 日本护士毛茸茸高潮 | 国产午夜无码视频在线观看 | 西西人体www44rt大胆高清 | 在线精品亚洲一区二区 | 久久精品丝袜高跟鞋 | 色一情一乱一伦 | 色综合视频一区二区三区 | 18精品久久久无码午夜福利 | 国产精品毛多多水多 | 国产乱人伦偷精品视频 | 好屌草这里只有精品 | 色噜噜亚洲男人的天堂 | 高潮毛片无遮挡高清免费视频 | 97久久精品无码一区二区 | 在线成人www免费观看视频 | 激情五月综合色婷婷一区二区 | 久久99热只有频精品8 | 中文字幕无码av波多野吉衣 | 中文字幕无线码免费人妻 | 久久五月精品中文字幕 | 亚洲自偷自拍另类第1页 | 3d动漫精品啪啪一区二区中 | 久久精品国产99精品亚洲 | аⅴ资源天堂资源库在线 | 人妻aⅴ无码一区二区三区 | 亚洲精品国产精品乱码视色 | 国产高潮视频在线观看 | 麻豆人妻少妇精品无码专区 | 欧美日本精品一区二区三区 | 日韩av无码一区二区三区不卡 | 欧美人与禽猛交狂配 | 久久国语露脸国产精品电影 | 欧美黑人乱大交 | 东京一本一道一二三区 | 亚洲成av人片在线观看无码不卡 | 学生妹亚洲一区二区 | 麻豆国产丝袜白领秘书在线观看 | 亚洲中文字幕va福利 | 日韩无套无码精品 | 久久精品国产日本波多野结衣 | 亚洲无人区午夜福利码高清完整版 | 午夜男女很黄的视频 | 精品国产一区av天美传媒 | 狂野欧美性猛xxxx乱大交 | 鲁大师影院在线观看 | 无码一区二区三区在线 | 中文无码伦av中文字幕 | 国产偷国产偷精品高清尤物 | 欧美乱妇无乱码大黄a片 | 国产两女互慰高潮视频在线观看 | 97精品国产97久久久久久免费 | 无码人妻出轨黑人中文字幕 | 日本乱偷人妻中文字幕 | 久久综合网欧美色妞网 | 美女扒开屁股让男人桶 | 婷婷色婷婷开心五月四房播播 | 精品一区二区三区无码免费视频 | 图片小说视频一区二区 | 东京热一精品无码av | 久久综合九色综合欧美狠狠 | a在线观看免费网站大全 | 国产美女精品一区二区三区 | 久久久久成人片免费观看蜜芽 | 成人亚洲精品久久久久软件 | 熟妇人妻无码xxx视频 | 中文字幕色婷婷在线视频 | 久久久无码中文字幕久... | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 美女扒开屁股让男人桶 | 国产无遮挡吃胸膜奶免费看 | 国产成人精品久久亚洲高清不卡 | 国产国语老龄妇女a片 | 我要看www免费看插插视频 | 国产精品理论片在线观看 | 高清不卡一区二区三区 | 精品欧美一区二区三区久久久 | 亚洲欧美精品伊人久久 | 波多野结衣 黑人 | 亚洲国产一区二区三区在线观看 | 亚洲国精产品一二二线 | 18精品久久久无码午夜福利 | 免费国产成人高清在线观看网站 | 人妻互换免费中文字幕 | 久久精品中文闷骚内射 | 欧美变态另类xxxx | 中文精品无码中文字幕无码专区 | 无码av最新清无码专区吞精 | 嫩b人妻精品一区二区三区 | 亚洲人成影院在线观看 | 久久国产精品_国产精品 | 奇米影视888欧美在线观看 | 成人无码精品1区2区3区免费看 | 亚洲精品一区二区三区大桥未久 | 男女下面进入的视频免费午夜 | 啦啦啦www在线观看免费视频 | 国产精品久久精品三级 | 51国偷自产一区二区三区 | 美女毛片一区二区三区四区 | 亚洲熟悉妇女xxx妇女av | 成人女人看片免费视频放人 | 大色综合色综合网站 | 无码帝国www无码专区色综合 | 欧美日韩一区二区综合 | 亚洲一区二区三区国产精华液 | av香港经典三级级 在线 | 精品无码成人片一区二区98 | 理论片87福利理论电影 | 蜜桃av抽搐高潮一区二区 | 人妻熟女一区 | 自拍偷自拍亚洲精品被多人伦好爽 | 日韩欧美中文字幕公布 | 欧美 日韩 人妻 高清 中文 | 亚洲人成影院在线无码按摩店 | 国产成人精品无码播放 | 久久亚洲中文字幕无码 | 精品一区二区三区无码免费视频 | 日本精品久久久久中文字幕 | 熟妇女人妻丰满少妇中文字幕 | 中文字幕人妻无码一夲道 | 亚洲春色在线视频 | 精品国产乱码久久久久乱码 | 色综合久久久久综合一本到桃花网 | 一本色道久久综合亚洲精品不卡 | 图片区 小说区 区 亚洲五月 | 人人妻人人澡人人爽人人精品浪潮 | 国产精品国产自线拍免费软件 | 精品国产乱码久久久久乱码 | 国产两女互慰高潮视频在线观看 | 国产精品亚洲一区二区三区喷水 | 国产精品无码永久免费888 | 色妞www精品免费视频 | 久久99精品久久久久婷婷 | 在教室伦流澡到高潮hnp视频 | 女人和拘做爰正片视频 | 四虎4hu永久免费 | 妺妺窝人体色www婷婷 | 国产一区二区三区精品视频 | 国产精品毛片一区二区 | 鲁大师影院在线观看 | 亚洲aⅴ无码成人网站国产app | 黑人玩弄人妻中文在线 | 少妇一晚三次一区二区三区 | 国产真实伦对白全集 | 特黄特色大片免费播放器图片 | 成人性做爰aaa片免费看不忠 | 亚洲成在人网站无码天堂 | 久久久久人妻一区精品色欧美 | 成熟女人特级毛片www免费 | 台湾无码一区二区 | 国产激情无码一区二区app | 精品日本一区二区三区在线观看 | 久久天天躁狠狠躁夜夜免费观看 | 亚洲人成无码网www | 亚洲精品午夜无码电影网 | 日本熟妇浓毛 | 国产精品无码一区二区三区不卡 | 国产xxx69麻豆国语对白 | 亚洲成av人在线观看网址 | 性史性农村dvd毛片 | 国产艳妇av在线观看果冻传媒 | 欧美亚洲国产一区二区三区 | 最新国产乱人伦偷精品免费网站 | 久久久久久久人妻无码中文字幕爆 | 人妻互换免费中文字幕 | 国产成人精品优优av | 欧美精品在线观看 | 少妇性俱乐部纵欲狂欢电影 | 亚洲日韩av一区二区三区中文 | 蜜臀aⅴ国产精品久久久国产老师 | 亚洲一区二区三区偷拍女厕 | 国産精品久久久久久久 | 中文字幕乱码人妻无码久久 | 人妻少妇被猛烈进入中文字幕 | 乌克兰少妇xxxx做受 | 国产精品无码久久av | 中文字幕无码免费久久9一区9 | 丝袜 中出 制服 人妻 美腿 | 亚洲精品久久久久avwww潮水 | 国产成人无码av一区二区 | 国产精品a成v人在线播放 | 激情五月综合色婷婷一区二区 | 国产精品久久久久久亚洲毛片 | 国产人妻人伦精品 | 亚洲乱亚洲乱妇50p | 国产无套内射久久久国产 | 精品一区二区三区无码免费视频 | 国产午夜无码精品免费看 | 妺妺窝人体色www在线小说 | 欧美日韩综合一区二区三区 | 亚洲の无码国产の无码步美 | 国产97在线 | 亚洲 | 亚洲男女内射在线播放 | 日韩精品久久久肉伦网站 | av人摸人人人澡人人超碰下载 | 日本肉体xxxx裸交 | 在线播放无码字幕亚洲 | 亚洲成av人片在线观看无码不卡 | 成在人线av无码免观看麻豆 | 日韩亚洲欧美中文高清在线 | 丝袜 中出 制服 人妻 美腿 | 亚洲午夜久久久影院 | 97久久精品无码一区二区 | 青春草在线视频免费观看 | 99国产欧美久久久精品 | 国产精品无码一区二区桃花视频 | 国产真人无遮挡作爱免费视频 | 免费无码av一区二区 | 中文字幕乱码人妻二区三区 | 日日噜噜噜噜夜夜爽亚洲精品 | 日韩精品无码一区二区中文字幕 | 久久久久国色av免费观看性色 | 特大黑人娇小亚洲女 | 欧美精品免费观看二区 | 久久久国产精品无码免费专区 | 福利一区二区三区视频在线观看 | 国产精品毛片一区二区 | 精品国产av色一区二区深夜久久 | 国产成人精品优优av | 久久久亚洲欧洲日产国码αv | 狠狠色噜噜狠狠狠7777奇米 | 性色欲网站人妻丰满中文久久不卡 | 国产色精品久久人妻 | 啦啦啦www在线观看免费视频 | 我要看www免费看插插视频 | 兔费看少妇性l交大片免费 | 日本一卡二卡不卡视频查询 | 日韩成人一区二区三区在线观看 | 欧美日韩一区二区免费视频 | 青青青爽视频在线观看 | 少妇高潮喷潮久久久影院 | 国产无套粉嫩白浆在线 | 中文字幕人妻丝袜二区 | 内射老妇bbwx0c0ck | 国产熟女一区二区三区四区五区 | 日本一区二区更新不卡 | 中国女人内谢69xxxx | 偷窥村妇洗澡毛毛多 | 成人免费无码大片a毛片 | 亚洲综合无码久久精品综合 | 狠狠cao日日穞夜夜穞av | 亚洲精品一区三区三区在线观看 | 亚洲中文字幕久久无码 | 极品嫩模高潮叫床 | 欧美熟妇另类久久久久久不卡 | 国产疯狂伦交大片 | 中文字幕精品av一区二区五区 | 成人免费视频视频在线观看 免费 | 精品偷自拍另类在线观看 | 秋霞特色aa大片 | 色妞www精品免费视频 | 日本一本二本三区免费 | 欧洲极品少妇 | 荫蒂被男人添的好舒服爽免费视频 | 精品无码成人片一区二区98 | 久久久久99精品国产片 | 国产黑色丝袜在线播放 | 午夜性刺激在线视频免费 | 久久综合香蕉国产蜜臀av | 东京无码熟妇人妻av在线网址 | 成人精品视频一区二区三区尤物 | 无码国产色欲xxxxx视频 | 色综合久久久无码中文字幕 | 亚洲aⅴ无码成人网站国产app | 永久免费精品精品永久-夜色 | 97无码免费人妻超级碰碰夜夜 | 免费乱码人妻系列无码专区 | 精品国产福利一区二区 | 在线 国产 欧美 亚洲 天堂 | 亚洲国产成人av在线观看 | 欧美丰满老熟妇xxxxx性 | 色综合久久久久综合一本到桃花网 | 无码播放一区二区三区 | 久久精品99久久香蕉国产色戒 | 国产片av国语在线观看 | 色综合久久网 | 欧美肥老太牲交大战 | 久久人妻内射无码一区三区 | 亚洲国产精品无码一区二区三区 | 国产熟女一区二区三区四区五区 | 女高中生第一次破苞av | 黄网在线观看免费网站 | 少妇性l交大片 | 国产三级久久久精品麻豆三级 | 国产乱人无码伦av在线a | 伊人色综合久久天天小片 | 成人精品天堂一区二区三区 | 精品人人妻人人澡人人爽人人 | 色欲久久久天天天综合网精品 | 在教室伦流澡到高潮hnp视频 | 狠狠亚洲超碰狼人久久 | 377p欧洲日本亚洲大胆 | 久久久精品456亚洲影院 | 国产麻豆精品精东影业av网站 | 97无码免费人妻超级碰碰夜夜 | 99久久人妻精品免费二区 | 亚洲国产欧美在线成人 | 国产精品无码mv在线观看 | 亚洲国产精品无码一区二区三区 | www国产亚洲精品久久网站 | 99久久精品国产一区二区蜜芽 | 人妻人人添人妻人人爱 | 俺去俺来也www色官网 | 又粗又大又硬毛片免费看 | 日韩精品无码一区二区中文字幕 | 亚欧洲精品在线视频免费观看 | 精品国产麻豆免费人成网站 | 欧美第一黄网免费网站 | 日日干夜夜干 | 久久熟妇人妻午夜寂寞影院 | 精品 日韩 国产 欧美 视频 | 欧洲熟妇精品视频 | 在线 国产 欧美 亚洲 天堂 | 国产熟妇高潮叫床视频播放 | 亚洲人成无码网www | 久久国产自偷自偷免费一区调 | 国产激情综合五月久久 | 亚洲精品一区国产 | 老熟女重囗味hdxx69 | 久久久av男人的天堂 | 2019nv天堂香蕉在线观看 | 久久综合给合久久狠狠狠97色 | 国产激情无码一区二区app | 国产精品国产三级国产专播 | 午夜精品一区二区三区在线观看 | 国产亚洲精品久久久久久国模美 | 午夜丰满少妇性开放视频 | 亚洲国产精品无码一区二区三区 | 在线 国产 欧美 亚洲 天堂 | 麻豆蜜桃av蜜臀av色欲av | 无码乱肉视频免费大全合集 | 99国产精品白浆在线观看免费 | 对白脏话肉麻粗话av | 国产精品美女久久久网av | 任你躁国产自任一区二区三区 | 两性色午夜免费视频 | 久久久国产精品无码免费专区 | 99精品视频在线观看免费 | 日韩 欧美 动漫 国产 制服 | 小sao货水好多真紧h无码视频 | 久在线观看福利视频 | 国产精品永久免费视频 | 一个人看的视频www在线 | 欧美丰满熟妇xxxx性ppx人交 | 亲嘴扒胸摸屁股激烈网站 | 欧美激情一区二区三区成人 | 亚洲狠狠婷婷综合久久 | 成人无码精品一区二区三区 | 狂野欧美性猛xxxx乱大交 | 好男人www社区 | 夫妻免费无码v看片 | 99精品国产综合久久久久五月天 | 国产乡下妇女做爰 | 日日摸夜夜摸狠狠摸婷婷 | 九九在线中文字幕无码 | 国产精品资源一区二区 | 欧美喷潮久久久xxxxx | 成年美女黄网站色大免费全看 | 狠狠噜狠狠狠狠丁香五月 | 国产xxx69麻豆国语对白 | 国产高清av在线播放 | 国产精品自产拍在线观看 | 亚洲 欧美 激情 小说 另类 | 国产人妻精品一区二区三区 | 国产精品久久久久影院嫩草 | 国产午夜无码视频在线观看 | 色综合天天综合狠狠爱 | 永久免费观看美女裸体的网站 | 亚洲色www成人永久网址 | 国产女主播喷水视频在线观看 | 国产两女互慰高潮视频在线观看 | 亚洲精品一区二区三区婷婷月 | 国产精品嫩草久久久久 | 亲嘴扒胸摸屁股激烈网站 | 少女韩国电视剧在线观看完整 | 97久久国产亚洲精品超碰热 | 无码人妻丰满熟妇区毛片18 | 国产做国产爱免费视频 | 日韩欧美中文字幕公布 | 无码人妻精品一区二区三区下载 | 黑人巨大精品欧美一区二区 | 日本精品少妇一区二区三区 | 国产av一区二区精品久久凹凸 | 国产在线一区二区三区四区五区 | 一二三四社区在线中文视频 | 在线观看国产一区二区三区 | 亚洲综合无码久久精品综合 | 性开放的女人aaa片 | 午夜福利试看120秒体验区 | 久久久久亚洲精品中文字幕 | 蜜桃视频插满18在线观看 | 久久久久久久久888 | 一区二区三区乱码在线 | 欧洲 | 国精产品一品二品国精品69xx | 中文字幕av无码一区二区三区电影 | 久久综合久久自在自线精品自 | 青春草在线视频免费观看 | 老熟女重囗味hdxx69 | 国产成人亚洲综合无码 | 免费看男女做好爽好硬视频 | 一本精品99久久精品77 | 成人片黄网站色大片免费观看 | 伊人久久大香线蕉午夜 | 国产黑色丝袜在线播放 | 国产精品a成v人在线播放 | 无码精品国产va在线观看dvd | 婷婷六月久久综合丁香 | 久久人人爽人人爽人人片av高清 | 久久视频在线观看精品 | 亚洲精品一区三区三区在线观看 | 成 人 网 站国产免费观看 | 黑人粗大猛烈进出高潮视频 | 呦交小u女精品视频 | 国产精品久久久久久亚洲毛片 | 最新国产麻豆aⅴ精品无码 | 久久天天躁夜夜躁狠狠 | 久久精品国产99久久6动漫 | 免费无码午夜福利片69 | 国产精品久久久久7777 | 人人妻在人人 | 精品国产一区二区三区四区 | 亚洲一区二区三区偷拍女厕 | 无码av免费一区二区三区试看 | 人妻无码久久精品人妻 | 日韩精品无码免费一区二区三区 | 色婷婷久久一区二区三区麻豆 | 国产一精品一av一免费 | 伊人久久婷婷五月综合97色 | 国产综合色产在线精品 | 少妇人妻偷人精品无码视频 | 奇米影视7777久久精品 | 爆乳一区二区三区无码 | 一本一道久久综合久久 | 亚洲精品综合一区二区三区在线 | 久久国语露脸国产精品电影 | 国产无套内射久久久国产 | 久久精品人人做人人综合 | 欧洲vodafone精品性 | 国产一区二区三区日韩精品 | 亚洲成av人片在线观看无码不卡 | 动漫av一区二区在线观看 | 精品 日韩 国产 欧美 视频 | 欧美精品在线观看 | 国产精品久久久一区二区三区 | 99国产欧美久久久精品 | 国内精品一区二区三区不卡 | 日韩少妇内射免费播放 | 天堂一区人妻无码 | 久久久久久av无码免费看大片 | 日本www一道久久久免费榴莲 | 97久久国产亚洲精品超碰热 | 国产做国产爱免费视频 | 国产无套内射久久久国产 | 青春草在线视频免费观看 | www成人国产高清内射 | 亚洲国产精品无码一区二区三区 | 亚洲国产综合无码一区 | 秋霞特色aa大片 | 内射老妇bbwx0c0ck | 国产在线精品一区二区三区直播 | 亚洲成a人片在线观看日本 | 日日鲁鲁鲁夜夜爽爽狠狠 | 99精品视频在线观看免费 | 77777熟女视频在线观看 а天堂中文在线官网 | 亚洲国产av美女网站 | 成人欧美一区二区三区黑人免费 | 人人超人人超碰超国产 | 97久久精品无码一区二区 | 高潮毛片无遮挡高清免费 | www国产精品内射老师 | 国内精品久久久久久中文字幕 | 在线欧美精品一区二区三区 | 丝袜美腿亚洲一区二区 | 欧美人与物videos另类 | 影音先锋中文字幕无码 | 国产乱子伦视频在线播放 | 国产情侣作爱视频免费观看 | 美女极度色诱视频国产 | 无码一区二区三区在线观看 | 日韩 欧美 动漫 国产 制服 | 国产av剧情md精品麻豆 | 国产美女精品一区二区三区 | 1000部啪啪未满十八勿入下载 | 国产热a欧美热a在线视频 | 色综合久久网 | 中文无码伦av中文字幕 | 无遮无挡爽爽免费视频 | 成人欧美一区二区三区黑人免费 | 亚洲s码欧洲m码国产av | 国产成人综合色在线观看网站 | 亚洲日本在线电影 | 午夜嘿嘿嘿影院 | 色婷婷综合激情综在线播放 | 国产乱人伦av在线无码 | 7777奇米四色成人眼影 | 亚洲国产精品毛片av不卡在线 | 131美女爱做视频 | 免费无码一区二区三区蜜桃大 | 97精品国产97久久久久久免费 | 中文字幕无线码 | 国产精品人人爽人人做我的可爱 | 国产成人无码专区 | 人人妻人人澡人人爽精品欧美 | 亚洲精品一区二区三区在线 | 色综合久久久久综合一本到桃花网 | 久久www免费人成人片 | 无码纯肉视频在线观看 | 十八禁真人啪啪免费网站 | 日本乱人伦片中文三区 | 中文字幕av伊人av无码av | 又粗又大又硬毛片免费看 | 中文字幕无码av激情不卡 | 亚洲毛片av日韩av无码 | 少女韩国电视剧在线观看完整 | 日本饥渴人妻欲求不满 | 午夜无码人妻av大片色欲 | 丰满少妇高潮惨叫视频 | 东京无码熟妇人妻av在线网址 | 亚洲精品欧美二区三区中文字幕 | 国产人妻久久精品二区三区老狼 | 国产亚洲精品精品国产亚洲综合 | 欧美国产日产一区二区 | 欧美人与物videos另类 | 久久久www成人免费毛片 | 国产三级久久久精品麻豆三级 | 亚洲成av人影院在线观看 | 乱码午夜-极国产极内射 | 久久天天躁狠狠躁夜夜免费观看 | 久久综合狠狠综合久久综合88 | 精品国精品国产自在久国产87 | 未满小14洗澡无码视频网站 | 亚洲人成人无码网www国产 | 亚欧洲精品在线视频免费观看 | 未满成年国产在线观看 | 国产精品久久久久9999小说 | 领导边摸边吃奶边做爽在线观看 | 日本乱人伦片中文三区 | 两性色午夜视频免费播放 | 中文字幕av无码一区二区三区电影 | 久久久久久久久888 | 亚洲乱码日产精品bd | 中文字幕av伊人av无码av | 青青青爽视频在线观看 | 久久无码中文字幕免费影院蜜桃 | 国内精品人妻无码久久久影院 | 中文字幕无码免费久久9一区9 | 国产精品无码一区二区三区不卡 | 日本高清一区免费中文视频 | 色一情一乱一伦一区二区三欧美 | 台湾无码一区二区 | 久久99精品久久久久久动态图 | 久久99精品久久久久久 | 正在播放老肥熟妇露脸 | 亚洲娇小与黑人巨大交 | 成人试看120秒体验区 | 天堂无码人妻精品一区二区三区 | 亚洲七七久久桃花影院 | 亚洲熟妇色xxxxx欧美老妇y | 亚洲熟妇自偷自拍另类 | 精品国产aⅴ无码一区二区 | 999久久久国产精品消防器材 | 色情久久久av熟女人妻网站 | 亚洲综合无码一区二区三区 | 国产av人人夜夜澡人人爽麻豆 | 人妻体内射精一区二区三四 | 久久99精品国产麻豆 | 青草视频在线播放 | 奇米影视7777久久精品人人爽 | 成人三级无码视频在线观看 | 思思久久99热只有频精品66 | 中文字幕av无码一区二区三区电影 | 久久国产劲爆∧v内射 | 欧美人与禽zoz0性伦交 | 亚洲一区二区三区偷拍女厕 | 日日碰狠狠躁久久躁蜜桃 | 一个人免费观看的www视频 | 国产在线精品一区二区三区直播 | 国产成人一区二区三区别 | 国产女主播喷水视频在线观看 | 女高中生第一次破苞av | 日本欧美一区二区三区乱码 | 国内揄拍国内精品少妇国语 | 欧美放荡的少妇 | 久久亚洲a片com人成 | 噜噜噜亚洲色成人网站 | 精品国产一区av天美传媒 | 鲁大师影院在线观看 | 亚洲成a人片在线观看无码3d | 东京无码熟妇人妻av在线网址 | 小泽玛莉亚一区二区视频在线 | 精品无码国产一区二区三区av | 内射欧美老妇wbb | 国产精品国产自线拍免费软件 | 国产一区二区三区四区五区加勒比 | 精品亚洲成av人在线观看 | 无码免费一区二区三区 | 亚洲一区二区三区 | 亚洲人成无码网www | 任你躁国产自任一区二区三区 | 精品久久久久久人妻无码中文字幕 | v一区无码内射国产 | 亚洲国产精品无码久久久久高潮 | 大色综合色综合网站 | 国产麻豆精品精东影业av网站 | 麻豆md0077饥渴少妇 | 国产麻豆精品一区二区三区v视界 | 无码人妻久久一区二区三区不卡 | 日本成熟视频免费视频 | 国产精品久久国产精品99 | 无码av中文字幕免费放 | 亚洲人交乣女bbw | 中国女人内谢69xxxxxa片 | 亚洲精品鲁一鲁一区二区三区 | 亚洲阿v天堂在线 | 性生交大片免费看l | 天天摸天天碰天天添 | 97色伦图片97综合影院 | 国产精品久久久久久亚洲影视内衣 | 国产香蕉97碰碰久久人人 | 国产9 9在线 | 中文 | 人妻少妇被猛烈进入中文字幕 | 一个人免费观看的www视频 | 亚洲精品美女久久久久久久 | 亚洲国产一区二区三区在线观看 | 日本熟妇大屁股人妻 | 午夜嘿嘿嘿影院 | 国产亚洲视频中文字幕97精品 | 亚洲精品欧美二区三区中文字幕 | 欧美喷潮久久久xxxxx | 亚洲国产精品一区二区美利坚 | 精品偷自拍另类在线观看 | 久久久久久av无码免费看大片 | 亚洲精品国产a久久久久久 | 亚洲色www成人永久网址 | 亚洲男人av天堂午夜在 | 国产精品a成v人在线播放 | 国产做国产爱免费视频 | 国产精品久久福利网站 | 亚洲国精产品一二二线 | 东北女人啪啪对白 | 久久精品99久久香蕉国产色戒 | 国产精品.xx视频.xxtv | 麻豆成人精品国产免费 | 老熟女重囗味hdxx69 | 亚洲综合无码一区二区三区 | 人人妻人人藻人人爽欧美一区 | 亚洲码国产精品高潮在线 | 日本高清一区免费中文视频 | 精品国产成人一区二区三区 | 国产精品鲁鲁鲁 | 性色欲情网站iwww九文堂 | 色欲综合久久中文字幕网 | 草草网站影院白丝内射 | 国产69精品久久久久app下载 | 久久亚洲日韩精品一区二区三区 | 成人三级无码视频在线观看 | 六十路熟妇乱子伦 | 亚洲国产日韩a在线播放 | 国产一区二区三区日韩精品 | 国产精品久久国产精品99 | 色综合久久久久综合一本到桃花网 | 国产成人无码av片在线观看不卡 | 日韩精品乱码av一区二区 | а天堂中文在线官网 | 亚洲男女内射在线播放 | 亚洲 激情 小说 另类 欧美 | 色综合久久久久综合一本到桃花网 | 妺妺窝人体色www在线小说 | 日日碰狠狠丁香久燥 | 日韩人妻无码一区二区三区久久99 | 亚洲中文字幕在线无码一区二区 | 丰满肥臀大屁股熟妇激情视频 | 欧美freesex黑人又粗又大 | 午夜福利试看120秒体验区 | 少妇厨房愉情理9仑片视频 | 亚洲欧美色中文字幕在线 | 无码国产乱人伦偷精品视频 | 久久久久人妻一区精品色欧美 | 激情内射亚州一区二区三区爱妻 | 国产熟女一区二区三区四区五区 | ass日本丰满熟妇pics | 色情久久久av熟女人妻网站 | 精品久久久无码人妻字幂 | 少妇人妻偷人精品无码视频 | 欧美性色19p | 在线观看国产一区二区三区 | 国产区女主播在线观看 | 国产成人av免费观看 | 内射老妇bbwx0c0ck | 98国产精品综合一区二区三区 | 国色天香社区在线视频 | 成人欧美一区二区三区黑人免费 | 国产超级va在线观看视频 | 久久久久久亚洲精品a片成人 | 国产特级毛片aaaaaa高潮流水 | 国产欧美亚洲精品a | 99久久99久久免费精品蜜桃 | 日韩精品乱码av一区二区 | 国产精品资源一区二区 | 国产午夜亚洲精品不卡 | www国产亚洲精品久久网站 | 小sao货水好多真紧h无码视频 | 欧美野外疯狂做受xxxx高潮 | 精品国产aⅴ无码一区二区 | 亚洲日韩乱码中文无码蜜桃臀网站 | 夜精品a片一区二区三区无码白浆 | 青青草原综合久久大伊人精品 | 天堂无码人妻精品一区二区三区 | 任你躁在线精品免费 | 青青久在线视频免费观看 | 国产精品办公室沙发 | 内射老妇bbwx0c0ck | 牲欲强的熟妇农村老妇女视频 | 中文字幕人妻丝袜二区 | 夜夜躁日日躁狠狠久久av | 蜜桃臀无码内射一区二区三区 | 97久久精品无码一区二区 | 亚洲经典千人经典日产 | 精品aⅴ一区二区三区 | 亚洲人成网站色7799 | 激情内射日本一区二区三区 | 亚洲a无码综合a国产av中文 | 久久久久久久人妻无码中文字幕爆 | 国产精品人人爽人人做我的可爱 | 免费国产成人高清在线观看网站 | 亚洲色在线无码国产精品不卡 | 成人无码精品一区二区三区 | 又紧又大又爽精品一区二区 | 少妇高潮一区二区三区99 | 国产性生大片免费观看性 | 色情久久久av熟女人妻网站 | 青青青手机频在线观看 | 国产性生大片免费观看性 | 在线亚洲高清揄拍自拍一品区 | 亚洲日韩一区二区 | 色一情一乱一伦一视频免费看 | 亚洲人成人无码网www国产 | 亚洲性无码av中文字幕 | 无码人妻出轨黑人中文字幕 | 亚洲成色在线综合网站 | 高清不卡一区二区三区 | 人人妻人人澡人人爽欧美一区九九 | 亚洲gv猛男gv无码男同 | 好男人社区资源 | 中文字幕乱码亚洲无线三区 | 无码成人精品区在线观看 | 亚洲成在人网站无码天堂 | 成年女人永久免费看片 | 亚洲精品国产品国语在线观看 | 特大黑人娇小亚洲女 | 熟妇激情内射com | 亚洲精品欧美二区三区中文字幕 | 性欧美牲交在线视频 | 国产人妻人伦精品 | 麻豆国产人妻欲求不满 | 国产在线aaa片一区二区99 | 麻豆果冻传媒2021精品传媒一区下载 | 精品久久8x国产免费观看 | 国产精品亚洲lv粉色 | 亚洲码国产精品高潮在线 | 亚洲人成无码网www | 午夜精品一区二区三区的区别 | 无码一区二区三区在线 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 欧美 丝袜 自拍 制服 另类 | 国产激情无码一区二区 | 欧美人与禽猛交狂配 | 极品嫩模高潮叫床 | 麻豆精品国产精华精华液好用吗 | 色综合久久久久综合一本到桃花网 | 亚洲日本一区二区三区在线 | 中文字幕无码免费久久99 | 国产疯狂伦交大片 | 鲁鲁鲁爽爽爽在线视频观看 | 久久精品国产一区二区三区肥胖 | 丰满护士巨好爽好大乳 | 亚洲精品www久久久 | 久久久中文字幕日本无吗 | 国产成人无码av一区二区 | 成 人 免费观看网站 | 亚洲精品国产a久久久久久 | 亚洲自偷精品视频自拍 | 中文久久乱码一区二区 | 亚洲国产精品无码一区二区三区 | 麻豆果冻传媒2021精品传媒一区下载 | 久久久精品人妻久久影视 | 中文字幕无码av激情不卡 | 无码吃奶揉捏奶头高潮视频 | 成年美女黄网站色大免费全看 | 熟女少妇在线视频播放 | 男人的天堂av网站 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 国内精品久久毛片一区二区 | 久久精品国产99久久6动漫 | 日产精品99久久久久久 | 51国偷自产一区二区三区 | 久久天天躁狠狠躁夜夜免费观看 | 蜜桃视频韩日免费播放 | 白嫩日本少妇做爰 | 久久久久成人精品免费播放动漫 | 亚洲欧美日韩国产精品一区二区 | 人人妻人人澡人人爽欧美精品 | 精品成在人线av无码免费看 | 狠狠色丁香久久婷婷综合五月 | 水蜜桃亚洲一二三四在线 | 欧美人与禽猛交狂配 | 亚洲七七久久桃花影院 | 中文字幕人妻丝袜二区 | 欧美乱妇无乱码大黄a片 | 99久久人妻精品免费一区 | 在线成人www免费观看视频 | 桃花色综合影院 | 国产一区二区三区四区五区加勒比 | 久久熟妇人妻午夜寂寞影院 | 一区二区三区高清视频一 | 色综合久久久久综合一本到桃花网 | 日韩人妻少妇一区二区三区 | 日本丰满护士爆乳xxxx | 久久久成人毛片无码 | 久久人妻内射无码一区三区 | 精品夜夜澡人妻无码av蜜桃 | 免费视频欧美无人区码 | 一二三四在线观看免费视频 | 国内少妇偷人精品视频 | 免费人成在线视频无码 | 亚洲毛片av日韩av无码 | 国产亚洲精品久久久ai换 | 久久人人97超碰a片精品 | 一本久久伊人热热精品中文字幕 | 久久综合给合久久狠狠狠97色 | 国产va免费精品观看 | 国产精品资源一区二区 | 亚洲а∨天堂久久精品2021 | 鲁大师影院在线观看 | 欧美freesex黑人又粗又大 | 精品无码成人片一区二区98 | 性欧美videos高清精品 | 亚洲成在人网站无码天堂 | 老司机亚洲精品影院 | 欧美黑人巨大xxxxx | 亚洲国产精品无码久久久久高潮 | 国产精品视频免费播放 | 日韩av无码中文无码电影 | 国产在线精品一区二区三区直播 | 国产乱人偷精品人妻a片 | 强开小婷嫩苞又嫩又紧视频 | 久久久久亚洲精品中文字幕 | 无码福利日韩神码福利片 | 成人精品一区二区三区中文字幕 | 中文毛片无遮挡高清免费 | 伊在人天堂亚洲香蕉精品区 | 一个人看的www免费视频在线观看 | √天堂中文官网8在线 | 精品人妻人人做人人爽夜夜爽 | 免费国产成人高清在线观看网站 | 色狠狠av一区二区三区 | 精品人妻av区 | 国产成人午夜福利在线播放 | 色欲久久久天天天综合网精品 | 在线а√天堂中文官网 | 国产凸凹视频一区二区 | 丝袜 中出 制服 人妻 美腿 | 大肉大捧一进一出好爽视频 | 日本精品久久久久中文字幕 | 国产真人无遮挡作爱免费视频 | 欧美人与物videos另类 | 中文精品久久久久人妻不卡 | 亚洲国产精品毛片av不卡在线 | 久精品国产欧美亚洲色aⅴ大片 | 国产精品18久久久久久麻辣 | 无套内射视频囯产 | 国产精品视频免费播放 | 亚洲国产成人av在线观看 | 给我免费的视频在线观看 | 丝袜足控一区二区三区 | 国产高清av在线播放 | 亚洲精品国产第一综合99久久 | 国产无遮挡又黄又爽又色 | 国产精品高潮呻吟av久久4虎 | 日本爽爽爽爽爽爽在线观看免 | 亚洲国产精品毛片av不卡在线 | 欧美国产亚洲日韩在线二区 | av无码电影一区二区三区 | 樱花草在线社区www | 人人妻人人澡人人爽欧美一区九九 | 精品亚洲韩国一区二区三区 | 国内精品一区二区三区不卡 | 色一情一乱一伦一区二区三欧美 | 一本加勒比波多野结衣 | 久久久无码中文字幕久... | 成人性做爰aaa片免费看不忠 | 欧美亚洲日韩国产人成在线播放 | 一本久久伊人热热精品中文字幕 | 亚洲中文字幕va福利 | 熟女体下毛毛黑森林 | 无码免费一区二区三区 | 久久99精品国产麻豆蜜芽 | 日韩精品a片一区二区三区妖精 | 国产精品久久久久久无码 | 国产成人一区二区三区在线观看 | 日本一卡2卡3卡四卡精品网站 | 国精产品一区二区三区 | 欧美 丝袜 自拍 制服 另类 | 亚洲 高清 成人 动漫 | 在教室伦流澡到高潮hnp视频 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 欧美自拍另类欧美综合图片区 | 久久99久久99精品中文字幕 | 人妻体内射精一区二区三四 | 少妇被粗大的猛进出69影院 | 亚洲色偷偷偷综合网 | a片在线免费观看 | 一本久久a久久精品亚洲 | 国产成人无码午夜视频在线观看 | 色综合久久88色综合天天 | 亚洲精品成人福利网站 | 久久久久人妻一区精品色欧美 | 久久aⅴ免费观看 | 色诱久久久久综合网ywww | 初尝人妻少妇中文字幕 | 丰满人妻被黑人猛烈进入 | 中文字幕人妻无码一区二区三区 | 激情内射亚州一区二区三区爱妻 | 中文字幕精品av一区二区五区 | 久久99精品国产.久久久久 | 免费观看的无遮挡av | 国产精品人妻一区二区三区四 | 女人被爽到呻吟gif动态图视看 | 久久综合九色综合欧美狠狠 | 久久国产36精品色熟妇 | 99久久精品午夜一区二区 | 国产乱码精品一品二品 | 中文字幕乱妇无码av在线 | 人人澡人人妻人人爽人人蜜桃 | 久久无码专区国产精品s | 伊人色综合久久天天小片 | 麻豆国产人妻欲求不满谁演的 | 动漫av一区二区在线观看 | 无码av岛国片在线播放 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 亚洲国产精品毛片av不卡在线 | 人妻尝试又大又粗久久 | 国产成人综合美国十次 | 爱做久久久久久 | 亚洲啪av永久无码精品放毛片 | 国产极品美女高潮无套在线观看 | 亚洲日本一区二区三区在线 | 在线播放亚洲第一字幕 | 亚洲 a v无 码免 费 成 人 a v | 成人无码精品1区2区3区免费看 | 六月丁香婷婷色狠狠久久 | 久在线观看福利视频 | 黑人巨大精品欧美黑寡妇 | 国产片av国语在线观看 | 成人欧美一区二区三区 | a在线观看免费网站大全 | 无码国产色欲xxxxx视频 | 无码精品国产va在线观看dvd | 呦交小u女精品视频 | 在线欧美精品一区二区三区 | 中文字幕人妻无码一区二区三区 | 夫妻免费无码v看片 | 国产黄在线观看免费观看不卡 | 国产香蕉尹人综合在线观看 | 帮老师解开蕾丝奶罩吸乳网站 | 国产精品高潮呻吟av久久4虎 | 无码福利日韩神码福利片 | 免费乱码人妻系列无码专区 | 无码人中文字幕 | 久久国语露脸国产精品电影 | 国产精品爱久久久久久久 | 亚洲の无码国产の无码影院 | 狠狠色欧美亚洲狠狠色www | 好男人社区资源 | 国产午夜亚洲精品不卡 | 亚洲va欧美va天堂v国产综合 | 亚洲 另类 在线 欧美 制服 | 国产人成高清在线视频99最全资源 | а天堂中文在线官网 | 精品无码成人片一区二区98 | 清纯唯美经典一区二区 | 亚洲精品一区二区三区大桥未久 | 国产精品久久久久9999小说 | 国产绳艺sm调教室论坛 | 色婷婷久久一区二区三区麻豆 | 午夜熟女插插xx免费视频 | 人人妻人人澡人人爽人人精品浪潮 | 任你躁在线精品免费 | 亚洲一区二区三区香蕉 | 国产亚洲tv在线观看 | 鲁鲁鲁爽爽爽在线视频观看 | 日本精品少妇一区二区三区 | 久久综合激激的五月天 | 午夜时刻免费入口 | 久久精品成人欧美大片 | 亚洲人成网站免费播放 | 成人精品天堂一区二区三区 | 免费看少妇作爱视频 | 国产sm调教视频在线观看 | 欧美老妇交乱视频在线观看 | 国内少妇偷人精品视频免费 | 丰满岳乱妇在线观看中字无码 | 国产精品免费大片 | 亚洲自偷精品视频自拍 | 婷婷色婷婷开心五月四房播播 | 欧美国产日韩亚洲中文 | 精品无人国产偷自产在线 | 内射后入在线观看一区 | 一本久道久久综合狠狠爱 | 国产无遮挡又黄又爽又色 | av在线亚洲欧洲日产一区二区 | 人人澡人人透人人爽 | 欧美人与禽猛交狂配 | 国产欧美亚洲精品a | 成人无码影片精品久久久 | 色综合久久久无码中文字幕 | 国产亚洲精品精品国产亚洲综合 | 清纯唯美经典一区二区 | 美女毛片一区二区三区四区 | 国产av一区二区精品久久凹凸 | 国产一区二区三区四区五区加勒比 | 欧美一区二区三区视频在线观看 | 久久亚洲精品成人无码 | 亚洲 欧美 激情 小说 另类 | 国产精品国产自线拍免费软件 | 无码人妻丰满熟妇区毛片18 | 97无码免费人妻超级碰碰夜夜 | 久久精品成人欧美大片 | 18无码粉嫩小泬无套在线观看 | 亚洲国产精华液网站w | 在线а√天堂中文官网 | 无码纯肉视频在线观看 | 伊人久久大香线蕉午夜 | www一区二区www免费 | 成人精品天堂一区二区三区 | 日韩少妇内射免费播放 | 无码国产激情在线观看 | 国产精品香蕉在线观看 | 国产精品永久免费视频 | 久久精品中文字幕大胸 | 国产黄在线观看免费观看不卡 | 国产熟妇高潮叫床视频播放 | 国产口爆吞精在线视频 | 欧美三级a做爰在线观看 | 初尝人妻少妇中文字幕 | 波多野结衣高清一区二区三区 | 一二三四在线观看免费视频 | 性色欲网站人妻丰满中文久久不卡 | 疯狂三人交性欧美 | 少妇高潮喷潮久久久影院 | 内射爽无广熟女亚洲 | 精品无人国产偷自产在线 | 色五月丁香五月综合五月 | 欧美丰满熟妇xxxx | 无码人妻黑人中文字幕 | 精品国产一区二区三区av 性色 | 国产精品美女久久久久av爽李琼 | 久久久久国色av免费观看性色 | 亚洲中文字幕成人无码 | 国产猛烈高潮尖叫视频免费 | 无码人妻精品一区二区三区不卡 | 老太婆性杂交欧美肥老太 | 国产精品亚洲一区二区三区喷水 | 亚洲成a人片在线观看日本 | 久久久中文字幕日本无吗 | 亚洲无人区午夜福利码高清完整版 | 欧美zoozzooz性欧美 | 久久精品99久久香蕉国产色戒 | 国产精品无码永久免费888 | 日韩精品无码一本二本三本色 | 一本色道婷婷久久欧美 | 无码一区二区三区在线观看 | 国产成人无码区免费内射一片色欲 | 亚洲va中文字幕无码久久不卡 | 激情国产av做激情国产爱 | 麻豆md0077饥渴少妇 | 国产艳妇av在线观看果冻传媒 | 精品久久久久香蕉网 | 97夜夜澡人人爽人人喊中国片 | 女人被爽到呻吟gif动态图视看 | 亚洲一区二区三区 | 国产 浪潮av性色四虎 | 国内精品久久久久久中文字幕 | 澳门永久av免费网站 | 亚洲色大成网站www国产 | 色婷婷综合激情综在线播放 | 国产乱码精品一品二品 | 欧美高清在线精品一区 | 在线欧美精品一区二区三区 | 亚洲精品美女久久久久久久 | 少妇被粗大的猛进出69影院 | 成人无码视频在线观看网站 | 18禁黄网站男男禁片免费观看 | 亚洲午夜久久久影院 | 丰满少妇高潮惨叫视频 | 强伦人妻一区二区三区视频18 | 中文字幕人妻无码一夲道 | 国产sm调教视频在线观看 | 亚洲精品久久久久avwww潮水 | 中国女人内谢69xxxxxa片 | 日日天干夜夜狠狠爱 | 国产女主播喷水视频在线观看 | 国产人妻精品一区二区三区 | 国产av无码专区亚洲awww | 99re在线播放 | 亚洲人成网站在线播放942 | 亚洲中文字幕无码中文字在线 | 无遮挡国产高潮视频免费观看 | 欧美一区二区三区视频在线观看 | 国产黄在线观看免费观看不卡 | 精品欧美一区二区三区久久久 | 国产成人精品无码播放 | 丰满人妻一区二区三区免费视频 | 国产97在线 | 亚洲 | 日本一卡2卡3卡四卡精品网站 | 激情内射亚州一区二区三区爱妻 | 成年美女黄网站色大免费全看 | 国产极品美女高潮无套在线观看 | 亚洲天堂2017无码 | 老熟妇仑乱视频一区二区 | 免费无码av一区二区 | 美女毛片一区二区三区四区 | 亚洲 日韩 欧美 成人 在线观看 | 久久午夜无码鲁丝片 | 国产午夜福利亚洲第一 | 久久综合香蕉国产蜜臀av | 欧美老妇交乱视频在线观看 | 亚洲精品国产精品乱码不卡 | 久久久久久九九精品久 | 一本加勒比波多野结衣 | 国产精华av午夜在线观看 | 无码人妻丰满熟妇区五十路百度 | 欧美成人午夜精品久久久 | 女人被男人躁得好爽免费视频 | 亚洲va欧美va天堂v国产综合 | 桃花色综合影院 | 成人精品一区二区三区中文字幕 | 欧美日本精品一区二区三区 | 白嫩日本少妇做爰 | 一本久道久久综合狠狠爱 | 亚洲热妇无码av在线播放 | аⅴ资源天堂资源库在线 | 色婷婷久久一区二区三区麻豆 | 欧美日韩一区二区免费视频 | 国产精品久久久久无码av色戒 | 无码人妻出轨黑人中文字幕 | 日韩精品乱码av一区二区 | 又粗又大又硬又长又爽 | 香港三级日本三级妇三级 | 波多野结衣高清一区二区三区 | 日日摸夜夜摸狠狠摸婷婷 | 欧美亚洲日韩国产人成在线播放 | 欧美日本精品一区二区三区 | 日韩精品a片一区二区三区妖精 | 激情亚洲一区国产精品 | 欧美成人高清在线播放 | 女人被男人躁得好爽免费视频 | 黑人巨大精品欧美一区二区 | 欧美喷潮久久久xxxxx | 精品久久综合1区2区3区激情 | 久久99精品国产麻豆蜜芽 | 国产另类ts人妖一区二区 | 国语自产偷拍精品视频偷 | 亚洲成色在线综合网站 | 国产九九九九九九九a片 | 少妇无码吹潮 | 日韩欧美群交p片內射中文 | 国产精品免费大片 | 丰腴饱满的极品熟妇 | 天天燥日日燥 | 久久精品国产99久久6动漫 | 女人被爽到呻吟gif动态图视看 | 精品无人区无码乱码毛片国产 | 无码av最新清无码专区吞精 | 国产色视频一区二区三区 | 成人免费无码大片a毛片 | 免费看男女做好爽好硬视频 | 老子影院午夜伦不卡 | 国产精品va在线播放 | 国产亚洲精品久久久久久久久动漫 | 欧美人与物videos另类 | 水蜜桃av无码 | 性啪啪chinese东北女人 | 亚洲精品一区三区三区在线观看 | 精品无码一区二区三区爱欲 | 少女韩国电视剧在线观看完整 | 欧美xxxxx精品 | 99久久亚洲精品无码毛片 | 亚洲一区二区三区四区 | 成人性做爰aaa片免费看 | 人妻中文无码久热丝袜 | 国产偷自视频区视频 | 日本熟妇人妻xxxxx人hd | 成年美女黄网站色大免费视频 | 久久www免费人成人片 | 88国产精品欧美一区二区三区 | 大乳丰满人妻中文字幕日本 | 久久久久久亚洲精品a片成人 | 欧美精品国产综合久久 | 国产特级毛片aaaaaaa高清 | 午夜成人1000部免费视频 | 荫蒂被男人添的好舒服爽免费视频 | 国产精品办公室沙发 | 特黄特色大片免费播放器图片 | 久久久亚洲欧洲日产国码αv | 亚洲综合无码一区二区三区 | 免费无码的av片在线观看 | 国产黑色丝袜在线播放 | 国产在热线精品视频 | 人人爽人人澡人人人妻 | 九月婷婷人人澡人人添人人爽 | 国产口爆吞精在线视频 | 成人免费视频一区二区 | 精品午夜福利在线观看 |