mysql分割槽技術

2022-09-23 02:32:10 字數 2196 閱讀 2689

把一個表,從邏輯上分成多個區域,便於儲存資料。

採用分割槽的前提,資料量非常大。

如果資料表的記錄非常多,比如達到上億條,資料表的活性就大大降低,資料表的執行速度就比較慢、效率低下,影響mysql資料庫的整體效能,就可以採用分割槽解決

分割槽是mysql本身就支援的技術

list :條件值為一個資料區。

演算法:根據“欄位的內容值”是否在某個“區域”中進行分割槽,通過預定義的列表的值來對資料進行分割。

語法:利用表選項:partition 完成。

create table  table_name(

欄位資訊,

索引,) charset utf8

partition by list(分割槽欄位)(

partition list_name1 values in (),

partition list_name2 values in()

例子:建立一張表,該表儲存有全國20家分公司的職員記錄,這20家分公司的編號從1到20.而這20家分公司分佈在全國4個區域,如下表所示:

id  name   store_id(分公司的id)

北部    1,4,5,6,17,18

南部    2,7,9,10,11,13

東部    3,12,19,20

西部    8,14,15,16

檢視執行計劃

注意:where後面的欄位必須是分割槽欄位

定義:利用“欄位值”取值範圍將資料分割槽,區間要連續並且不可以重疊,使用values less than 進行分割槽定義

less than   小於等於

maxvalue  可能的最大值 

例子:使用者餘額表

create table p_range(

id int(11) not null,

name varchar(32) not null,

totle_money int(11) not null

)partition by range (totle_money)(

partition p1 values less than (100),

partition p2 values less than(1000),

partition p3 values less than(10000),

partition p4 values less than maxvalue

);注意:

1,上面分割槽語句的values less than maxvalue子句是表示當有大於10000的時候都插入到p4中,maxvalue代表最大可能整數值,否則當我們插入一條記錄包含10001時會報錯。

2,順序是有規定的,當把p1設為1000而p2設為100時會報錯。

3,無論是哪一種分割槽型別,如果表裡有主鍵,則分割槽欄位必須是主鍵或者主鍵的一部分,否則會報錯。

a primary key must include all columns in the table's partitioning function

如果新增主鍵   alter table p_range add primary key(id,totle_money)

給 range/list 增加分割槽

alter table table_name add  partition(

partition 分割槽名 values less than (常量)

或partition 分割槽名 in (n,n,n)

給 range/list 刪除分割槽

alter table table_name drop partition 分割槽名稱;

注意:刪除的分割槽裡的資料會被刪除。

MySQL MySQL JDBC URL

1 1g br characterencoding 當useunicode設定為true時,指定字元編碼。比如可設定為gb2312或gbk...

mysql

首先檢視當前狀態 show variables like general log 好的,看到時關閉的 日誌輸出支援檔案和資料表兩種格式,看一...

mysql

1 mysql的子查詢實現的很爛,會發生不使用索引的問題,據官方說6以後會改善。 例如 select from ol question wh...