MySQL資料庫資料分割槽實踐總結

2021-08-30 17:04:45 字數 1817 閱讀 4150

針對專案現有資料庫進行資料分割槽可用的方式及其利弊:

1)range方式分割槽:

partition by range (id)

(partition pt1 values less than (10) comment = 'host "127.0.0.1", port "6001"' engine = spider,

partition pt2 values less than (20) comment = 'host "127.0.0.1", port "6002"' engine = spider,

partition pt3 values less than maxvalue comment = 'host "127.0.0.1", port "6003"' engine = spider)

好處:①不需要對現有的資料做任何手動分割,只給需要分割槽的**制定主鍵id的分割槽範圍即可;

②後期維護簡單,比如以後要追加資料庫伺服器了,也只需更改分割槽規則即可;

弊端:如果使用者在使用應用程式過程中刪除了node1中的大部分甚至是全部資料,

而以後新規資料的id肯定又不符合node1對應的pt1分割槽規則,這樣會導致node1變成乙個空殼伺服器。

2)list方式分割槽

partition by list(mod(id, 3))

partition pt1 values in (0),

partition pt2 values in (1),

partition pt3 values in (2)

);好處:不存在range方式分割槽中所提到的弊端;

弊端:①需要對現有需要分割槽的資料**進行手動資料分割,然後再用spider引擎進行按規則分割槽;

②後期維護困難,如果分割槽後的伺服器還是不堪重負,需要追加資料庫伺服器時,

此時不斷要需要重新制定分割槽規則,而且以前的資料表還需要按照新的規則進行手動分割;

3)range & hash 復合分割槽方式:

partition by range (id) subpartition by hash (id)(

partition pt1 values less than (10)

(subpartition st1 comment = 'host "127.0.0.1", port "6001"' engine = spider, 

subpartition st2 comment = 'host "127.0.0.1", port "6001"' engine = spider),

partition pt2 values less than maxvalue

(subpartition s20 comment = 'host "127.0.0.1", port "6002"' engine = spider, 

subpartition s21 comment = 'host "127.0.0.1", port "6003"' engine = spider)

)#復合分割槽時,母分割槽一般是range和list分割槽,子分割槽一般是hash和key分割槽。且各母分割槽的子分割槽個數必須相同。

好處:不會對現有的資料做任何手動分割;

弊端:①會查出多條重複的現有資料,如果想避免這個問題,則需要修正應用層,這個是極端不可取的做法;

②後期維護困難,如果分割槽後的伺服器還是不堪重負時,就需要追加資料庫伺服器。

此時不斷要需要重新制定分割槽規則,而且以前的資料表還需要按照新的規則進行手動分割;

綜上所述,還是推薦採用range方式分割槽,理由如下:

range方式分割槽改動最小,而且後期維護簡單。

至於它的弊端,只是存在理論當中,實際中應該不會出現幾千萬條資料都被使用者刪除的情況。

mysql資料庫效能優化實踐(分割槽)

最近由於工作需要,需要對資料庫的效能進行測試,在這裡同步下mysql的效能測試結果。一 業務場景 表中存放的資料為訂單資訊資料,目前有3百萬資料,最初建表時只對查詢的字段建索引,當表資料量達到200w時,明顯查詢速度變慢,select一次需要2s,很明顯達不到效能要求。二 mysql資料庫效能測試 ...

MySQL資料庫分割槽

資料庫分割槽處理 如果一張表的資料量太大的話,myd myi就會變得很大,查詢資料就會變的很慢,我接觸到的是有關溫州計程車網約車gps資料量的查詢,大概資料量為1天4000萬條記錄,不分割槽查詢速度慢到懷疑人生。在物理上我們可以把資料表分割成不同的小塊,查詢資料只需要查詢需要的那一塊資料即可,查詢速...

mysql 資料庫表分割槽

create table if not exists demo range eventid int 11 unsigned not null,event sk int 11 not null,product sk int 11 not null,date sk int 11 not null,dev...