国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

Mysql數據表分區技術PARTITION淺析

2024-07-24 12:47:07
字體:
來源:轉載
供稿:網友

在這一章節里, 我們來了解下 Mysql 中的分區技術 (RANGE, LIST, HASH)
 
Mysql 的分區技術與水平分表有點類似, 但是它是在邏輯層進行的水平分表, 對于應用而言它還是一張表, 換句話說: 分區不是實際真正的對一張表進行拆分,分區之后表還是一個表,它是把存儲文件進行拆分。

在 Mysql 5.1(后) 有了幾種分區類型:
 
RANGE分區: 基于屬于一個給定連續區間的列值, 把多行分配給分區

LIST分區: 類似于按 RANGE 分區, 區別在于 LIST 分區是基于列值匹配一個離散值集合中的某個值來進行選擇

HASH分區: 基于用戶定義的表達式的返回值來進行選擇分區, 該表達式使用將要插入到表中的這些行的列值進行計算, 這個函數可以包含 Mysql 中有效的、產生非負整數值的任何表達式

KEY分區: 累世于按 HASH 分區, 區別在于 KEY 分區只支持計算一列或多列, 且 Mysql 服務器提供其自身的哈希函數
 
分區應該注意的事項:

1、 做分區時,要么不定義主鍵,要么把分區字段加入到主鍵中
2、 分區字段不能為NULL,要不然怎么確定分區范圍呢,所以盡量 NOT NULL
 
首先你可以查看下你的 Mysql 版本是否支持 PARTITION

復制代碼 代碼如下:

mysql> show plugins;
 
| partition    | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |

或者:
復制代碼 代碼如下:

mysql> show variables like "%part%";
 
+-------------------+-------+
| Variable_name     | Value |
+-------------------+-------+
| have_partitioning | YES   |
+-------------------+-------+

RANGE 分區
 
假定你創建了一個如下的表, 該表保存有20家音像店的職員記錄, 這20家音像店的編號從1到20。 如果你想將其分成4個小分區, 那么你可以采用RANGE分區, 創建的數據庫表如下:
復制代碼 代碼如下:

mysql-> 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
     -> ) ENGINE=Myisam DEFAULT CHARSET=utf8
     -> 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)
     -> );
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 绥宁县| 汶上县| 临沂市| 武邑县| 锦屏县| 柯坪县| 聂拉木县| 乐业县| 迁安市| 玉门市| 和林格尔县| 福鼎市| 贡嘎县| 含山县| 射阳县| 静安区| 山西省| 乌恰县| 城口县| 永福县| 嘉祥县| 岐山县| 南京市| 中山市| 枞阳县| 景洪市| 永清县| 兴和县| 永春县| 浠水县| 邵阳市| 郁南县| 安丘市| 金寨县| 沁水县| 景宁| 安阳县| 成武县| 麟游县| 曲水县| 繁峙县|