1. 程式人生 > >MySQL 分割槽介紹總結

MySQL 分割槽介紹總結

介紹

     分割槽是指根據一定的規則將一個大表分解成多個更小的部分,這裡的規則一般就是利用分割槽規則將表進行水平切分;邏輯上沒有發生變化但實際上表已經被拆分成了多個物理物件,每個分成被劃分成了一個獨立的物件。相對於沒有分割槽的當個表而言分割槽的表有很多的優勢包括: 併發統計查詢、快速歸檔刪除分割槽資料、分散儲存、查詢效能更佳。

mysql5.7以後查詢語句支援指定分割槽例如:“ SELECT * FROM t PARTITION (p0,p1) WHERE c < 5 ”指定分割槽同樣適用DELETEINSERTREPLACEUPDATE, and LOAD DATALOAD XML

.

資料庫版本:mysql5.7.12

是否支援分割槽

SHOW PLUGINS ;

查詢partition的的狀態是active就代表支援分割槽,如果是原始碼安裝的話在編譯的過程中要新增“-DWITH_PARTITION_STORAGE_ENGINE=1 \”。

注意: MERGECSV, or FEDERATED儲存引擎不支援分割槽,同一個表所有的分割槽必須使用相同的儲存引擎,不能分割槽1使用MYISAM分割槽2又使用INNODB;不同的分割槽表可以是不同的儲存引擎。

分割槽介紹

目前mysql可用的分割槽型別主要有以下幾種:

RANGE分割槽:基於一個給定的連續區間範圍,RANGE主要是基於整數的分割槽,對於非整形的欄位需要利用表示式將其轉換成整形。

LIST分割槽:是基於列出的列舉值列表進行分割槽。

COLUMNS分割槽:可以無需通過表示式進行轉換直接對非整形欄位進行分割槽,同時COLUMNS分割槽還支援多個欄位組合分割槽,只有RANGELIST存在COLUMNS分割槽,COLUMNS是RANGE和LIST分割槽的升級。

HASH分割槽:基於給定的分割槽個數,將資料分配到不同的分割槽,HASH分割槽只能針對整數進行HASH,對於非整形的欄位只能通過表示式將其轉換成整數。

KEY分割槽:支援除text和BLOB之外的所有資料型別的分割槽,key分割槽可以直接基於欄位做分割槽無需轉換成整數。

說明

1.注意分割槽名的大小寫敏感問題,和關鍵字問題。

2.無論哪種分割槽型別,要麼分割槽表中沒有主鍵或唯一鍵,要麼主鍵或唯一鍵包含在分割槽列裡面,對於存在主鍵或者唯一鍵的表不能使用主鍵或者唯一鍵之外的欄位作為分割槽欄位。

3.5.7以前的版本顯示分割槽的執行計劃使用:explain PARTITIONS;5.7以後直接執行:explain

4.沒有強制要求分割槽列非空,建議分割槽的列為NOT NULL的列;在RANGE 分割槽中如果往分割槽列中插入NULL值會被當作最小的值來處理,在LIST分割槽中NULL值必須在列舉列表中否則插入失敗,在HASH/KEY分割槽中NULL值會被當作0來處理。

5.基於時間型別的欄位的轉換函式mysql提供了"YEAR(),MONTH(),DAY(),TO_DAYS(),TO_SECONDS(),WEEKDAY(),DAYOFYEAR()"

6.拆分合並分割槽後會導致修改的分割槽的統計資訊失效,沒有修改的分割槽的統計資訊還在,不影響新插入的值加入到統計資訊;這時需要對錶執行Analyze操作.

7.針對非整形欄位進行RANG\LIST分割槽建議使用COLUMNS分割槽。

刪除增加分割槽

在每個分割槽內容介紹中詳細介紹了每種分割槽的用法,但是都是介紹在建立表的時候建立分割槽和修改刪除分割槽單個,也可以在一張已經存在的表中加入分割槽,可以一次性刪除整個表的分割槽。

1.移除表的分割槽

ALTER TABLE tablename
REMOVE PARTITIONING ;

注意:使用remove移除分割槽是僅僅移除分割槽的定義,並不會刪除資料和drop PARTITION不一樣,後者會連同資料一起刪除

2.對已經存在記錄的表建立分割槽,以增加range分割槽為例,和建立表建分割槽的語法一樣。

ALTER TABLE `tb_partition`.`tb_varchar` 
PARTITION BY RANGE(id) PARTITIONS 3( PARTITION part0 VALUES LESS THAN (5000),  PARTITION part1 VALUES LESS THAN (10000),  PARTITION part2 VALUES LESS THAN (MAXVALUE)) ;

注意:對已有的表建立分割槽之後,資料會按照分割槽的定義分佈到各個分割槽檔案當中

分割槽系列文章: 

總結

具體的每個分割槽的詳細介紹參考接下來的各分割槽詳解。一個表只能存在一種分割槽形式,如果對一張表建立多個分割槽後一個分割槽會替換掉前一個分割槽。 

相關推薦

MySQL 分割槽介紹總結

介紹      分割槽是指根據一定的規則將一個大表分解成多個更小的部分,這裡的規則一般就是利用分割槽規則將表進行水平切分;邏輯上沒有發生變化但實際上表已經被拆分成了多個物理物件,每個分成被劃分成了一個獨立的物件。相對於沒有分割槽的當個表而言分割槽的表有很多的優勢包括: 併發統計查詢、快速歸檔刪除分割槽資

MySql分割槽學習總結三:HASH,KEY

在本次章節介紹HASH分割槽和KEY分割槽 HASH分割槽 HASH分割槽的一大特點就是可以更平均的將資料分散到各個分割槽中,不會像RANGE分割槽一樣資料可能會集中在一個分割槽中。HASH分割槽簡單來說是基於取模運算結果進行的分割槽。HASH分割槽分為常規分割槽和線性分割槽。但是常

MySql分割槽學習總結二:RANGE分割槽,LIT分割槽

MySql分割槽學習總結二:RANGE,LIST RANGE分割槽介紹 在第一節中已經簡單的提到過,按照RANGE分割槽的表示利用取值範圍將資料分成區,區間是連續且不能相互疊加的。這個比較好理解,比如我按學號分割槽,學號在1-99的分在一個區內,在100-199的分在另一個區內,這樣

MySql分割槽學習總結一:分割槽概述

MySql分割槽學習總結一:分割槽概述 通過看書和查資料對mysql的分割槽進行了簡單瞭解。稱還有映像記錄一下,以便將來使用時回顧。 分割槽簡述 什麼是分割槽? MySql從5.1以後開始支援分割槽功能。分割槽就是根據一定的規則,將資料庫中的表分為多個更小的部分。但在邏輯上,還是

Mysql分割槽介紹

分割槽: 分割槽的功能不是在儲存引擎層實現的。因此不只是InnoDB才支援分割槽。MyISAM、NDB都支援分割槽操作。 分割槽的過程是將一個表或者索引分解為多個更小、更可管理的部分。從邏輯上將,只有一個表或者索引,但是在物理上這個表或索引可能由數十個物理分

MySQL分割槽表(總結

4.13 只有RANG和LIST分割槽能進行子分割槽。HASH和KEY分割槽不能進行子分割槽。 4.14 分割槽表不支援Key caches。 SQL程式碼 mysql> SET GLOBAL keycache1.key_buffer_size=128*1024;   Query OK, 0 rows

mysql常用命令總結

ble 刪除 常用 ima ces prim left 列名 mysq 一、約束操作 增加主鍵約束 alter table 表名 add constraint 約束名 primary key(列名) 增加外鍵約束 alter table 表名 add constrain

MySQL優化大總結

tab 批量 subst 連續 占用 nvarchar src 最好 較差 1.要盡量避免全表掃描,首先應考慮在 where 及 order by 涉及的列上建立索引。 2.應盡量避免在 where 子句中對字段進行 null 值判斷,否則將導致引擎放棄使用索引而進行全表掃

Mysql亂碼問題總結

問題總結 tails sql 問題 研究 .net cnblogs article csdn 這兩天研究了下Mysql的字符集編碼和排序規則,有個很典型的問題就是亂碼問題。所以小記一下。 http://www.jianshu.com/p/4c6a27542df4 http:

17.1 MySQL主從介紹17.2 準備工作17.3 配置主17.4 配置從17.5 測試主從同步

mysql 17.1 主從介紹 - 17.1 MySQL主從介紹 - 17.2 準備工作 - 17.3 配置主 - 17.4 配置從 - 17.5 測試主從同步 # 17.1 MySQL主從介紹 - MySQL主從又叫做Replication、AB復制。簡單講就是A和B兩臺機器做主從後,在A上

MySQL主從介紹、準備工作、配置主、配置從、測試主從同步

mysql主從復制MySQL主從介紹 MySQL主從又叫做Replication、AB復制。簡單講就是A和B兩臺機器做主從後,在A上寫數據,另外一臺B也會跟著寫數據,兩者數據實時同步。MySQL主從是基於binlog的,主上須開啟binlog才能進行主從。主從過程:需要保持數據的一致性,才能復制數據1、

mysql索引介紹

lob exp tab 系統 存取 io操作 內存 html 失效 0.索引的概念 索引是一種特殊的文件(InnoDB數據表上的索引是表空間的一個組成部分),它們包含著對數據表裏所有記錄的引用指針。好比是一本書前面的目錄,能加快數據庫的查詢速度。 無論是Myisam和Inn

Mysql索引介紹及常見索引的區別

掃描 varchar mysql查詢 運算 最優 慢慢 對比 非聚集索引 單個 關於MySQL索引的好處,如果正確合理設計並且使用索引的MySQL是一輛蘭博基尼的話,那麽沒有設計和使用索引的MySQL就是一個人力三輪車。對於沒有索引的表,單表查詢可能幾十萬數據就是瓶頸,而通

MySQL主從介紹、準備工作、準備工作、配置從、測試主從同步

pos 相同 sel png mysql主從配置 hang server grant chkconfig 17.1 MySQL主從介紹 MySQL主從又叫做Replication、AB復制。簡單講就是A和B兩臺機器做主從後,在A上寫數據,另外一臺B也會跟著寫數據,兩者數據

mysql主從介紹、 配置主、配置從

報錯 col 還要 type 大致 cee img 技術分享 一個 mysql主從介紹 MySQL主從又叫做Replication、AB復制。簡單講就是A和B兩臺機器做主

數據庫 之 Mysql日誌介紹

識別 sys 很慢 stop spa str int 設置 event 1 概述本文將介紹如下Mysql的六種日誌的相關概念查詢日誌:general_log慢查詢日誌:log_slow_queries錯誤日誌:log_error, log_warnings二進制日誌:bi

MySQL異常故障總結

數據庫 linux 臨時表 SQL語句 優化 在2017年裏,項目上的MySQL出了幾個問題,記錄總結一下,給自己一個教訓! 廢話不多說了,直接進入問題主題: 問題一:MySQL單表千萬級數據量"add"字段異常分析 問題描述:項目一個新功能,需要對有1200w+的表&

mysql 主從介紹

mysql 主從介紹binlog 文件記錄日誌 是一個二進制文件主上需開啟binlog 才能開始主從relaylog 終進日誌 應用場景 做一個數據的備份 1.主做讀寫操作 假如硬件損壞 可以立即提供服務 2. 做備份 從

MySQL主從介紹及配置

MySQL主從介紹及配置17.1 MySQL主從介紹 17.2 準備工作 17.3 配置主 17.4 配置從 17.5 測試主從同步 MySQL主從介紹及配置

MySQL分區總結

explain 測試 myisam sql 服務器 list分區 let category 基於 優點 前言:分區是指根據一定的規則,數據庫把一個表分解成多個更小的,更容易管理的部分。分區對應用來說是完全透明的,不影響應用的業務邏輯。 MySQL分區的優點:   1、和