![《mysql硬盤分區(qū)》word版_第1頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/16/3f4fb897-deae-4c35-9a67-c916aeba8b2d/3f4fb897-deae-4c35-9a67-c916aeba8b2d1.gif)
![《mysql硬盤分區(qū)》word版_第2頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/16/3f4fb897-deae-4c35-9a67-c916aeba8b2d/3f4fb897-deae-4c35-9a67-c916aeba8b2d2.gif)
![《mysql硬盤分區(qū)》word版_第3頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/16/3f4fb897-deae-4c35-9a67-c916aeba8b2d/3f4fb897-deae-4c35-9a67-c916aeba8b2d3.gif)
![《mysql硬盤分區(qū)》word版_第4頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/16/3f4fb897-deae-4c35-9a67-c916aeba8b2d/3f4fb897-deae-4c35-9a67-c916aeba8b2d4.gif)
![《mysql硬盤分區(qū)》word版_第5頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/16/3f4fb897-deae-4c35-9a67-c916aeba8b2d/3f4fb897-deae-4c35-9a67-c916aeba8b2d5.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、.第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é),“
2、分區(qū)類型” 中討論。關(guān)于子分區(qū)在18.2.5節(jié),“子分區(qū)” 中討論?,F(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)。 同樣,許多也適用于本章:在這里描述的一些功能還沒(méi)有實(shí)際上實(shí)現(xiàn)(分區(qū)維護(hù)和重新分區(qū)命令),其他的可能還沒(méi)有完全如所描述的那樣實(shí)現(xiàn)(例如, 用于分區(qū)的數(shù)據(jù)目錄(DATA DIRECTORY)和索引目錄(INDEX DIRECTORY)選項(xiàng)受到Bug
3、 #13520) 不利的影響). 我們已經(jīng)設(shè)法在本章中標(biāo)出這些差異。在提出缺陷報(bào)告前,我們鼓勵(lì)參考下面的一些資源:MySQL 分區(qū)論壇 這是一個(gè)為對(duì)MySQL分區(qū)技術(shù)感興趣或用MySQL分區(qū)技術(shù)做試驗(yàn)提供的官方討論論壇。來(lái)自MySQL 的開(kāi)發(fā)者和其他的人,會(huì)在上面發(fā)表和更新有關(guān)的材料。它由分區(qū)開(kāi)發(fā)和文獻(xiàn)團(tuán)隊(duì)的成員負(fù)責(zé)監(jiān)控。 分區(qū)缺陷報(bào)告 已經(jīng)歸檔在缺陷系統(tǒng)中的、所有分區(qū)缺陷的一個(gè)列表,而無(wú)論這些缺陷的年限、嚴(yán)重性或當(dāng)前的狀態(tài)如何。根據(jù)許多規(guī)則可以對(duì)這些缺陷進(jìn)行篩選,或者可以從MySQL缺陷系統(tǒng)主頁(yè)開(kāi)始,然后查找你特別感興趣的缺陷。Mikael Ronstr?m's Blog MySQL
4、分區(qū)體系結(jié)構(gòu)和領(lǐng)先的開(kāi)發(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)參見(jiàn)2.8節(jié),“使用源碼分發(fā)版安裝MySQL”。如果在編譯一個(gè)激活分區(qū)的MySQL 5
5、.1創(chuàng)建中碰到問(wèn)題,可以在MySQL分區(qū)論壇中查找解決辦法,如果在論壇中已經(jīng)貼出的文章中沒(méi)有找到問(wèn)題的解決辦法,可以在上面尋找?guī)椭?8.1. MySQL中的分區(qū)概述本節(jié)提供了關(guān)于MySQL 5.1.分區(qū)在概念上的概述。 SQL標(biāo)準(zhǔn)在數(shù)據(jù)存儲(chǔ)的物理方面沒(méi)有提供太多的指南。SQL語(yǔ)言的使用獨(dú)立于它所使用的任何數(shù)據(jù)結(jié)構(gòu)或圖表、表、行或列下的介質(zhì)。但是,大部分高級(jí)數(shù)據(jù)庫(kù)管理系統(tǒng)已經(jīng)開(kāi)發(fā)了一些根據(jù)文件系統(tǒng)、硬件或者這兩者來(lái)確定將要用于存儲(chǔ)特定數(shù)據(jù)塊物理位置的方法。在MySQL中,InnoDB存儲(chǔ)引擎長(zhǎng)期支持表空間的概念,并且MySQL服務(wù)器甚至在分區(qū)引入之前,就能配置為存儲(chǔ)不同的數(shù)據(jù)庫(kù)使用不同的物理路
6、徑(關(guān)于如何配置的解釋,請(qǐng)參見(jiàn)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ū)類型來(lái)選擇,把用戶提供的表達(dá)式的值作為參數(shù)。該表達(dá)式可以是一個(gè)整數(shù)列值,或一個(gè)作用在一個(gè)或多個(gè)列值上并返回一個(gè)整數(shù)的函數(shù)。這個(gè)表達(dá)式的值傳遞給分區(qū)函數(shù),分區(qū)函數(shù)返回一個(gè)表示那個(gè)特定記錄應(yīng)該保
7、存在哪個(gè)分區(qū)的序號(hào)。這個(gè)函數(shù)不能是常數(shù),也不能是任意數(shù)。它不能包含任何查詢,但是實(shí)際上可以使用MySQL 中任何可用的SQL表達(dá)式,只要該表達(dá)式返回一個(gè)小于MAXVALUE(最大可能的正整數(shù))的正數(shù)值。分區(qū)函數(shù)的例子可以在本章后面關(guān)于分區(qū)類型的討論中找到 (請(qǐng)參見(jiàn)18.2節(jié),“分區(qū)類型” ),也可在13.1.5節(jié),“CREATE TABLE語(yǔ)法”的分區(qū)語(yǔ)法描述中找到。 當(dāng)二進(jìn)制碼變成可用時(shí)(也就是說(shuō),5.1 -max 二進(jìn)制碼將通過(guò)-with-partition 建立),分區(qū)支持就將包含在MySQL 5.1的-max 版本中。如果MySQL二進(jìn)制碼是使用分區(qū)支持建立的,那么激活它不需要任何其他
8、的東西 (例如,在f 文件中,不需要特殊的條目)??梢酝ㄟ^(guò)使用SHOW VARIABLES命令來(lái)確定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)生的輸出中,如果沒(méi)有看到變量have_partition_engine的值為YES,那么MySQL的版本就不支持分區(qū)。
9、(注意:在顯示任何有關(guān)分區(qū)支持信息的命令SHOW ENGINES的輸出中,不會(huì)給出任何信息;必須使用SHOW VARIABLES命令來(lái)做出這個(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ǔ)引擎,必須且只能使用S
10、TORAGE ENGINE 選項(xiàng),這如同為非分區(qū)表配置存儲(chǔ)引擎一樣。但是,必須記住STORAGE ENGINE(和其他的表選項(xiàng))必須列在用在CREATE TABLE語(yǔ)句中的其他任何分區(qū)選項(xiàng)之前。下面的例子給出了怎樣創(chuàng)建一個(gè)通過(guò)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 選
11、項(xiàng),但是在MySQL 5.1版本中,這沒(méi)有作用)。 創(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ū)??梢酝ㄟ^(guò)使用用來(lái)創(chuàng)建分區(qū)表的CREATE TABLE語(yǔ)句的PARTITION子句的DATA DIRECTORY(數(shù)據(jù)路徑)和INDEX DIRECTORY(索引路徑)選項(xiàng),為每個(gè)分區(qū)的數(shù)據(jù)和索引指定特定的路徑。此外,MAX_ROWS和MIN_ROWS選項(xiàng)可以用來(lái)設(shè)定最大和最小的行數(shù),它們可以各自保存在每個(gè)
12、分區(qū)里。關(guān)于這些選項(xiàng)的更多信息,請(qǐng)參見(jiàn)18.3節(jié),“分區(qū)管理”。注釋:這個(gè)特殊的功能由于Bug #13250的原因,目前還不能實(shí)用。在第一個(gè)5.1二進(jìn)制版本投入使用時(shí),我們應(yīng)該已經(jīng)把這個(gè)問(wèn)題解決了。分區(qū)的一些優(yōu)點(diǎn)包括: · 與單個(gè)磁盤或文件系統(tǒng)分區(qū)相比,可以存儲(chǔ)更多的數(shù)據(jù)。 · 對(duì)于那些已經(jīng)失去保存意義的數(shù)據(jù),通??梢酝ㄟ^(guò)刪除與那些數(shù)據(jù)有關(guān)的分區(qū),很容易地刪除那些數(shù)據(jù)。相反地,在某些情況下,添加新數(shù)據(jù)的過(guò)程又可以通過(guò)為那些新數(shù)據(jù)專門增加一個(gè)新的分區(qū),來(lái)很方便地實(shí)現(xiàn)。通常和分區(qū)有關(guān)的其他優(yōu)點(diǎn)包括下面列出的這些。MySQL 分區(qū)中的這些功能目前還沒(méi)有實(shí)現(xiàn),但是在我們的優(yōu)先級(jí)列表
13、中,具有高的優(yōu)先級(jí);我們希望在5.1的生產(chǎn)版本中,能包括這些功能。· 一些查詢可以得到極大的優(yōu)化,這主要是借助于滿足一個(gè)給定WHERE 語(yǔ)句的數(shù)據(jù)可以只保存在一個(gè)或多個(gè)分區(qū)內(nèi),這樣在查找時(shí)就不用查找其他剩余的分區(qū)。因?yàn)榉謪^(qū)可以在創(chuàng)建了分區(qū)表后進(jìn)行修改,所以在第一次配置分區(qū)方案時(shí)還不曾這么做時(shí),可以重新組織數(shù)據(jù),來(lái)提高那些常用查詢的效率。 · 涉及到例如SUM() 和 COUNT()這樣聚合函數(shù)的查詢,可以很容易地進(jìn)行并行處理。這種查詢的一個(gè)簡(jiǎn)單例子如 “SELECT salesperson_id, COUNT(orders) as order_total FROM sale
14、s GROUP BY salesperson_id;”。通過(guò)“并行”, 這意味著該查詢可以在每個(gè)分區(qū)上同時(shí)進(jìn)行,最終結(jié)果只需通過(guò)總計(jì)所有分區(qū)得到的結(jié)果。 · 通過(guò)跨多個(gè)磁盤來(lái)分散數(shù)據(jù)查詢,來(lái)獲得更大的查詢吞吐量。 要經(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ū):基于
15、屬于一個(gè)給定連續(xù)區(qū)間的列值,把多行分配給分區(qū)。參見(jiàn)18.2.1節(jié),“RANGE分區(qū)”。 · LIST 分區(qū):類似于按RANGE分區(qū),區(qū)別在于LIST分區(qū)是基于列值匹配一個(gè)離散值集合中的某個(gè)值來(lái)進(jìn)行選擇。參見(jiàn)18.2.2節(jié),“LIST分區(qū)”。 · HASH分區(qū):基于用戶定義的表達(dá)式的返回值來(lái)進(jìn)行選擇的分區(qū),該表達(dá)式使用將要插入到表中的這些行的列值進(jìn)行計(jì)算。這個(gè)函數(shù)可以包含MySQL 中有效的、產(chǎn)生非負(fù)整數(shù)值的任何表達(dá)式。參見(jiàn)18.2.3節(jié),“HASH分區(qū)”。 · KEY 分區(qū):類似于按HASH分區(qū),區(qū)別在于KEY分區(qū)只支持計(jì)算一列或多列,且MySQL 服務(wù)器提供其自
16、身的哈希函數(shù)。必須有一列或多列包含整數(shù)值。參見(jiàn)18.2.4節(jié),“KEY分區(qū)”。 無(wú)論使用何種類型的分區(qū),分區(qū)總是在創(chuàng)建時(shí)就自動(dòng)的順序編號(hào),且從0開(kāi)始記錄,記住這一點(diǎn)非常重要。當(dāng)有一新行插入到一個(gè)分區(qū)表中時(shí),就是使用這些分區(qū)編號(hào)來(lái)識(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è)問(wèn)題通過(guò)MySQL服務(wù)器內(nèi)部使用的 哈希函數(shù)自動(dòng)進(jìn)行處理。 分區(qū)的名字基本上遵循其他MySQL 標(biāo)識(shí)符應(yīng)當(dāng)遵循的原則,例如用于
17、表和數(shù)據(jù)庫(kù)名字的標(biāo)識(shí)符。但是應(yīng)當(dāng)注意,分區(qū)的名字是不區(qū)分大小寫(xiě)的。例如,下面的CREATE TABLE語(yǔ)句將會(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沒(méi)有區(qū)別。 注釋:在下面的章節(jié)中,我們沒(méi)
18、有必要提供可以用來(lái)創(chuàng)建每種分區(qū)類型語(yǔ)法的所有可能形式,這些信息可以在13.1.5節(jié),“CREATE TABLE語(yǔ)法” 中找到。18.2.1. RANGE分區(qū)按照RANGE分區(qū)的表是通過(guò)如下一種方式進(jìn)行分區(qū)的,每個(gè)分區(qū)包含那些分區(qū)表達(dá)式的值位于一個(gè)給定的連續(xù)區(qū)間內(nèi)的行。這些區(qū)間要連續(xù)且不能相互重疊,使用VALUES LESS THAN操作符來(lái)進(jìn)行定義。在下面的幾個(gè)例子中,假定你創(chuàng)建了一個(gè)如下的一個(gè)表,該表保存有20家音像店的職員記錄,這20家音像店的編號(hào)從1到20。CREATE TABLE employees ( id INT NOT NULL, fname VARCHAR(30), lname
19、 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è)表可以有多種方式來(lái)按照區(qū)間進(jìn)行分區(qū)。一種方式是使用store_id 列。例如,你可能決定通過(guò)添加一個(gè)PARTITION BY RANGE子句把這個(gè)表分割成4個(gè)區(qū)間,如下所示: CREATE TABLE employees ( id INT NOT NUL
20、L, 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), PARTITI
21、ON 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 語(yǔ)法的要求;在這點(diǎn)上,它類似于C或Java中的“switch . case”語(yǔ)句。 對(duì)于包含數(shù)據(jù)(72, 'Michael', 'Widenius', '1998-06-25', NULL, 13)的一個(gè)新行,可以很容
22、易地確定它將插入到p2分區(qū)中,但是如果增加了一個(gè)編號(hào)為第21的商店,將會(huì)發(fā)生什么呢?在這種方案下,由于沒(méi)有規(guī)則把store_id大于20的商店包含在內(nèi),服務(wù)器將不知道把該行保存在何處,將會(huì)導(dǎo)致錯(cuò)誤。 要避免這種錯(cuò)誤,可以通過(guò)在CREATE TABLE語(yǔ)句中使用一個(gè)“catchall” VALUES LESS THAN子句,該子句提供給所有大于明確指定的最高值的值:CREATE TABLE employees ( id INT NOT NULL, fname VARCHAR(30), lname VARCHAR(30), hired DATE NOT NULL DEFAULT '1970
23、-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
24、表示最大的可能的整數(shù)值?,F(xiàn)在,store_id 列值大于或等于16(定義了的最高值)的所有行都將保存在分區(qū)p3中。在將來(lái)的某個(gè)時(shí)候,當(dāng)商店數(shù)已經(jīng)增長(zhǎng)到25, 30, 或更多 ,可以使用ALTER TABLE語(yǔ)句為商店21-25, 26-30,等等增加新的分區(qū) (關(guān)于如何實(shí)現(xiàn)的詳細(xì)信息參見(jiàn)18.3節(jié),“分區(qū)管理” )。在幾乎一樣的結(jié)構(gòu)中,你還可以基于雇員的工作代碼來(lái)分割表,也就是說(shuō),基于job_code 列值的連續(xù)區(qū)間。例如假定2位數(shù)字的工作代碼用來(lái)表示普通(店內(nèi)的)工人,三個(gè)數(shù)字代碼表示辦公室和支持人員,四個(gè)數(shù)字代碼表示管理層,你可以使用下面的語(yǔ)句創(chuàng)建該分區(qū)表:CREATE TABLE emp
25、loyees ( 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 VALUE
26、S 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)
27、。 除了可以根據(jù)商店編號(hào)分割表數(shù)據(jù)外,你還可以使用一個(gè)基于兩個(gè)DATE (日期)中的一個(gè)的表達(dá)式來(lái)分割表數(shù)據(jù)。例如,假定你想基于每個(gè)雇員離開(kāi)公司的年份來(lái)分割表,也就是說(shuō),YEAR(separated)的值。實(shí)現(xiàn)這種分區(qū)模式的CREATE TABLE 語(yǔ)句的一個(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 &
28、#39;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年期間雇傭的所有雇員的記錄保存在分
29、區(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;”來(lái)刪除所有在1991年前就已經(jīng)停止工作的雇員相對(duì)應(yīng)的所有行。(更多信息請(qǐng)參見(jiàn)13.1.2節(jié),“ALTER TABLE語(yǔ)法” 和 18.3節(jié),“分區(qū)管理”)。對(duì)于有大量行的表,這比運(yùn)行一個(gè)如“DELETE FROM employees WHERE YEAR(
30、separated) <= 1990;”這樣的一個(gè)DELETE查詢要有效得多。· 想要使用一個(gè)包含有日期或時(shí)間值,或包含有從一些其他級(jí)數(shù)開(kāi)始增長(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)化還沒(méi)有在MySQL 5.1源程序中啟用,但是,有關(guān)工作正在
31、進(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ū)通過(guò)使用“PARTITION BY LIST(expr)”來(lái)實(shí)現(xiàn),其中“expr” 是某列值或一個(gè)基于某個(gè)列值、并返回一個(gè)整數(shù)值的表達(dá)式,然后通過(guò)“VALUES IN (value_list)”的方式來(lái)定義每個(gè)分區(qū),其中“value_list”是一個(gè)通過(guò)逗號(hào)分隔的整數(shù)列表。注釋:在MySQL 5.1中
32、,當(dāng)使用LIST分區(qū)時(shí),有可能只能匹配整數(shù)列表。 不像按照RANGE定義分區(qū)的情形,LIST分區(qū)不必聲明任何特定的順序。關(guān)于LIST分區(qū)更詳細(xì)的語(yǔ)法信息,請(qǐng)參考13.1.5節(jié),“CREATE TABLE語(yǔ)法” 。 對(duì)于下面給出的例子,我們假定將要被分區(qū)的表的基本定義是通過(guò)下面的“CREATE TABLE”語(yǔ)句提供的:CREATE TABLE employees ( id INT NOT NULL, fname VARCHAR(30), lname VARCHAR(30), hired DATE NOT NULL DEFAULT '1970-01-01', separated D
33、ATE 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ū)中的方式來(lái)分割表,可以使用下面的“CREATE TABLE”語(yǔ)句:CREATE TABLE empl
34、oyees ( 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,
35、19,20), PARTITION pWest VALUES IN (4,12,13,14,18), PARTITION pCentral VALUES IN (7,8,15,16);這使得在表中增加或刪除指定地區(qū)的雇員記錄變得容易起來(lái)。例如,假定西區(qū)的所有音像店都賣給了其他公司。那么與在西區(qū)音像店工作雇員相關(guān)的所有記錄(行)可以使用查詢“ALTER TABLE employees DROP PARTITION pWest;”來(lái)進(jìn)行刪除,它與具有同樣作用的DELETE (刪除)查詢“DELETE query DELETE FROM employees WHERE store_id IN (4,
36、12,13,14,18);”比起來(lái),要有效得多。 要點(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的值列表中找到。要
37、重點(diǎn)注意的是,LIST分區(qū)沒(méi)有類似如“VALUES LESS THAN MAXVALUE”這樣的包含其他值在內(nèi)的定義。將要匹配的任何值都必須在值列表中找到。 LIST分區(qū)除了能和RANGE分區(qū)結(jié)合起來(lái)生成一個(gè)復(fù)合的子分區(qū),與HASH和KEY分區(qū)結(jié)合起來(lái)生成復(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ū)主要用來(lái)確保數(shù)據(jù)在預(yù)先確定數(shù)目的分區(qū)中平均分布。在RANGE和LIST分區(qū)中,必須明確指定一個(gè)給定的列值或列值集合應(yīng)該保存在哪個(gè)分區(qū)中;而在HASH分區(qū)中,MySQL 自動(dòng)完成這
38、些工作,你所要做的只是基于將要被哈希的列值指定一個(gè)列值或表達(dá)式,以及指定被分區(qū)的表將要被分割成的分區(qū)數(shù)量。 要使用HASH分區(qū)來(lái)分割一個(gè)表,要在CREATE TABLE 語(yǔ)句上添加一個(gè)“PARTITION BY HASH (expr)”子句,其中“expr”是一個(gè)返回一個(gè)整數(shù)的表達(dá)式。它可以僅僅是字段類型為MySQL 整型的一列的名字。此外,你很可能需要在后面再添加一個(gè)“PARTITIONS num”子句,其中num 是一個(gè)非負(fù)的整數(shù),它表示表將要被分割成分區(qū)的數(shù)量。 例如,下面的語(yǔ)句創(chuàng)建了一個(gè)使用基于“store_id”列進(jìn)行 哈希處理的表,該表被分成了4個(gè)分區(qū):CREATE TABLE e
39、mployees ( 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;如果沒(méi)有包括一個(gè)PARTITIONS子句,那么分區(qū)的數(shù)量將默認(rèn)為1。 例外: 對(duì)于NDB Cluster(簇)表,默認(rèn)的分區(qū)數(shù)
40、量將與簇?cái)?shù)據(jù)節(jié)點(diǎn)的數(shù)量相同,這種修正可能是考慮任何MAX_ROWS 設(shè)置,以便確保所有的行都能合適地插入到分區(qū)中。(參見(jiàn)第17章:MySQL簇)。 如果在關(guān)鍵字“PARTITIONS”后面沒(méi)有加上分區(qū)的數(shù)量,將會(huì)出現(xiàn)語(yǔ)法錯(cuò)誤。 “expr”還可以是一個(gè)返回一個(gè)整數(shù)的SQL表達(dá)式。例如,也許你想基于雇用雇員的年份來(lái)進(jìn)行分區(qū)。這可以通過(guò)下面的語(yǔ)句來(lái)實(shí)現(xiàn): CREATE TABLE employees ( id INT NOT NULL, fname VARCHAR(30), lname VARCHAR(30), hired DATE NOT NULL DEFAULT '1970-01-01
41、', 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ù)。(換句話說(shuō),它既是變化的但又是確定的)。但是應(yīng)當(dāng)記住,每當(dāng)插入或更新(或者可能刪除)一行,這個(gè)表達(dá)式都要計(jì)算一次;這意味著非常復(fù)雜的表達(dá)式可能會(huì)引起性能問(wèn)題,尤其是在執(zhí)行同時(shí)影響大量行的運(yùn)算(例如批量插入)的時(shí)候。 最有效率的哈希函數(shù)
42、是只對(duì)單個(gè)表列進(jìn)行計(jì)算,并且它的值隨列值進(jìn)行一致地增大或減小,因?yàn)檫@考慮了在分區(qū)范圍上的“修剪”。也就是說(shuō),表達(dá)式值和它所基于的列的值變化越接近,MySQL就可以越有效地使用該表達(dá)式來(lái)進(jìn)行HASH分區(qū)。 例如,“date_col” 是一個(gè)DATE(日期)類型的列,那么表達(dá)式TO_DAYS(date_col)就可以說(shuō)是隨列“date_col”值的變化而發(fā)生直接的變化,因?yàn)榱小癲ate_col”值的每個(gè)變化,表達(dá)式的值也將發(fā)生與之一致的變化。而表達(dá)式Y(jié)EAR(date_col)的變化就沒(méi)有表達(dá)式TO_DAYS(date_col)那么直接,因?yàn)椴皇橇小癲ate_col”每次可能的改變都能使表達(dá)式Y(jié)E
43、AR(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”的列?,F(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è)很大不同的變化。例如,把列
44、“int_col”的值從5變?yōu)?,表達(dá)式的值將產(chǎn)生“1”的改變,但是把列“int_col”的值從6變?yōu)?時(shí),表達(dá)式的值將產(chǎn)生“7”的變化。換句話說(shuō),如果列值與表達(dá)式值之比的曲線圖越接近由等式“y=nx(其中n為非零的常數(shù))描繪出的直線,則該表達(dá)式越適合于 哈希。這是因?yàn)?,表達(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ù)來(lái)確定使
45、用哪個(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)= 1MySQL 5.
46、1 還支持一個(gè)被稱為“l(fā)inear hashing(線性哈希功能)”的變量,它使用一個(gè)更加復(fù)雜的算法來(lái)確定新行插入到已經(jīng)分區(qū)了的表中的位置。關(guān)于這種算法的描述,請(qǐng)參見(jiàn)18.2.3.1節(jié),“LINEAR HASH分區(qū)” 。 每當(dāng)插入或更新一條記錄,用戶函數(shù)都要計(jì)算一次。當(dāng)刪除記錄時(shí),用戶函數(shù)也可能要進(jìn)行計(jì)算,這取決于所處的環(huán)境。 注釋:如果將要分區(qū)的表有一個(gè)唯一的鍵,那么用來(lái)作為HASH用戶函數(shù)的自變數(shù)或者主鍵的column_list的自變數(shù)的任意列都必須是那個(gè)鍵的一部分。18.2.3.1. LINEAR HASH分區(qū)MySQL還支持線性哈希功能,它與常規(guī)哈希的區(qū)別在于,線性哈希功能使用的一個(gè)線
47、性的2的冪(powers-of-two)運(yùn)算法則,而常規(guī) 哈希使用的是求哈希函數(shù)值的模數(shù)。線性哈希分區(qū)和常規(guī)哈希分區(qū)在語(yǔ)法上的唯一區(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_cod
48、e 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 ,它可以通過(guò)下面的公式得到: 2. V = POWER(2, CEILING(LOG(2, num)(例如,假定num是13。那么LOG(2,13)就是3.7004397181411。 CEILING(3.7004397181411)就是4,則V = POWER(2,4),
49、即等于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ū),是通過(guò)下面的語(yǔ)句創(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列值為'200
50、3-04-14',另一條記錄col3列值為'1998-10-19'。第一條記錄將要保存到的分區(qū)確定如下:V = POWER(2, CEILING(LOG(2,7) = 8N = YEAR('2003-04-14') & (8 - 1) = 2003 & 7 = 3 (3 >= 6 為假(FALSE): 記錄將被保存到#3號(hào)分區(qū)中)第二條記錄將要保存到的分區(qū)序號(hào)計(jì)算如下: V = 8N = YEAR('1998-10-19') & (8-1) = 1998 & 7 = 6 (6 >= 4 為真(T
51、RUE): 還需要附加的步驟) 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(
52、)來(lái)實(shí)現(xiàn)KEY分區(qū);對(duì)于使用其他存儲(chǔ)引擎的表,服務(wù)器使用其自己內(nèi)部的 哈希函數(shù),這些函數(shù)是基于與PASSWORD()一樣的運(yùn)算法則。 “CREATE TABLE . PARTITION BY KEY”的語(yǔ)法規(guī)則類似于創(chuàng)建一個(gè)通過(guò)HASH分區(qū)的表的規(guī)則。它們唯一的區(qū)別在于使用的關(guān)鍵字是KEY而不是HASH,并且KEY分區(qū)只采用一個(gè)或多個(gè)列名的一個(gè)列表。 通過(guò)線性KEY分割一個(gè)表也是可能的。下面是一個(gè)簡(jiǎn)單的例子: CREATE TABLE tk ( col1 INT NOT NULL, col2 CHAR(5), col3 DATE) PARTITION BY LINEAR KEY (col1)P
53、ARTITIONS 3;在KEY分區(qū)中使用關(guān)鍵字LINEAR和在HASH分區(qū)中使用具有同樣的作用,分區(qū)的編號(hào)是通過(guò)2的冪(powers-of-two)算法得到,而不是通過(guò)模數(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 語(yǔ)句: CREATE TABLE ts (id INT, purchased DATE) PARTITION BY RANGE(YEAR(purchased) SUBPARTITION BY HASH(TO_DAYS(purcha
54、sed) 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ì)于已
55、經(jīng)通過(guò)RANGE或LIST分區(qū)了的表再進(jìn)行子分區(qū)是可能的。子分區(qū)既可以使用HASH希分區(qū),也可以使用KEY分區(qū)。這也被稱為復(fù)合分區(qū)(composite partitioning)。 為了對(duì)個(gè)別的子分區(qū)指定選項(xiàng),使用SUBPARTITION 子句來(lái)明確定義子分區(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
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年德城區(qū)倉(cāng)儲(chǔ)租賃協(xié)議樣本
- 2025年國(guó)際快遞代理業(yè)務(wù)合同
- 2025年式機(jī)械設(shè)備訂購(gòu)合同案例
- 2025年企業(yè)業(yè)務(wù)外包服務(wù)合同范文
- 2025年企業(yè)項(xiàng)目咨詢與監(jiān)督服務(wù)合同樣本
- 2025年公費(fèi)醫(yī)療轉(zhuǎn)院轉(zhuǎn)診協(xié)議范例
- 2025年全球交流培訓(xùn)合同
- 2025年助理人員聘用合同書(shū)
- 2025年綠化維護(hù)合同模板
- 2025年住宅抵押融資合同范例文本
- 長(zhǎng)江委水文局2025年校園招聘17人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025年湖南韶山干部學(xué)院公開(kāi)招聘15人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 廣東省廣州市番禺區(qū)2023-2024學(xué)年七年級(jí)上學(xué)期期末數(shù)學(xué)試題
- 不可切除肺癌放療聯(lián)合免疫治療專家共識(shí)(2024年版)j解讀
- DB23/T 3657-2023醫(yī)養(yǎng)結(jié)合機(jī)構(gòu)服務(wù)質(zhì)量評(píng)價(jià)規(guī)范
- 教科版科學(xué)六年級(jí)下冊(cè)14《設(shè)計(jì)塔臺(tái)模型》課件
- 智研咨詢發(fā)布:2024年中國(guó)MVR蒸汽機(jī)械行業(yè)市場(chǎng)全景調(diào)查及投資前景預(yù)測(cè)報(bào)告
- 法規(guī)解讀丨2024新版《突發(fā)事件應(yīng)對(duì)法》及其應(yīng)用案例
- JGJ46-2024 建筑與市政工程施工現(xiàn)場(chǎng)臨時(shí)用電安全技術(shù)標(biāo)準(zhǔn)
- 煙花爆竹重大危險(xiǎn)源辨識(shí)AQ 4131-2023知識(shí)培訓(xùn)
- 企業(yè)動(dòng)火作業(yè)安全管理制度范文
評(píng)論
0/150
提交評(píng)論