真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

初步了解Mysql分區(qū)知識

本文主要給大家介紹MySQL 分區(qū)知識,文章內(nèi)容都是筆者用心摘選和編輯的,具有一定的針對性,對大家的參考意義還是比較大的,下面跟筆者一起了解下Mysql 分區(qū)知識吧。

創(chuàng)新互聯(lián)于2013年創(chuàng)立,公司以成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、系統(tǒng)開發(fā)、網(wǎng)絡(luò)推廣、文化傳媒、企業(yè)宣傳、平面廣告設(shè)計(jì)等為主要業(yè)務(wù),適用行業(yè)近百種。服務(wù)企業(yè)客戶超過千家,涉及國內(nèi)多個(gè)省份客戶。擁有多年網(wǎng)站建設(shè)開發(fā)經(jīng)驗(yàn)。為企業(yè)提供專業(yè)的網(wǎng)站建設(shè)、創(chuàng)意設(shè)計(jì)、宣傳推廣等服務(wù)。 通過專業(yè)的設(shè)計(jì)、獨(dú)特的風(fēng)格,為不同客戶提供各種風(fēng)格的特色服務(wù)。

一、分區(qū)類型
1. RANGE類型(范圍分區(qū))

通過范圍的方式進(jìn)行分區(qū), 為每個(gè)分區(qū)給出一定的范圍, 范圍必須是連續(xù)的并且不能重復(fù), 使用VALUES LESS THAN操作符

啥意思呢? 就是range類型就是一種范圍, 比如, 從1-10, 11-20, 21-30這種的方式分區(qū), 1-10就在一個(gè)分區(qū)里, 11-20是另外一個(gè)分區(qū), 但是看起來他們還是同一個(gè)表

咱們看一個(gè)創(chuàng)建的例子

CREATE TABLE `t1` (
  `id` int(11) NOT NULL,
  `uid` int(11) NOT NULL COMMENT '用戶id',
  `score` int(3) NOT NULL DEFAULT '0' COMMENT '分?jǐn)?shù)',
  PRIMARY KEY (`id`,`score`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
PARTITION BY RANGE (score)
(PARTITION p0 VALUES LESS THAN (10) ENGINE = InnoDB,
 PARTITION p1 VALUES LESS THAN (20) ENGINE = InnoDB,
 PARTITION p2 VALUES LESS THAN (30) ENGINE = InnoDB,
 PARTITION p3 VALUES LESS THAN (40) ENGINE = InnoDB)

創(chuàng)建了個(gè)t1表, 并且t1有四個(gè)分區(qū), 第一個(gè)分區(qū)p0的范圍是小于10的, 第二個(gè)是小于20的。這就是一個(gè)range分區(qū)的例子。

那為啥主鍵定義的是雙主鍵呢? 因?yàn)榉謪^(qū)鍵(score) 必須也是主鍵或者唯一鍵的一部分。

Range分區(qū)的詳細(xì)介紹請看Mysql 分區(qū)介紹(二) —— RANGE分區(qū)

2. LIST分區(qū)

LIST不同于RANGE分區(qū), 每個(gè)分區(qū)必須被顯式的定義, 每個(gè)分區(qū)是根據(jù)列值的成員在一組列表中的元素定義的

這說的有點(diǎn)亂, 還是直接看一個(gè)創(chuàng)建的例子吧

create table t2 (
    id int not null,
    uid int not null comment '用戶id',
    score int(3) not null default 0 comment '分?jǐn)?shù)',
    primary key(id, uid)
)
partition by list(uid) (
    partition p0 values in (1,3,5,7,9),
    partition p1 values in (2,4,6,8,10)
)

t2的分區(qū)鍵是uid, 有兩個(gè)分區(qū)(這個(gè)很明顯嘛), 如果uid in (1,3,5,7,9), 那么這條數(shù)據(jù)就會保存在p0中, 如果是2,4,6,8,10的話, 就會在p1中, 這就是LIST 分區(qū)

Range分區(qū)的詳細(xì)介紹請看Mysql 分區(qū)介紹(三) —— LIST分區(qū)

3. COLUMNS 分區(qū)

COLUMNS和以上兩種是很不一樣的, 這個(gè)是可以用多個(gè)分區(qū)鍵確定分區(qū)的。有兩種方式, RANGE COLUMNS 和 LIST COLUMNS

1. RANGE COLUMNS 分區(qū)

類似RANGE 分區(qū), 但是可以使用一個(gè)或多個(gè)字段值定義

不太好理解... 還是看例子吧

create table t3 (
    a int,
    b int,
    c char(3),
    d int
)
PARTITION BY RANGE COLUMNS(a,d,c) (
PARTITION p0 VALUES LESS THAN (5,10,'ggg'),
PARTITION p1 VALUES LESS THAN (10,20,'mmm'),
PARTITION p2 VALUES LESS THAN (15,30,'sss')
)

分區(qū)鍵有多個(gè), 并且都是范圍的, 就是RANGE COLUMNS 分區(qū)

RANGE COLUMNS分區(qū)的詳細(xì)介紹請看Mysql 分區(qū)介紹(四) —— RANGE COLUMNS分區(qū)

2. LIST COLUMNS 分區(qū)

Mysql 5.6開始支持LIST COLUMNS分區(qū), 可以開始使用多個(gè)列作為分區(qū)的鍵, 并且列的數(shù)據(jù)類型除了數(shù)字類型可以作為分區(qū)列; 你也可以使用字符串類型, DATE和DATETIME

還是看例子吧

CREATE TABLE customers_1 (
    first_name VARCHAR(25),
    last_name VARCHAR(25),
    street_1 VARCHAR(30),
    street_2 VARCHAR(30),
    city VARCHAR(15),
    renewal DATE
)
PARTITION BY LIST COLUMNS(city) (
    PARTITION pRegion_1 VALUES IN('Oskarshamn', 'H?gsby', 'M?nster?s'),
    PARTITION pRegion_2 VALUES IN('Vimmerby', 'Hultsfred', 'V?stervik'),
    PARTITION pRegion_3 VALUES IN('N?ssj?', 'Eksj?', 'Vetlanda'),
    PARTITION pRegion_4 VALUES IN('Uppvidinge', 'Alvesta', 'V?xjo')
);

LIST COLUMNS分區(qū)的詳細(xì)介紹請看Mysql 分區(qū)介紹(五) —— LIST COLUMNS分區(qū)

3. HASH分區(qū)

使用分區(qū)鍵去確保數(shù)據(jù)可以均勻的分布在一個(gè)預(yù)先確定數(shù)字的分區(qū)上, 在hash分區(qū)中, 無需顯式的指定分區(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;

HASH分區(qū)的詳細(xì)介紹請看Mysql 分區(qū)介紹(六) —— HASH分區(qū)

4. KEY分區(qū)

key分區(qū)類似hash分區(qū), 接受0個(gè)或多個(gè)列名, key分區(qū)的哈希函數(shù)由MySQL云服務(wù)器提供。NDB集群使用md5();使用其他存儲引擎的表,云服務(wù)器采用自己的內(nèi)部的哈希函數(shù)是基于相同的算法password()。

CREATE TABLE k1 (
    id INT NOT NULL PRIMARY KEY,
    name VARCHAR(20)
)
PARTITION BY KEY()
PARTITIONS 2;

KEY分區(qū)的詳細(xì)介紹請看Mysql 分區(qū)介紹(七) —— KEY分區(qū)

5. 子分區(qū)

子分區(qū)也稱為復(fù)合分區(qū), 在分區(qū)的基礎(chǔ)上進(jìn)一步進(jìn)行分區(qū)的方式

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

看完以上關(guān)于Mysql 分區(qū)知識,很多讀者朋友肯定多少有一定的了解,如需獲取更多的行業(yè)知識信息 ,可以持續(xù)關(guān)注我們的行業(yè)資訊欄目的。


分享標(biāo)題:初步了解Mysql分區(qū)知識
標(biāo)題網(wǎng)址:http://weahome.cn/article/igdpdo.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部