針對專案現有資料庫進行資料分割槽可用的方式及其利弊:
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...