單表一億?還是全庫1億?
如皋網站建設公司創新互聯公司,如皋網站設計制作,有大型網站制作公司豐富經驗。已為如皋上1000家提供企業網站建設服務。企業網站搭建\成都外貿網站建設公司要多少錢,請找那個售后服務好的如皋做網站的公司定做!
1.首先可以考慮業務層面優化,即垂直分表。
垂直分表就是把一個數據量很大的表,可以按某個字段的屬性或使用頻繁程度分類,拆分為多個表。
如有多種業務類型,每種業務類型入不同的表,table1,table2,table3.
如果日常業務不需要使用所有數據,可以按時間分表,比如說月表。每個表只存一個月記錄。
2.架構上的優化,即水平分表。
水平分表就是根據一列或多列數據的值把數據行放到多個獨立的表里,這里不具備業務意義。
如按照id分表,末尾是0-9的數據分別插入到10個表里面。
可能你要問,這樣看起來和剛才說的垂直分表沒什么區別。只不過是否具備業務意義的差異,都是按字段的值來分表。
實際上,水平分表現在最流行的實現方式,是通過水平分庫來實現的。即剛才所說的10個表,分布在10個mysql數據庫上。這樣可以通過多個低配置主機整合起來,實現高性能。
最常見的解決方案是cobar,這個帖子介紹的比較完善,可以看看。
cobar的邏輯層次圖:
不過這種分庫方式也是有一定局限性的,需要應用程序做相應的配合,比如說分庫的情況下,雖然可以實現跨庫查詢,但是不能進行相關的group?by計算。
另外,之前關于水平分表的實現方式,也可以通過表分區來實現。
mysql優化的方式有很多,選擇上主要還是要考慮個人的實際情況,如代碼不可控的情況下,就不適合選擇按字段屬性分表的情況,這樣可能會帶來大量的重構以及很多不可預期的風險。
而架構的優化,雖然對應用是透明的,但對sql的寫法有很多局限性,比如說不能使用聚合函數等等,同時也需要有充足的硬件資源,只有一臺服務器的情況下是沒有意義的。
相比起來,代價最低的是按時間分表或分區,這兩種辦法對應用來說都是透明的。
分區只需要一次本地數據遷移的操作。
而通過分表把現網數據和歷史數據分離,唯一的代價是定期的數據維護。
一般如果表里面有1億數據的情況下,索引的問題應該是常識了,這方面我就不說了。
另外如果覺得答的不錯多給點分。
幫一樓的個哥們補充一下吧,你做兩個表
第一個表是商品表。包含商品id,商品名,品牌,商品型號,等等
第二個是商品信息表。字段包括商品id,屬性英文名稱,屬性中文名稱,屬性值。
比如我有一個三星的電視
在第一個表里面寫
id=1,商品名=三星電視,品牌=三星,商品型號=32XXXXX。。。。
第二個表里面寫
id=1,屬性英文名:LCDTYPE,屬性中文名:液晶類型,屬性值:LED
id=1,屬性英文名:size,屬性中文名:液晶尺寸,屬性值:32
。。。。。。
選中某個表,然后右鍵點擊,選擇“設計表”即可。
也可以左鍵點擊某個表(即選中某表),在上面輔助菜單欄里有“打開表”、“設計表”、“新建表”等按鈕可點擊,點擊“設計表”按鈕即可。
進入后,會彈出新的操作窗口,新窗口的菜單欄里有常用的修改表結構的按鈕,右鍵點擊某列字段也可以彈出相應的修改表的操作按鈕。
其它摸索著看提示操作即可,還是很簡單的。
修改好表后點擊菜單欄上的“保存”按鈕即可。
注:若要查看修改表的sql語句,必須在“保存”之前點擊“SQL預覽”按鈕。
本文標題:mysql多表怎么設計 多對多表怎么設計
網頁地址:http://vcdvsql.cn/article14/heppge.html
成都網站建設公司_創新互聯,為您提供微信小程序、用戶體驗、品牌網站建設、軟件開發、外貿網站建設、品牌網站制作
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯