溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

mysql分區(qū)及分表(一)

發(fā)布時間:2020-06-17 10:16:32 來源:網(wǎng)絡(luò) 閱讀:561 作者:攀巖人生 欄目:MySQL數(shù)據(jù)庫

                              mysql分區(qū)分表

1.分表是將一個大表按照一定的規(guī)則分解成多張具有獨立存儲空間的實體表,每個表都對應(yīng)三個文件,MYD數(shù)據(jù)文件,.MYI索引文件,.frm表結(jié)構(gòu)文件

mysql分表分為垂直切分和水平切分

垂直切分是指數(shù)據(jù)表列的拆分,把一張列比較多的表拆分為多張表通常我們按以下原則進(jìn)行垂直拆分:把不常用的字段單獨放在一張表; 水平拆分是指數(shù)據(jù)表行的拆分,把一張的表的數(shù)據(jù)拆成多張表來存放。

水平拆分原則:通常情況下,我們使用hash、取模等方式來進(jìn)行表的拆分

通過用ID取模的方法把數(shù)據(jù)分散到四張表內(nèi)Id%4= [0,1,2,3]

然后查詢,更新,刪除也是通過取模的方法來查詢

分表的幾種方式:

1mysql集群

它并不是分表,但起到了和分表相同的作用。

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ū)是對表的行進(jìn)行分區(qū),所有在表中定義的列在每個數(shù)據(jù)集中都能找到,所以表的特性依然得以保持。

垂直分區(qū)(Vertical Partitioning)這種分區(qū)方式一般來說是通過對表的垂直劃分來減少目標(biāo)表的寬度,使某些特定的列被劃分到特定的分區(qū),每個分區(qū)都包含了其中的列所對應(yīng)的行。

創(chuàng)建測試數(shù)據(jù)庫

mysql分區(qū)及分表(一) 

創(chuàng)建表

 

mysql分區(qū)及分表(一) 

在表里面插入數(shù)據(jù),查看表的結(jié)構(gòu),表的數(shù)據(jù)

mysql分區(qū)及分表(一) 

執(zhí)行insert*****語句可以以倍數(shù)增加數(shù)據(jù),查看創(chuàng)建的數(shù)據(jù)

mysql分區(qū)及分表(一) 

進(jìn)行分表,分為一個主表為back1,從表為back2,back3

mysql分區(qū)及分表(一) 

INSERT_METHOD,此參數(shù)INSERT_METHOD = NO 表示該表不能做任何寫入操作只作為查詢使用,INSERT_METHOD = LAST表示插入到最后的一張表里面。INSERT_METHOD = first表示插入到第一張表里面。

把數(shù)據(jù)分到兩個從表中,并且查看子表的數(shù)據(jù)

mysql分區(qū)及分表(一) 

mysql分區(qū)及分表(一) 

查看目錄數(shù)據(jù)里有沒有創(chuàng)建的表

mysql分區(qū)及分表(一) 

分區(qū):

查看是否支持分區(qū)

mysql版本如果是5.6之前的使用第一個查看  5.6之后選擇第二個

mysql分區(qū)及分表(一) 

在第二個查詢結(jié)果里查看是否支持分區(qū)

mysql分區(qū)及分表(一) 

active表示支持分區(qū)

創(chuàng)建新的測試數(shù)據(jù)庫

mysql分區(qū)及分表(一) 

創(chuàng)建數(shù)據(jù),創(chuàng)建一個范圍的分區(qū)表  maxvalue:從最大放入

mysql分區(qū)及分表(一) 

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

mysql分區(qū)及分表(一) 

查看數(shù)據(jù)的目錄里有沒有分區(qū)

mysql分區(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ù)

mysql分區(qū)及分表(一) 

刪除p4分區(qū)

mysql分區(qū)及分表(一) 

添加新增分區(qū)

mysql分區(qū)及分表(一) 

刪除該區(qū)的所有記錄

alter table 表名 drop partition 區(qū)名;

分區(qū)合并把p0,p1,p2合并成p01,p02

mysql分區(qū)及分表(一) 

查看數(shù)據(jù)是否合并

mysql分區(qū)及分表(一) 

查看目錄的數(shù)據(jù)是否合并成新的分區(qū)

mysql分區(qū)及分表(一) 


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI