成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁(yè) > 知識(shí)庫(kù) > MySQL數(shù)據(jù)庫(kù)表分區(qū)注意事項(xiàng)大全【推薦】

MySQL數(shù)據(jù)庫(kù)表分區(qū)注意事項(xiàng)大全【推薦】

熱門(mén)標(biāo)簽:龍圖酒吧地圖標(biāo)注 怎么辦理400電話(huà)呢 好搜地圖標(biāo)注 地圖標(biāo)注圖標(biāo)素材入駐 電話(huà)機(jī)器人免費(fèi)嗎 百度地圖標(biāo)注地方備注 怎么申請(qǐng)400電話(huà)申請(qǐng) 400電話(huà)申請(qǐng)什么好 電銷(xiāo)機(jī)器人價(jià)格多少錢(qián)一臺(tái)

表分區(qū)與數(shù)據(jù)庫(kù)分區(qū)是不一樣的那么碰到表分區(qū)使用時(shí)我們要注意一些什么事情呢,今天我們來(lái)看一篇關(guān)于MySQL數(shù)據(jù)庫(kù)表分區(qū)注意事項(xiàng)的細(xì)節(jié)。

1、分區(qū)列索引約束

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

2、各分區(qū)類(lèi)型條件

range 每個(gè)分區(qū)包含那些分區(qū)表達(dá)式的值位于一個(gè)給定的連續(xù)區(qū)間內(nèi)的行。這些區(qū)間要連續(xù)且不能相互重疊

list只支持整形字段或返回整形數(shù)的表達(dá)式,每個(gè)分區(qū)列表里的值列表必須整數(shù)

hash類(lèi)型只支持整形字段或返回整形數(shù)的表達(dá)式

key類(lèi)型只支持列名形式(可一個(gè)或多個(gè)列名),不支持表達(dá)式

3、分區(qū)可用函數(shù)

ABS()

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

DAY()

DAYOFMONTH()

DAYOFWEEK()

DAYOFYEAR()

DATEDIFF()

EXTRACT()

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

HOUR()

MICROSECOND()

MINUTE()

MOD()

MONTH()

QUARTER()

SECOND()

TIME_TO_SEC()

TO_DAYS()

WEEKDAY()

YEAR()

YEARWEEK()

注意:

因?yàn)榉謪^(qū)函數(shù)不包括FROM_UNIXTIME函數(shù),所以用時(shí)間戳轉(zhuǎn)時(shí)間來(lái)分區(qū)就無(wú)法實(shí)現(xiàn)了,只能用date或者datetime來(lái)分區(qū)

例如按年我們可以用:

PARTITION BY RANGE (YEAR(date))

按月:

PARTITION BY RANGE(date div 100)  

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

一個(gè)訂單做分區(qū)的例子:

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

因?yàn)槲覀儧](méi)法用時(shí)間戳來(lái)做按時(shí)間分區(qū),所以添加了一個(gè)date字段,這個(gè)字段和order_id一起作為主鍵,我們知道分區(qū)的列一定要放到主鍵里面去的。下面我們用date計(jì)算成年月組合來(lái)分區(qū)

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

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

只能把最后的p_catch_all分區(qū)拆分成兩個(gè),這樣還有一個(gè)好處就是在p_catch_all分區(qū)的數(shù)據(jù)不會(huì)丟失。數(shù)據(jù)的合并與拆分用REORGANIZE PARTITION進(jìn)行。

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

合并分區(qū):

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

為什么不分到p_catch_all去?因?yàn)闀?huì)報(bào)分區(qū)以存在。

為什么合并的時(shí)候要帶上最后一個(gè)分區(qū)p_catch_all?因?yàn)槌俗詈笠粋€(gè)分區(qū),其他重組的分區(qū)范圍不能改變總范圍。
刪除分區(qū)但是不刪除數(shù)據(jù):

alter table 表名 remove partitioning

注意:上面語(yǔ)句在5.5可以執(zhí)行,5.6好像有問(wèn)題,要先測(cè)試一下

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

補(bǔ)充:MySQL表的四種分區(qū)類(lèi)型

一、什么是表分區(qū)

通俗地講表分區(qū)是將一大表,根據(jù)條件分割成若干個(gè)小表。mysql5.1開(kāi)始支持?jǐn)?shù)據(jù)表分區(qū)了。 如:某用戶(hù)表的記錄超過(guò)了600萬(wàn)條,那么就可以根據(jù)入庫(kù)日期將表分區(qū),也可以根據(jù)所在地將表分區(qū)。當(dāng)然也可根據(jù)其他的條件分區(qū)。

二、為什么要對(duì)表進(jìn)行分區(qū)

為了改善大型表以及具有各種訪(fǎng)問(wèn)模式的表的可伸縮性,可管理性和提高數(shù)據(jù)庫(kù)效率。

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

與單個(gè)磁盤(pán)或文件系統(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ù)專(zhuān)門(mén)增加一個(gè)新的分區(qū),來(lái)很方便地實(shí)現(xiàn)。通常和分區(qū)有關(guān)的其他優(yōu)點(diǎn)包括下面列出的這些。MySQL分區(qū)中的這些功能目前還沒(méi)有實(shí)現(xiàn),但是在我們的優(yōu)先級(jí)列表中,具有高的優(yōu)先級(jí);我們希望在5.1的生產(chǎn)版本中,能包括這些功能。

一些查詢(xún)可以得到極大的優(yōu)化,這主要是借助于滿(mǎn)足一個(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)提高那些常用查詢(xún)的效率。

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

通過(guò)跨多個(gè)磁盤(pán)來(lái)分散數(shù)據(jù)查詢(xún),來(lái)獲得更大的查詢(xún)吞吐量。

三、分區(qū)類(lèi)型

RANGE分區(qū):基于屬于一個(gè)給定連續(xù)區(qū)間的列值,把多行分配給分區(qū)。

LIST分區(qū):類(lèi)似于按RANGE分區(qū),區(qū)別在于LIST分區(qū)是基于列值匹配一個(gè)離散值集合中的某個(gè)值來(lái)進(jìn)行選擇。

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

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

RANGE分區(qū)

基于屬于一個(gè)給定連續(xù)區(qū)間的列值,把多行分配給分區(qū)。

這些區(qū)間要連續(xù)且不能相互重疊,使用VALUES LESS THAN操作符來(lái)進(jìn)行定義。以下是實(shí)例。

Sql代碼:

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

按照這種分區(qū)方案,在商店1到5工作的雇員相對(duì)應(yīng)的所有行被保存在分區(qū)P0中,商店6到10的雇員保存在P1中,依次類(lèi)推。注意,每個(gè)分區(qū)都是按順序進(jìn)行定義,從最低到最高。這是PARTITION BY RANGE 語(yǔ)法的要求;在這點(diǎn)上,它類(lèi)似于C或Java中的“switch … case”語(yǔ)句。對(duì)于包含數(shù)據(jù)(72, ‘Michael', ‘Widenius', '1998-06-25′, NULL, 13)的一個(gè)新行,可以很容易地確定它將插入到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子句,該子句提供給所有大于明確指定的最高值的值:

Sql代碼:

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

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

Sql代碼:

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

在這個(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á)式來(lái)分割表數(shù)據(jù)。例如,假定你想基于每個(gè)雇員離開(kāi)公司的年份來(lái)分割表,也就是說(shuō),YEAR(separated)的值。實(shí)現(xiàn)這種分區(qū)模式的CREATE TABLE 語(yǔ)句的一個(gè)例子如下所示:

Sql代碼:

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

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

注釋?zhuān)哼@種優(yōu)化還沒(méi)有在MySQL 5.1源程序中啟用,但是,有關(guān)工作正在進(jìn)行中。

LIST分區(qū)

類(lèi)似于按RANGE分區(qū),區(qū)別在于LIST分區(qū)是基于列值匹配一個(gè)離散值集合中的某個(gè)值來(lái)進(jìn)行選擇。

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ù)列表。 注釋?zhuān)涸贛ySQL 5.1中,當(dāng)使用LIST分區(qū)時(shí),有可能只能匹配整數(shù)列表。

Sql代碼:

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

假定有20個(gè)音像店,分布在4個(gè)有經(jīng)銷(xiāo)權(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ǔ)句:

Sql代碼:

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

這使得在表中增加或刪除指定地區(qū)的雇員記錄變得容易起來(lái)。例如,假定西區(qū)的所有音像店都賣(mài)給了其他公司。那么與在西區(qū)音像店工作雇員相關(guān)的所有記錄(行)可以使用查詢(xún)“ALTER TABLE employees DROP PARTITION pWest;”來(lái)進(jìn)行刪除,它與具有同樣作用的DELETE(刪除)查詢(xún)“DELETE query DELETE FROM employees WHERE store_id IN (4,12,13,14,18);”比起來(lái),要有效得多?!疽c(diǎn)】:如果試圖插入列值(或分區(qū)表達(dá)式的返回值)不在分區(qū)值列表中的一行時(shí),那么“INSERT”查詢(xún)將失敗并報(bào)錯(cuò)。例如,假定LIST分區(qū)的采用上面的方案,下面的查詢(xún)將失?。?br />

Sql代碼:

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ū)沒(méi)有類(lè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ū)也是可能的。

HASH分區(qū)

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

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

Sql代碼:

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

如果沒(méi)有包括一個(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ū)中。

LINER HASH

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

Sql代碼:

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

假設(shè)一個(gè)表達(dá)式expr,當(dāng)使用線(xiàn)性哈希功能時(shí),記錄將要保存到的分區(qū)是num 個(gè)分區(qū)中的分區(qū)N,其中N是根據(jù)下面的算法得到: 1. 找到下一個(gè)大于num.的、2的冪,我們把這個(gè)值稱(chēng)為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), 即等于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,使用線(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; 現(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ū)中) 按照線(xiàn)性哈希分區(qū)的優(yōu)點(diǎn)在于增加、刪除、合并和拆分分區(qū)將變得更加快捷,有利于處理含有極其大量(1000吉)數(shù)據(jù)的表。它的缺點(diǎn)在于,與使用常規(guī)HASH分區(qū)得到的數(shù)據(jù)分布相比,各個(gè)分區(qū)間數(shù)據(jù)的分布不大可能均衡。

KEY分區(qū)

類(lèi)似于按HASH分區(qū),區(qū)別在于KEY分區(qū)只支持計(jì)算一列或多列,且MySQL服務(wù)器提供其自身的哈希函數(shù)。必須有一列或多列包含整數(shù)值。

Sql代碼:

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的冪(powers-of-two)算法得到,而不是通過(guò)模數(shù)算法

總結(jié)

以上就是本文關(guān)于mysql數(shù)據(jù)庫(kù)表分區(qū)注意事項(xiàng)的全部?jī)?nèi)容,感興趣的朋友可以參閱:MySQL刪除表數(shù)據(jù)的方法、幾個(gè)比較重要的MySQL變量、MYSQL子查詢(xún)和嵌套查詢(xún)優(yōu)化實(shí)例解析等,希望對(duì)大家有所幫助。有什么問(wèn)題請(qǐng)留言,歡迎大家交流討論。

您可能感興趣的文章:
  • 創(chuàng)建mysql表分區(qū)的方法
  • MySQL的表分區(qū)詳解
  • Mysql數(shù)據(jù)表分區(qū)技術(shù)PARTITION淺析
  • MySQL中表分區(qū)技術(shù)詳細(xì)解析
  • MySQL數(shù)據(jù)表分區(qū)策略及優(yōu)缺點(diǎn)分析
  • MySQL高級(jí)特性——數(shù)據(jù)表分區(qū)的概念及機(jī)制詳解
  • mysql表分區(qū)的使用與底層原理詳解

標(biāo)簽:汕尾 防疫工作 溫州 浙江 撫順 固原 廣西 內(nèi)江

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《MySQL數(shù)據(jù)庫(kù)表分區(qū)注意事項(xiàng)大全【推薦】》,本文關(guān)鍵詞  MySQL,數(shù)據(jù)庫(kù),表,分區(qū),注意事項(xiàng),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《MySQL數(shù)據(jù)庫(kù)表分區(qū)注意事項(xiàng)大全【推薦】》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于MySQL數(shù)據(jù)庫(kù)表分區(qū)注意事項(xiàng)大全【推薦】的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    久久久精品国产一区二区三区| 亚洲区一区二| 日本伊人午夜精品| 一卡二卡在线观看| 日本亚洲免费观看| 国产精品久久久久久久久久久久| 三年片观看免费观看大全视频下载| 欧美高清dvd| 亚洲午夜久久久久| 免费av手机在线观看| 久久国产精品波多野结衣av| 国产成人三级在线观看视频| 亚洲h精品动漫在线观看| 艳母动漫在线免费观看| 极度色播免费播放视频| 下面一进一出好爽视频| 天堂网www天堂在线网| y111111国产精品久久婷婷| 自拍偷拍亚洲图片| 国产传媒久久久| 在线观看wwww| 国产免费成人av| 欧美一级特黄视频| 久久草在线视频| 天堂久久久久久| 亚洲激精日韩激精欧美精品| 欧美久久在线观看| av在线免费观看国产| 一区二区国产欧美| 9色在线视频| 秋霞午夜鲁丝一区二区| 国产亚洲一区二区三区啪| 国产福利91精品一区二区| 亚洲成人精品视频在线观看| 久久精品国产理论片免费| 亚洲色图美腿丝袜| 国产精品一级在线观看| 亚洲小说春色综合另类电影| 色总=综合色| 欧美精品久久96人妻无码| 精品久久香蕉国产线看观看亚洲| 国产视频网站在线观看| 人xxxx性xxxxx欧美| 午夜国产一区二区三区| 中文字幕欧美精品日韩中文字幕| 中文字幕乱码日本亚洲一区二区| 神马影院午夜我不卡影院| 天天射综合影视| 日本一区二区三区高清不卡| 激情五月综合网| 亚洲国产裸拍裸体视频在线观看乱了| 中文字幕一区二区三区有限公司| 一区在线电影| 这里只有视频精品| 免费大片黄在线观看视频网站| 国产劲爆久久| 在线成人一区| jizzjizzjizzjizz日本| 精品奇米国产一区二区三区| 久久影院免费观看| 欧美在线一级片| 国内自拍欧美激情| 99热在线国产| 精品国产乱码久久久久久浪潮| 国产成人精彩在线视频九色| 性色av一区二区三区在线观看| 欧美精品亚洲一区二区在线播放| 日韩影视高清在线观看| 黄色国产网站在线观看| 国产一区欧美| 最新二区三区av| 永久免费观看精品视频| 日本系列第一页| 美女露胸视频在线观看| 日本中文一区二区三区| 日韩成人视屏| 91青青国产在线观看精品| 国产熟女一区二区三区五月婷| 精品调教chinesegay| 韩国精品久久久999| 丰满少妇在线观看网站| 欧美xxxxxbbbbb| 99久久香蕉| 亚洲xxxx3d| 欧美成人精品福利网站| 亚洲影视在线| 欧美黄色一级| 欧美亚洲免费电影| 九九精品视频在线看| 国产av 一区二区三区| 99久久精品免费视频| 一级黄色录像大片| 欧美在线免费视屏| 波多结衣在线观看| 亚洲欧洲美洲在线综合| 蜜臀久久99精品久久久久久| 成人久久久久久| 九九热国产视频| 久久先锋资源网| 国产超碰精品在线观看| 小明精品国产一区二区三区| 国产人与zoxxxx另类91| 欧美日韩免费观看中文| 久久久久久久久久网站| heyzo一区| 国产精品主播视频| 欧美激情 国产精品| 久久本道综合色狠狠五月| 国产精品高清免费在线观看| wwww在线观看| 国产亚洲人成网站在线观看| 久久国产精品99久久久久久老狼| 欧美破处大片在线视频| 国产乱码字幕精品高清av| 亚洲av无码国产精品久久| 在线观看17c| 午夜成人影视| 色天天综合久久久久综合片| 人人超碰在线| 精品久久亚洲| 国产自产2019最新不卡| 成人做爰www免费看视频网站| 成人影院午夜久久影院| 午夜激情av在线| 欧美特黄aaaaaa| 日韩黄色碟片| 日本久久精品视频| 青青草精品在线| 丝袜一区二区三区| 激情欧美一区二区三区黑长吊| 69xxx免费视频| 中文字幕jux大岛优香| 欧美精品 - 色网| 黄色av免费在线播放| 成人黄网18免费观看的网站| 欧美写真视频一区| 成人做爰www免费看视频网站| 亚洲精品动态| 久久婷婷国产麻豆91| 免费国产羞羞网站美图| 国产精品二三区| 性折磨bdsm欧美激情另类| 欧美激情中文网| 蜜桃视频一日韩欧美专区| 精品福利网址导航| 国产农村妇女精品久久| 影音先锋电影在线观看| 国产传媒欧美日韩成人精品大片| 亚洲少妇一区二区三区| 欧美色图一区二区三区| 777午夜精品视频在线播放| 蜜桃av在线| 国产porn视频| 99精品久久久| 国产精品1000| 瑟瑟视频在线看| 美女免费视频一区二区| 国内av在线播放| 黄色性视频网站| 欧美日本一区二区三区| 91中文字幕一区| 亚洲熟女一区二区| 高潮毛片又色又爽免费| 国产精东传媒成人av电影| 噜噜噜噜噜在线视频| 99热精品久久| 最新国产露脸在线观看| 日韩亚洲第一页| 亚洲第一香蕉网| 99九九99九九九视频精品| 亚洲日本护士毛茸茸| 91精品导航| www.九九热.com| 四虎成人免费| 91精品国产丝袜白色高跟鞋| 亚洲精品视频自拍| 日韩欧美一区二区视频在线播放| 大肉大捧一进一出好爽视频| 国产偷国产偷亚洲高清97cao| 亚洲va电影大全| 国产精品久久中文字幕| 国产精品国产三级欧美二区| 99爱视频在线| 国产精品国产精品国产专区| 97se亚洲国产一区二区三区| julia一区二区三区中文字幕| 中文字幕xxxx| 在线观看日韩片| 日韩三级电影免费观看| 国产精品福利在线观看播放| 国产亚洲在线观看| 96久久精品| 欧美激情视频网站| 国产精品色婷婷在线观看| 国产亚洲第一伦理第一区| 日韩视频在线观看国产| 懂色av中文一区二区三区| 欧美大胆视频| 1024精品久久久久久久久| 精品一区欧美| 久草成人资源| 大尺度做爰床戏呻吟舒畅| 一区二区三区午夜探花| 激情视频网站在线播放色| 亚洲天堂第一区| 国产精品手机在线| 精品无人区太爽高潮在线播放| 欧美成人亚洲成人日韩成人| 亚洲春色在线视频| 午夜免费精品视频| 亚洲电影免费观看| 国产精品网站免费| 网址你懂得在线观看| 538国产视频| 中国人与牲禽动交精品| 日本在线人成| 国产jizz| 久久免费看少妇高潮v片特黄| 国产一卡2卡3卡4卡网站免费| 欧美激情一二三| 亚洲v日韩v欧美v综合| 妖精视频一区二区三区| 亚洲成年人电影| 国产主播在线观看| 一区二区日韩欧美| 免费在线观看av电影| 免费看成人a| 日韩视频在线免费播放| 精品一级视频| 亚洲在线免费观看| 成人在线播放| 国产精品一区二区av影院萌芽| 91精品国产一区| 在线观看黄网站免费继续| 明星裸体视频一区二区| 欧美日韩电影在线播放| 亚洲www啪成人一区二区麻豆| 欧美丝袜丝nylons| 一区二区三区无码高清视频| 久久99国产精品久久| 日韩精品四区| 国内免费精品永久在线视频| 欧美一区2区视频在线观看| 国产精品一在线观看| 欧美日韩亚洲高清一区二区| 日韩亚洲精品在线| 精品中文字幕不卡在线视频| 欧美成人久久久| 四虎精品在线观看| 日韩成人av影院| 色婷婷激情久久| 国产欧美综合色| 都市激情综合| 欧美一级欧美三级在线| 亚洲综合伊人久久大杳蕉| 在线亚洲色图| 欧美日韩一级在线| 日韩a级作爱片一二三区免费观看| 最新在线黄色网址| 九九九久久久| 亚洲а∨精品天堂在线| 欧美伦理视频在线观看| 成人xvideos免费视频| 国产精品自产拍在线网站| 小香蕉视频在线| 国产区在线观看成人精品| 日韩一级精品视频在线观看| 亚洲黄色av片| 日韩精品综合一本久道在线视频| 国产美女在线观看| 婷婷国产精品| 中国女人真人一级毛片| 亚洲欧美日韩成人网| 日韩欧美一区二区一幕| 中文字幕色视频| 久色乳综合思思在线视频| 黄色在线免费观看| 成视频在线免费观看| 一本色道久久综合狠狠躁篇怎么玩| 久久精品国产精品亚洲精品色| 精品一区二区三区欧美| 中文字幕精品一区二区三区精品| 网站在线你懂的| 新欧美整片sss第一页| 久久久久久久综合日本| 精品国产一区二区三区四区| 真实国产乱子伦精品一区二区三区| 国产高清一区二区三区| 国产精品极品| 国产亚洲自拍av| 国产suv精品一区| 国产sm主人调教女m视频| 在线日韩av| 精品国产一区二区三区不卡在线| 精品毛片乱码1区2区3区| 国产精品久久久久久久久久久免费看| 波多野结衣的一区二区三区| 影音先锋男人资源站| 国产精品久久看| 激情av在线| www.老鸭窝.com| 两女双腿交缠激烈磨豆腐| 不卡一区2区| 美女脱光内衣内裤视频久久网站| 青青草国产成人a∨下载安卓| 亚洲热在线观看| 亚瑟一区二区三区四区| 疯狂做受xxxx欧美肥白少妇| 再深点灬舒服灬太大了添少妇视频| 国产熟女一区二区三区五月婷| 日本高清视频在线观看| 国产精品啊v在线| 久久婷婷五月综合色丁香| 欧美成人高清| 国产不卡在线视频| 日韩精品视频中文在线观看| 亚洲国产二区| 日本免费视频在线观看| 亚洲国产裸拍裸体视频在线观看乱了中文| 国产亚洲成av人在线观看导航| 视频成人永久免费视频| 91蝌蚪91九色| 亚洲精品一区二区口爆| 国产精品自拍网站| 亚洲av无日韩毛片久久| 99久久精品国产一区色| 国内精品400部情侣激情| 亚洲欧美久久久久一区二区三区|