Mysql MyISAM引擎分表(水平拆分)

2021-10-06 23:20:04 字數 2389 閱讀 9101

應用場景

1.查的多,寫的少(基於引擎特性,索引檔案與元資料檔案分別儲存);

2.資料量過高;

功能介紹
myisam引擎分表功能是 基於建立多個子表,由主表關聯而形成的分表功能,該主表可以視為空殼,來引導儲存到子表

/**表1*/

create

table

`union_user_1`

(`id`

bigint(21

)not

null

auto_increment

,`name`

varchar

(255

)character

set utf8 default

null

,primary

key(

`id`))

engine

=myisam auto_increment=5

default

charset

=latin1;

/**表2*/

create

table

`union_user_2`

(`id`

bigint(21

)not

null

auto_increment

,`name`

varchar

(255

)character

set utf8 default

null

,primary

key(

`id`))

engine

=myisam auto_increment=5

default

charset

=latin1;

/**表3*/

create

table

`union_user_3`

(`id`

bigint(21

)not

null

auto_increment

,`name`

varchar

(255

)character

set utf8 default

null

,primary

key(

`id`))

engine

=myisam auto_increment=5

default

charset

=latin1;

把源資料寫入到新建立的子表中

insert

into uion_user_1 (id,

`name`

)select id ,

`name`

from table_name where id %2=

0insert

into uion_user_2 (id,

`name`

)select id ,

`name`

from table_name where id %2=

1

union (uion_user_1,uion_user_2,uion_user_3) 為關聯的子表

insert_method = last 設定資料會儲存到最後一張子表中

create

table

`user`(

`id`

bigint(21

)not

null

auto_increment

,`name`

varchar

(255

)character

set utf8 default

null

primary

key(

`id`))

engine

=mrg_myisam default

charset

=latin1 insert_method=

last

union=(

`uion_user_1`

,`uion_user_2`

,`uion_user_3`

);

查詢就ok了

mysql MYISAM表批量壓縮

關於對myisam表的壓縮,可以使用myisampack和myisamchk完成 myisampack完之後必須進行myisamchk才能使用壓縮後的表,而且是唯讀的 其詳細地用法可以參考官方文件 這兩個操作需要謹慎使用,在壓縮之前需要確認mysqld已關閉或者要壓縮的表不會有其他的sql操作 而且...

mysql MyISAM表的儲存格式

myisam支援三種不同的儲存格式 固定格式,動態格式,已壓縮格式 只能使用myisampack工具來建立 靜態表特徵 固定格式 靜態格式是myisam表的預設儲存格式。當表不包含變數長度列 varchar,blob,或text 時,使用這個格式。每一行用固定位元組數儲存。靜態格式是三種儲存格式中最...

Mysql MERGE引擎分表

一.什麼是merge引擎 merge儲存引擎把一組myisam資料表當做乙個邏輯單元來對待,讓我們可以同時對他們進行查詢。二.應用場景 如果需要把日誌紀錄不停的錄入mysql資料庫,並且每天 每週或者每個月都建立乙個單一的表,而且要時常進行來自多個表的合計查詢,merge表這時會非常簡單有效。三.舉...