freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

mysql硬盤(pán)分區(qū)word版(編輯修改稿)

2024-09-13 04:37 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 39。9999123139。, job_code INT, store_id INT)PARTITION BY HASH(YEAR(hired))PARTITIONS 4;“expr”還可以是MySQL 中有效的任何函數(shù)或其他表達(dá)式,只要它們返回一個(gè)既非常數(shù)、也非隨機(jī)數(shù)的整數(shù)。(換句話(huà)說(shuō),它既是變化的但又是確定的)。但是應(yīng)當(dāng)記住,每當(dāng)插入或更新(或者可能刪除)一行,這個(gè)表達(dá)式都要計(jì)算一次;這意味著非常復(fù)雜的表達(dá)式可能會(huì)引起性能問(wèn)題,尤其是在執(zhí)行同時(shí)影響大量行的運(yùn)算(例如批量插入)的時(shí)候。 最有效率的哈希函數(shù)是只對(duì)單個(gè)表列進(jìn)行計(jì)算,并且它的值隨列值進(jìn)行一致地增大或減小,因?yàn)檫@考慮了在分區(qū)范圍上的“修剪”。也就是說(shuō),表達(dá)式值和它所基于的列的值變化越接近,MySQL就可以越有效地使用該表達(dá)式來(lái)進(jìn)行HASH分區(qū)。 例如,“date_col” 是一個(gè)DATE(日期)類(lèi)型的列,那么表達(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é)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è)類(lèi)型為整型(INT)的、列名為“int_col”的列。現(xiàn)在考慮表達(dá)式“POW(5int_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”的變化。換句話(huà)說(shuō),如果列值與表達(dá)式值之比的曲線(xiàn)圖越接近由等式“y=nx(其中n為非零的常數(shù))描繪出的直線(xiàn),則該表達(dá)式越適合于 哈希。這是因?yàn)?,表達(dá)式的非線(xiàn)性越嚴(yán)重,分區(qū)中數(shù)據(jù)產(chǎn)生非均衡分布的趨勢(shì)也將越嚴(yán)重。理論上講,對(duì)于涉及到多列的表達(dá)式,“修剪(pruning)”也是可能的,但是要確定哪些適于 哈希是非常困難和耗時(shí)的?;谶@個(gè)原因,實(shí)際上不推薦使用涉及到多列的哈希表達(dá)式。 當(dāng)使用了“PARTITION BY HASH”時(shí),MySQL將基于用戶(hù)函數(shù)結(jié)果的模數(shù)來(lái)確定使用哪個(gè)編號(hào)的分區(qū)。換句話(huà),對(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列值為39。2005091539。的記錄到表t1中,那么保存該條記錄的分區(qū)確定如下: MOD(YEAR(39。2005090139。),4)= MOD(2005,4)= 1MySQL 還支持一個(gè)被稱(chēng)為“l(fā)inear hashing(線(xiàn)性哈希功能)”的變量,它使用一個(gè)更加復(fù)雜的算法來(lái)確定新行插入到已經(jīng)分區(qū)了的表中的位置。關(guān)于這種算法的描述,“LINEAR HASH分區(qū)” 。 每當(dāng)插入或更新一條記錄,用戶(hù)函數(shù)都要計(jì)算一次。當(dāng)刪除記錄時(shí),用戶(hù)函數(shù)也可能要進(jìn)行計(jì)算,這取決于所處的環(huán)境。 注釋?zhuān)喝绻麑⒁謪^(qū)的表有一個(gè)唯一的鍵,那么用來(lái)作為HASH用戶(hù)函數(shù)的自變數(shù)或者主鍵的column_list的自變數(shù)的任意列都必須是那個(gè)鍵的一部分。. LINEAR HASH分區(qū)MySQL還支持線(xiàn)性哈希功能,它與常規(guī)哈希的區(qū)別在于,線(xiàn)性哈希功能使用的一個(gè)線(xiàn)性的2的冪(powersoftwo)運(yùn)算法則,而常規(guī) 哈希使用的是求哈希函數(shù)值的模數(shù)。線(xiàn)性哈希分區(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 39。1970010139。, separated DATE NOT NULL DEFAULT 39。9999123139。, job_code INT, store_id INT)PARTITION BY LINEAR HASH(YEAR(hired))PARTITIONS 4;假設(shè)一個(gè)表達(dá)式expr, 當(dāng)使用線(xiàn)性哈希功能時(shí),記錄將要保存到的分區(qū)是num 個(gè)分區(qū)中的分區(qū)N,其中N是根據(jù)下面的算法得到: 1. 、2的冪,我們把這個(gè)值稱(chēng)為V ,它可以通過(guò)下面的公式得到: 2. V = POWER(2, CEILING(LOG(2, num)))(例如,假定num是13。那么LOG(2,13)。 CEILING()就是4,則V = POWER(2,4), 即等于16)。 3. 設(shè)置 N = F(column_list) amp。 (V 1). 4. 當(dāng) N = num: 設(shè)置 V = CEIL(V / 2) 設(shè)置 N = N amp。 (V 1) 例如,假設(shè)表t1,使用線(xiàn)性哈希分區(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?,F(xiàn)在假設(shè)要插入兩行記錄到表t1中,其中一條記錄col3列值為39。2003041439。,另一條記錄col3列值為39。1998101939。第一條記錄將要保存到的分區(qū)確定如下:V = POWER(2, CEILING(LOG(2,7))) = 8N = YEAR(39。2003041439。) amp。 (8 1) = 2003 amp。 7 = 3 (3 = 6 為假(FALSE): 記錄將被保存到3號(hào)分區(qū)中)第二條記錄將要保存到的分區(qū)序號(hào)計(jì)算如下: V = 8N = YEAR(39。1998101939。) amp。 (81) = 1998 amp。 7 = 6 (6 = 4 為真(TRUE): 還需要附加的步驟) N = 6 amp。 CEILING(5 / 2) = 6 amp。 3 = 2 (2 = 4 為假(FALSE): 記錄將被保存到2分區(qū)中)按照線(xiàn)性哈希分區(qū)的優(yōu)點(diǎn)在于增加、刪除、合并和拆分分區(qū)將變得更加快捷,有利于處理含有極其大量(1000吉)數(shù)據(jù)的表。它的缺點(diǎn)在于,與使用常規(guī)HASH分區(qū)得到的數(shù)據(jù)分布相比,各個(gè)分區(qū)間數(shù)據(jù)的分布不大可能均衡。. KEY分區(qū)按照KEY進(jìn)行分區(qū)類(lèi)似于按照HASH分區(qū),除了HASH分區(qū)使用的用戶(hù)定義的表達(dá)式,而KEY分區(qū)的 哈希函數(shù)是由MySQL 服務(wù)器提供。MySQL 簇(Cluster)使用函數(shù)MD5()來(lái)實(shí)現(xiàn)KEY分區(qū);對(duì)于使用其他存儲(chǔ)引擎的表,服務(wù)器使用其自己內(nèi)部的 哈希函數(shù),這些函數(shù)是基于與PASSWORD()一樣的運(yùn)算法則。 “CREATE TABLE ... PARTITION BY KEY”的語(yǔ)法規(guī)則類(lèi)似于創(chuàng)建一個(gè)通過(guò)HASH分區(qū)的表的規(guī)則。它們唯一的區(qū)別在于使用的關(guān)鍵字是KEY而不是HASH,并且KEY分區(qū)只采用一個(gè)或多個(gè)列名的一個(gè)列表。 通過(guò)線(xiàn)性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)是通過(guò)2的冪(powersoftwo)算法得到,而不是通過(guò)模數(shù)算法。關(guān)于該算法及其蘊(yùn)涵式的描述請(qǐng)參考 ,“LINEAR HASH分區(qū)” 。 . 子分區(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(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 ,對(duì)于已經(jīng)通過(guò)RANGE或LIST分區(qū)了的表再進(jìn)行子分區(qū)是可能的。子分區(qū)既可以使用HASH希分區(qū),也可以使用KEY分區(qū)。這也被稱(chēng)為復(fù)合分區(qū)(posite 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) ( 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)要注意的語(yǔ)法項(xiàng): 每個(gè)分區(qū)必須有相同數(shù)量的子分區(qū)。 如果在一個(gè)分區(qū)表上的任何分區(qū)上使用SUBPARTITION 來(lái)明確定義任何子分區(qū),那么就必須定義所有的子分區(qū)。換句話(huà)說(shuō),下面的語(yǔ)句將執(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è)語(yǔ)句包含了一個(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è)表中,沒(méi)有必要保持唯一。例如,下面的CREATE TABLE 語(yǔ)句是有效的: CREATE TABLE ts (id INT, purchased DATE)1
點(diǎn)擊復(fù)制文檔內(nèi)容
電大資料相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1