MySQL分區(qū)分表
在高青等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè) 網(wǎng)站設(shè)計制作按需制作網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站制作,成都全網(wǎng)營銷,外貿(mào)營銷網(wǎng)站建設(shè),高青網(wǎng)站建設(shè)費用合理。
1.分表是將一個大表按照一定的規(guī)則分解成多張具有獨立存儲空間的實體表,每個表都對應(yīng)三個文件,MYD數(shù)據(jù)文件,.MYI索引文件,.frm表結(jié)構(gòu)文件
mysql分表分為垂直切分和水平切分
垂直切分是指數(shù)據(jù)表列的拆分,把一張列比較多的表拆分為多張表通常我們按以下原則進行垂直拆分:把不常用的字段單獨放在一張表;水平拆分是指數(shù)據(jù)表行的拆分,把一張的表的數(shù)據(jù)拆成多張表來存放。
水平拆分原則:通常情況下,我們使用hash、取模等方式來進行表的拆分
通過用ID取模的方法把數(shù)據(jù)分散到四張表內(nèi)Id%4= [0,1,2,3]
然后查詢,更新,刪除也是通過取模的方法來查詢
分表的幾種方式:
1)mysql集群
它并不是分表,但起到了和分表相同的作用。
2)預(yù)先估計會出現(xiàn)大數(shù)據(jù)量并且訪問頻繁的表,將其分為若干個表
根據(jù)一定的算法(如用hash的方式,也可以用求余(取模)的方式)讓用戶訪問不同的表。
3)利用merge存儲引擎來實現(xiàn)分表
如果要把已有的大數(shù)據(jù)量表分開比較痛苦,最痛苦的事就是改代碼,因為程序里面的sql語句已經(jīng)寫好了,用merge存儲引擎來實現(xiàn)分表,這種方法比較適合。
2、分區(qū)
分區(qū)和分表相似,都是按照規(guī)則分解表。不同在于分表將大表分解為若干個獨立的實體表,而分區(qū)是將數(shù)據(jù)分段劃分在多個位置存放,分區(qū)后,表還是一張表,但數(shù)據(jù)散列到多個位置了。
分區(qū)主要有兩種形式:
水平分區(qū)(Horizontal Partitioning)這種形式分區(qū)是對表的行進行分區(qū),所有在表中定義的列在每個數(shù)據(jù)集中都能找到,所以表的特性依然得以保持。
垂直分區(qū)(Vertical Partitioning)這種分區(qū)方式一般來說是通過對表的垂直劃分來減少目標(biāo)表的寬度,使某些特定的列被劃分到特定的分區(qū),每個分區(qū)都包含了其中的列所對應(yīng)的行。
創(chuàng)建測試數(shù)據(jù)庫
創(chuàng)建表
在表里面插入數(shù)據(jù),查看表的結(jié)構(gòu),表的數(shù)據(jù)
執(zhí)行insert*****語句可以以倍數(shù)增加數(shù)據(jù),查看創(chuàng)建的數(shù)據(jù)
進行分表,分為一個主表為back1,從表為back2,back3
INSERT_METHOD,此參數(shù)INSERT_METHOD = NO表示該表不能做任何寫入操作只作為查詢使用,INSERT_METHOD = LAST表示插入到最后的一張表里面。INSERT_METHOD = first表示插入到第一張表里面。
把數(shù)據(jù)分到兩個從表中,并且查看子表的數(shù)據(jù)
查看目錄數(shù)據(jù)里有沒有創(chuàng)建的表
分區(qū):
查看是否支持分區(qū)
mysql版本如果是5.6之前的使用第一個查看 5.6之后選擇第二個
在第二個查詢結(jié)果里查看是否支持分區(qū)
active表示支持分區(qū)
創(chuàng)建新的測試數(shù)據(jù)庫
創(chuàng)建數(shù)據(jù),創(chuàng)建一個范圍的分區(qū)表 maxvalue:從最大放入
插入數(shù)據(jù)
查看數(shù)據(jù)的目錄里有沒有分區(qū)
從系統(tǒng)庫中查看分區(qū)表的信息
mysql> select * from information_schema.partitions where table_schema='test2' and table_name='user'\G;
*************************** 1. row ***************************
TABLE_CATALOG: def
TABLE_SCHEMA: test2
TABLE_NAME: user
PARTITION_NAME: p0
SUBPARTITION_NAME: NULL
PARTITION_ORDINAL_POSITION: 1
SUBPARTITION_ORDINAL_POSITION: NULL
PARTITION_METHOD: RANGE
SUBPARTITION_METHOD: NULL
PARTITION_EXPRESSION: id
SUBPARTITION_EXPRESSION: NULL
PARTITION_DESCRIPTION: 3
TABLE_ROWS: 2
AVG_ROW_LENGTH: 8192
DATA_LENGTH: 16384
MAX_DATA_LENGTH: NULL
INDEX_LENGTH: 0
DATA_FREE: 0
CREATE_TIME: 2017-06-20 17:44:03
UPDATE_TIME: 2017-06-20 17:45:04
CHECK_TIME: NULL
CHECKSUM: NULL
PARTITION_COMMENT:
NODEGROUP: default
TABLESPACE_NAME: NULL
*************************** 2. row ***************************
TABLE_CATALOG: def
TABLE_SCHEMA: test2
TABLE_NAME: user
PARTITION_NAME: p1
SUBPARTITION_NAME: NULL
PARTITION_ORDINAL_POSITION: 2
SUBPARTITION_ORDINAL_POSITION: NULL
PARTITION_METHOD: RANGE
SUBPARTITION_METHOD: NULL
PARTITION_EXPRESSION: id
SUBPARTITION_EXPRESSION: NULL
PARTITION_DESCRIPTION: 6
TABLE_ROWS: 3
AVG_ROW_LENGTH: 5461
DATA_LENGTH: 16384
MAX_DATA_LENGTH: NULL
INDEX_LENGTH: 0
DATA_FREE: 0
CREATE_TIME: 2017-06-20 17:44:03
UPDATE_TIME: 2017-06-20 17:45:19
CHECK_TIME: NULL
CHECKSUM: NULL
PARTITION_COMMENT:
NODEGROUP: default
TABLESPACE_NAME: NULL
*************************** 3. row ***************************
TABLE_CATALOG: def
TABLE_SCHEMA: test2
TABLE_NAME: user
PARTITION_NAME: p2
SUBPARTITION_NAME: NULL
PARTITION_ORDINAL_POSITION: 3
SUBPARTITION_ORDINAL_POSITION: NULL
PARTITION_METHOD: RANGE
SUBPARTITION_METHOD: NULL
PARTITION_EXPRESSION: id
SUBPARTITION_EXPRESSION: NULL
PARTITION_DESCRIPTION: 9
TABLE_ROWS: 3
AVG_ROW_LENGTH: 5461
DATA_LENGTH: 16384
MAX_DATA_LENGTH: NULL
INDEX_LENGTH: 0
DATA_FREE: 0
CREATE_TIME: 2017-06-20 17:44:03
UPDATE_TIME: 2017-06-20 17:45:36
CHECK_TIME: NULL
CHECKSUM: NULL
PARTITION_COMMENT:
NODEGROUP: default
TABLESPACE_NAME: NULL
*************************** 4. row ***************************
TABLE_CATALOG: def
TABLE_SCHEMA: test2
TABLE_NAME: user
PARTITION_NAME: p3
SUBPARTITION_NAME: NULL
PARTITION_ORDINAL_POSITION: 4
SUBPARTITION_ORDINAL_POSITION: NULL
PARTITION_METHOD: RANGE
SUBPARTITION_METHOD: NULL
PARTITION_EXPRESSION: id
SUBPARTITION_EXPRESSION: NULL
PARTITION_DESCRIPTION: 12
TABLE_ROWS: 3
AVG_ROW_LENGTH: 5461
DATA_LENGTH: 16384
MAX_DATA_LENGTH: NULL
INDEX_LENGTH: 0
DATA_FREE: 0
CREATE_TIME: 2017-06-20 17:44:03
UPDATE_TIME: 2017-06-20 17:45:54
CHECK_TIME: NULL
CHECKSUM: NULL
PARTITION_COMMENT:
NODEGROUP: default
TABLESPACE_NAME: NULL
*************************** 5. row ***************************
TABLE_CATALOG: def
TABLE_SCHEMA: test2
TABLE_NAME: user
PARTITION_NAME: p4
SUBPARTITION_NAME: NULL
PARTITION_ORDINAL_POSITION: 5
SUBPARTITION_ORDINAL_POSITION: NULL
PARTITION_METHOD: RANGE
SUBPARTITION_METHOD: NULL
PARTITION_EXPRESSION: id
SUBPARTITION_EXPRESSION: NULL
PARTITION_DESCRIPTION: MAXVALUE
TABLE_ROWS: 1
AVG_ROW_LENGTH: 16384
DATA_LENGTH: 16384
MAX_DATA_LENGTH: NULL
INDEX_LENGTH: 0
DATA_FREE: 0
CREATE_TIME: 2017-06-20 17:44:03
UPDATE_TIME: 2017-06-20 17:45:57
CHECK_TIME: NULL
CHECKSUM: NULL
PARTITION_COMMENT:
NODEGROUP: default
TABLESPACE_NAME: NULL
5 rows in set (0.00 sec)
ERROR:
No query specified
從p0分區(qū)中查看數(shù)據(jù)
刪除p4分區(qū)
添加新增分區(qū)
刪除該區(qū)的所有記錄
alter table 表名drop partition區(qū)名;
分區(qū)合并把p0,p1,p2合并成p01,p02
查看數(shù)據(jù)是否合并
查看目錄的數(shù)據(jù)是否合并成新的分區(qū)