mysql 分表場景與開發

第一種, 開發以前估計該表的數據量之後會比較大,好比商城的訂單表order,那麼在開發以前,建立10個如出一轍的order表,而後userid尾號爲1的,其訂單都放進order1,userid尾號爲2的,放進order2,以此類推,這樣能夠減小表的數據量,加快訪問速度ide

第二種,隨着項目的平穩運營,惟一的訂單表數據量變得很是大,查詢速度很慢,能夠作分表
新建立幾個一摸同樣的訂單表,order1,order2,order3(這些表的id不能設爲自增).... 再建立一個合併表allorder(存儲引擎得是merge存儲引擎,也就是mrg_myisam)code

CREATE TABLE allorder (
id BIGINT ( 20 ) NOT NULL ,
subject VARCHAR ( 200 ) NOT NULL ,
content TEXT NOT NULL ,
PRIMARY KEY ( id )
) ENGINE=MRG_MyISAM DEFAULT CHARSET=utf8 INSERT_METHOD=NO union =(order1,order2,order3,...);開發

這裏INSERT_METHOD=0在某些版本可能不工做,須要改爲INSERT_METHOD=NO
注意,合併表也必須和前面的表有相同的結構,類型,長度,包括字段的順序都必須一致it

合併表只能負責查詢工做,若是要進行插入的話,因爲以前的子表主鍵不是自增的,因此須要其餘方法來獲取新增的id,能夠建立一個表來負責建立id,這個表的自增的,後面要往訂單表裏面插入數據的話,得由這個負責建立id的表來建立id,而後根據id獲取應該插入到哪一個表io

update的話,就是根據id來獲取表名,而後找到該數據修改class

相關文章
相關標籤/搜索