久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

Mysql表分區(qū)的操作方法

156次閱讀
沒有評論

共計 4744 個字符,預計需要花費 12 分鐘才能閱讀完成。

這篇文章主要講解了“Mysql 表分區(qū)的操作方法”,文中的講解內(nèi)容簡單清晰,易于學習與理解,下面請大家跟著丸趣 TV 小編的思路慢慢深入,一起來研究和學習“Mysql 表分區(qū)的操作方法”吧!

Mysql 表分區(qū)操作及相關操作  

將 ID 設為自增長 ID 
alter table pw_trade_record_temp change ID ID int(4) auto_increment; 

分區(qū)字段必需為主鍵,修改主鍵  

ALTER TABLE `pw_trade_record` 
DROP PRIMARY KEY, 
ADD PRIMARY KEY (`ID`, `TRADE_TIME`); 

直接在建表時創(chuàng)建表分區(qū)  

創(chuàng)建 range 分區(qū)  

create table emp 

(empno varchar(20) not null , 

empname varchar(20), 

deptno int, 

birthdate date, 

salary int 

partition by range(salary) 

partition p1 values less than (1000), 

partition p2 values less than (2000), 

partition p3 values less than maxvalue 

); 

以員工工資為依據(jù)做范圍分區(qū)。 

create table emp 

(empno varchar(20) not null , 

empname varchar(20), 

deptno int, 

birthdate date not null, 

salary int 

partition by range(year(birthdate)) 

partition p1 values less than (1980), 

partition p2 values less than (1990), 

partition p3 values less than maxvalue 

); 

以 year(birthdate) 表達式(計算員工的出生日期)作為范圍分區(qū)依據(jù)。這里最值得注意的是表達式必須有返回值下載地址    。 

創(chuàng)建 list 分區(qū)  

create table emp 

(empno  varchar(20) not null , 

empname varchar(20), 

deptno  int, 

birthdate date not null, 

salary int 

partition by list(deptno) 

partition p1 values in  (10), 

partition p2 values in  (20), 

partition p3 values  in  (30) 

); 

以部門作為分區(qū)依據(jù),每個部門做一分區(qū)。 

創(chuàng)建 hash 分區(qū)  

HASH 分區(qū)主要用來確保數(shù)據(jù)在預先確定數(shù)目的分區(qū)中平均分布。在 RANGE 和 LIST 分區(qū)中,必須明確指定一個給定的列值或列值集合應該保存在哪 個分區(qū)中;而在 HASH 分區(qū)中,MySQL 自動完成這些工作,你所要做的只是基于將要被哈希的列值指定一個列值或表達式,以及指定被分區(qū)的表將要被分割成的分區(qū)數(shù)量下載地址  。 

create table emp 

(empno varchar(20) not null , 

empname varchar(20), 

deptno int, 

birthdate date not null, 

salary int 

partition by hash(year(birthdate)) 

partitions 4; 

創(chuàng)建 key 分區(qū)  

按照 KEY 進行分區(qū)類似于按照 HASH 分區(qū),除了 HASH 分區(qū)使用的用戶定義的表達式,而 KEY 分區(qū)的哈希函數(shù)是由 MySQL 服務器提供,服務器使用其自己內(nèi)部的哈希函數(shù),這些函數(shù)是基于與 PASSWORD() 一樣的運算法則。“CREATE TABLE …PARTITION BY KEY”的語法規(guī)則類似于創(chuàng)建一個通過 HASH 分區(qū)的表的規(guī)則。它們唯一的區(qū)別在于使用的關鍵字是 KEY 而不是 HASH,并且 KEY 分區(qū)只采用一個或多個 列名的一個列表下載地址  。 

create table emp 

(empno varchar(20) not null , 

empname varchar(20), 

deptno int, 

birthdate date not null, 

salary int 

partition by key(birthdate) 

partitions 4; 

創(chuàng)建復合分區(qū)  

range – hash(范圍哈希) 復合分區(qū)  

create table emp 

(empno varchar(20) not null , 

empname varchar(20), 

deptno int, 

birthdate date not null, 

salary int 

partition by range(salary) 

subpartition by hash(year(birthdate)) 

subpartitions 3 

partition p1 values less than (2000), 

partition p2 values less than maxvalue 

); 

range- key 復合分區(qū)  

create table emp 

(empno varchar(20) not null , 

empname varchar(20), 

deptno int, 

birthdate date not null, 

salary int 

partition by range(salary) 

subpartition by key(birthdate) 

subpartitions 3 

partition p1 values less than (2000), 

partition p2 values less than maxvalue 

); 

list – hash 復合分區(qū)  

CREATE TABLE emp ( 

empno varchar(20) NOT NULL, 

empname varchar(20) , 

deptno int, 

birthdate date NOT NULL, 

salary int 

PARTITION BY list (deptno) 

subpartition by hash(year(birthdate)) 

subpartitions 3 

PARTITION p1 VALUES in  (10), 

PARTITION p2 VALUES in  (20) 

list – key 復合分區(qū)  

CREATE TABLE empk ( 

empno varchar(20) NOT NULL, 

empname varchar(20) , 

deptno int, 

birthdate date NOT NULL, 

salary int 

PARTITION BY list (deptno) 

subpartition by key(birthdate) 

subpartitions 3 

PARTITION p1 VALUES in  (10), 

PARTITION p2 VALUES in  (20) 

修改現(xiàn)有未分區(qū)的表,給表做分區(qū)  

ALTER TABLE `pw_trade_record` 
PARTITION BY RANGE(UNIX_TIMESTAMP(TRADE_TIME)) 

PARTITION p20160501 VALUES LESS THAN (UNIX_TIMESTAMP( 2016-05-01)), 
PARTITION pmax VALUES LESS THAN MAXVALUE); 

增加分區(qū)  
alter table pw_trade_record add partition (partition p20160518 values in (UNIX_TIMESTAMP( 2016-05-18))); 

刪除分區(qū) (一次性可刪除多個分區(qū)) 
alter table pw_trade_record drop partition p20140101,p20160501,…; 

刪除表的所有分區(qū)  
Alter table emp removepartitioning;– 不會丟失數(shù)據(jù)  

合并表分區(qū)  
示例:將表分區(qū) p20140101,p20160501 合并到 p20160501 分區(qū)中  
alter table pw_trade_record reorganize partition p20140101,p20160501 into 
(partition p20160501 values less than (UNIX_TIMESTAMP( 2016-05-18)), 
PARTITION pmax VALUES LESS THAN MAXVALUE 
); 

分解表分區(qū)  
示例:將表分區(qū) pmax 分解成 p20160518 和 pmax 兩個分區(qū)  
alter table pw_trade_record reorganize partition pmax into 
(partition p20160518 values less than (UNIX_TIMESTAMP( 2016-05-18)), 
PARTITION pmax VALUES LESS THAN MAXVALUE 
); 

查看分區(qū)表狀態(tài)  
select table_schema,table_name,partition_name,partition_ordinal_position,partition_method,partition_expression,partition_description,table_rows,avg_row_length,data_length from INFORMATION_SCHEMA.PARTITIONS where table_name= pw_trade_record  

重新定義 hash 分區(qū)表: 

Alter table emp partition by hash(salary)partitions 7;  —- 不會丟失數(shù)據(jù)  

重新定義 range 分區(qū)表: 

Alter table emp partitionbyrange(salary) 

partition p1 values less than (2000), 

partition p2 values less than (4000) 

); —- 不會丟失數(shù)據(jù)  

重建分區(qū): 

這和先刪除保存在分區(qū)中的所有記錄,然后重新插入它們,具有同樣的效果。它可用于整理分區(qū)碎片。 

ALTER TABLE emp rebuild partitionp1,p2; 

優(yōu)化分區(qū): 

如果從分區(qū)中刪除了大量的行,或者對一個帶有可變長度的行(也就是說,有 VARCHAR,BLOB,或 TEXT 類型的列)作了許多修改,可以使用“ALTER TABLE … OPTIMIZE PARTITION”來收回沒有使用的空間,并整理分區(qū)數(shù)據(jù)文件的碎片。 

ALTER TABLE emp optimize partition p1,p2; 

分析分區(qū): 

讀取并保存分區(qū)的鍵分布。 

ALTER TABLE emp analyze partition p1,p2; 

修補分區(qū): 

修補被破壞的分區(qū)。 

ALTER TABLE emp repairpartition p1,p2; 

檢查分區(qū): 

可以使用幾乎與對非分區(qū)表使用 CHECK TABLE 相同的方式檢查分區(qū)。 

ALTER TABLE emp CHECK partition p1,p2; 

這個命令可以告訴你表 emp 的分區(qū) p1,p2 中的數(shù)據(jù)或索引是否已經(jīng)被破壞。如果發(fā)生了這種情況,使用“ALTER TABLE … REPAIR PARTITION”來修補該分區(qū)。 

感謝各位的閱讀,以上就是“Mysql 表分區(qū)的操作方法”的內(nèi)容了,經(jīng)過本文的學習后,相信大家對 Mysql 表分區(qū)的操作方法這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是丸趣 TV,丸趣 TV 小編將為大家推送更多相關知識點的文章,歡迎關注!

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-08-03發(fā)表,共計4744字。
轉(zhuǎn)載說明:除特殊說明外本站除技術相關以外文章皆由網(wǎng)絡搜集發(fā)布,轉(zhuǎn)載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 梨树县| 永善县| 苗栗县| 宁强县| 尉犁县| 那坡县| 闽清县| 泰和县| 睢宁县| 湟中县| 小金县| 肇州县| 达日县| 北安市| 大埔县| 克拉玛依市| 普洱| 塔河县| 霍邱县| 济阳县| 图木舒克市| 象山县| 桃源县| 万盛区| 盈江县| 比如县| 宜君县| 太保市| 静海县| 青海省| 崇阳县| 溧水县| 多伦县| 伊宁市| 隆回县| 迁西县| 宁陵县| 文化| 治县。| 榆中县| 芦溪县|