欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL分區(qū)之LIST分區(qū)詳解

 更新時(shí)間:2022年04月13日 10:44:18   作者:pursuer.chen  
mysql分區(qū)之LIST分區(qū)講解?MySQL中的LIST分區(qū)在很多方面類似于RANGE分區(qū),下面這篇文章主要給大家介紹了關(guān)于MySQL分區(qū)之LIST分區(qū)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下

介紹

LIST分區(qū)和RANGE分區(qū)非常的相似,主要區(qū)別在于LIST是枚舉值列表的集合,RANGE是連續(xù)的區(qū)間值的集合。二者在語法方面非常的相似。同樣建議LIST分區(qū)列是非null列,否則插入null值如果枚舉列表里面不存在null值會(huì)插入失敗,這點(diǎn)和其它的分區(qū)不一樣,RANGE分區(qū)會(huì)將其作為最小分區(qū)值存儲(chǔ),HASH\KEY分為會(huì)將其轉(zhuǎn)換成0存儲(chǔ),主要LIST分區(qū)只支持整形,非整形字段需要通過函數(shù)轉(zhuǎn)換成整形;5.5版本之后可以不需要函數(shù)轉(zhuǎn)換使用LIST COLUMN分區(qū)支持非整形字段,在COLUMN分區(qū)中有詳細(xì)的講解。

一、創(chuàng)建分區(qū)

List各個(gè)分區(qū)枚舉的值只需要不相同即可,沒有固定的順序。

CREATE TABLE tblist (
    id INT NOT NULL,
    store_id INT
)
PARTITION BY LIST(store_id) (
    PARTITION a VALUES IN (1,5,6),
    PARTITION b VALUES IN (2,7,8),
    PARTITION c VALUES IN (3,9,10),
    PARTITION d VALUES IN (4,11,12)
);

 

SELECT PARTITION_NAME,PARTITION_METHOD,PARTITION_EXPRESSION,PARTITION_DESCRIPTION,TABLE_ROWS,SUBPARTITION_NAME,SUBPARTITION_METHOD,SUBPARTITION_EXPRESSION 
FROM information_schema.PARTITIONS WHERE TABLE_SCHEMA=SCHEMA() AND TABLE_NAME='tblist';

1.插入數(shù)據(jù)

insert into tblist(id,store_id) values(1,1),(7,7); 

往a、b兩個(gè)分區(qū)中各插入一條記錄

2.插入不在列表中的值

當(dāng)往分區(qū)中插入不在枚舉列表中的值是會(huì)插入失敗,插入null值如果null值不在枚舉列表中也同樣失敗

二、分區(qū)管理

1.增加分區(qū)

ALTER TABLE tblist ADD PARTITION (PARTITION e VALUES IN (20));

注意:不能增加包含現(xiàn)有任意值的分區(qū)。

2.合并分區(qū)

ALTER TABLE tblist REORGANIZE PARTITION  a,b INTO (PARTITION m VALUES IN (1,5,6,2,7,8));

將分區(qū)a,b合并為分區(qū)m

注意:同RANGE分區(qū)一樣,只能合并相鄰的幾個(gè)分區(qū),不能跨分區(qū)合并。例如不能合并a,c兩個(gè)分區(qū),只能通過合并a,b,c

3.拆分分區(qū)

ALTER TABLE tblist REORGANIZE PARTITION  a,b,c INTO 
(PARTITION n VALUES IN (1,5,6,3,9,10),
PARTITION m VALUES IN (2,7,8));

ALTER TABLE tblist REORGANIZE PARTITION  n INTO 
    ( PARTITION a VALUES IN (1,5,6),
    PARTITION b VALUES IN (3,9,10));

經(jīng)過兩輪的拆分,枚舉列表(3,9,10)排到了(2,7,8)的前面去了;其實(shí)是這樣的,一開始合并abc成nm兩個(gè)分區(qū)由于n中的枚舉值小于m所以n在m的前面,后面再拆分n分區(qū)由于n分區(qū)在m分區(qū)的前面所以拆分出來的分區(qū)也是排在m分區(qū)的前面,由于a分區(qū)的值小于b分區(qū)的值所以a排在b的前面。

注意:1.在5.7.12版本中測(cè)試發(fā)現(xiàn),合并和拆分分區(qū)重新定義的枚舉值可以不是原來的值,如果原來的枚舉值包含了數(shù)據(jù)而新合并或拆分的分區(qū)枚舉值又不不包含原來的枚舉值會(huì)造成數(shù)據(jù)丟失。雖然不知道為什么mysql不會(huì)禁止該行為,但是人為的要求無論是合并還是拆分分區(qū)枚舉值保持不變,或者只能增加不能減少,這樣能保證數(shù)據(jù)不丟失。

2.合并和拆分后的分區(qū)由于是相鄰的分區(qū)進(jìn)行合并和拆分會(huì)根據(jù)原本的分區(qū)的值新的分區(qū)也會(huì)在原本的分區(qū)的順序位置。

4.刪除分區(qū)

ALTER TABLE tblist DROP PARTITION e;

注意:刪除分區(qū)同時(shí)會(huì)將分區(qū)中的數(shù)據(jù)刪除,同時(shí)枚舉的list值也被刪除,后面無法往表中插入該值的數(shù)據(jù)。

三、其它分區(qū)

1.對(duì)時(shí)間字段進(jìn)行分區(qū)

CREATE TABLE listdate (
    id INT NOT NULL,
    hired DATETIME NOT NULL
)
PARTITION BY LIST( YEAR(hired) ) 
(
    PARTITION a VALUES IN (1990),
    PARTITION b VALUES IN (1991),
    PARTITION c VALUES IN (1992),
    PARTITION d VALUES IN (1993)
);

ALTER TABLE listdate ADD INDEX ix_hired(hired);

INSERT INTO listdate() VALUES(1,'1990-01-01 10:00:00'),(1,'1991-01-01 10:00:00'),(1,'1992-01-01 10:00:00');
EXPLAIN SELECT * FROM listdate WHERE hired='1990-01-01 10:00:00';

LIST分區(qū)也支持對(duì)非整形的時(shí)間類型字段的轉(zhuǎn)換分區(qū)。

四、移除表的分區(qū)

ALTER TABLE tablename
REMOVE PARTITIONING ;

注意:使用remove移除分區(qū)是僅僅移除分區(qū)的定義,并不會(huì)刪除數(shù)據(jù)和drop PARTITION不一樣,后者會(huì)連同數(shù)據(jù)一起刪除

參考:

RANGE分區(qū):http://www.dbjr.com.cn/article/244269.htm

COLUMN分區(qū):http://www.dbjr.com.cn/article/96515.htm

HASH分區(qū):http://www.dbjr.com.cn/article/244277.htm

KEY分區(qū):http://www.dbjr.com.cn/article/244282.htm

子分區(qū):http://www.dbjr.com.cn/article/244294.htm

指定各分區(qū)路徑:http://www.dbjr.com.cn/article/244296.htm

分區(qū)索引以及分區(qū)介紹總結(jié):http://www.dbjr.com.cn/article/244300.htm

總結(jié)

重新定義LIST分區(qū)時(shí)只能重新定義相鄰的分區(qū),不能跳過分區(qū)定義,重新定義的分區(qū)列表枚舉必須包含原分區(qū)的列表枚舉,如果丟失某個(gè)包含記錄的枚舉值那么數(shù)據(jù)也將被刪除;重新定義分區(qū)不能改變分區(qū)的類型。

到此這篇關(guān)于MySQL分區(qū)之LIST分區(qū)的文章就介紹到這了,更多相關(guān)MySQL LIST分區(qū)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺談MySQL排序原理與案例分析

    淺談MySQL排序原理與案例分析

    這篇文章主要介紹了淺談MySQL排序原理與案例分析的相關(guān)資料,需要的朋友可以參考下
    2016-03-03
  • mysql仿oracle的decode效果查詢

    mysql仿oracle的decode效果查詢

    今天遇到群里發(fā)的一個(gè)問題,覺得有點(diǎn)意思,發(fā)上來看一下
    2011-04-04
  • Linux下Mysql5.6 二進(jìn)制安裝過程

    Linux下Mysql5.6 二進(jìn)制安裝過程

    這篇文章主要介紹了Linux下Mysql5.6 二進(jìn)制安裝過程,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-06-06
  • MYSQL中解析json格式數(shù)據(jù)方法示例

    MYSQL中解析json格式數(shù)據(jù)方法示例

    這篇文章主要給大家介紹了關(guān)于MYSQL中解析json格式數(shù)據(jù)的相關(guān)資料,JSON是一種輕量級(jí)的數(shù)據(jù)交換格式,采用了獨(dú)立于語言的文本格式,類似XML,但是比XML簡單,易讀并且易編寫,需要的朋友可以參考下
    2023-08-08
  • Mysql:The user specified as a definer (''xxx@''%'') does not exist的解決方案

    Mysql:The user specified as a definer (''xxx@''%'') does not

    今天小編就為大家分享一篇關(guān)于Mysql:The user specified as a definer ('xxx@'%') does not exist的解決方案,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • 詳細(xì)聊聊MySQL中慢SQL優(yōu)化的方向

    詳細(xì)聊聊MySQL中慢SQL優(yōu)化的方向

    由于在MySQL日常查詢中,查詢類型的語句占慢sql的大部分,所以下面這篇文章主要給大家介紹了關(guān)于MySQL中慢SQL優(yōu)化方向的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2021-08-08
  • mysql中取出json字段的小技巧

    mysql中取出json字段的小技巧

    這篇文章主要介紹了mysql中取出json字段的小技巧,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • MyCat環(huán)境搭建詳細(xì)教程

    MyCat環(huán)境搭建詳細(xì)教程

    這篇文章主要介紹了MyCat環(huán)境搭建詳細(xì)教程的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • DataGrip連接Mysql并創(chuàng)建數(shù)據(jù)庫的方法實(shí)現(xiàn)

    DataGrip連接Mysql并創(chuàng)建數(shù)據(jù)庫的方法實(shí)現(xiàn)

    本文主要介紹了DataGrip連接Mysql并創(chuàng)建數(shù)據(jù)庫的方法實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • MySQL臨時(shí)表的簡單用法介紹

    MySQL臨時(shí)表的簡單用法介紹

    這篇文章給大家簡單介紹了MySQL臨時(shí)表的簡單用法,對(duì)此有需要的朋友可以跟著學(xué)習(xí)操作下。
    2018-06-06

最新評(píng)論