mysql資料庫設計
單表一億?還是全庫1億?
1.首先可以考慮業務層面優化,即垂直分表。
垂直分表就是把一個數據量很大的表,可以按某個欄位的屬性或使用頻繁程度分類,拆分為多個表。
如有多種業務類型,每種業務類型入不同的表,table1,table2,table3.
如果日常業務不需要使用所有數據,可以按時間分表,比如說月表。每個表只存一個月記錄。
2.架構上的優化,即水平分表。
水平分表就是根據一列或多列數據的值把數據行放到多個獨立的表裡,這里不具備業務意義。
如按照id分表,末尾是0-9的數據分別插入到10個表裡面。
可能你要問,這樣看起來和剛才說的垂直分表沒什麼區別。只不過是否具備業務意義的差異,都是按欄位的值來分表。
實際上,水平分表現在最流行的實現方式,是通過水平分庫來實現的。即剛才所說的10個表,分布在10個mysql資料庫上。這樣可以通過多個低配置主機整合起來,實現高性能。
最常見的解決方案是cobar,這個帖子介紹的比較完善,可以看看。
http://blog.csdn.net/shagoo/article/details/8191346
cobar的邏輯層次圖:
不過這種分庫方式也是有一定局限性的,需要應用程序做相應的配合,比如說分庫的情況下,雖然可以實現跨庫查詢,但是不能進行相關的group by計算。
另外,之前關於水平分表的實現方式,也可以通過表分區來實現。
mysql優化的方式有很多,選擇上主要還是要考慮個人的實際情況,如代碼不可控的情況下,就不適合選擇按欄位屬性分表的情況,這樣可能會帶來大量的重構以及很多不可預期的風險。
而架構的優化,雖然對應用是透明的,但對sql的寫法有很多局限性,比如說不能使用聚合函數等等,同時也需要有充足的硬體資源,只有一台伺服器的情況下是沒有意義的。
相比起來,代價最低的是按時間分表或分區,這兩種辦法對應用來說都是透明的。
分區只需要一次本地數據遷移的操作。
而通過分表把現網數據和歷史數據分離,唯一的代價是定期的數據維護。
一般如果表裡面有1億數據的情況下,索引的問題應該是常識了,這方面我就不說了。
2. MySQL資料庫表設計,需要建幾個表,包括哪些欄位
簡單點: 用戶表(用戶ID,姓名,密碼,性別,年齡,職業,微信,郵箱,手機,專長,用戶狀態,登錄時間,是否管理員)其中也可以單獨設置一個管理員表
試題類別:(類別 ID,類別名稱,類別描述)
試題表:(試題 ID,試題類別 ID,試題描述,試題難度,試題答案)
答題表:(答題 ID,用戶 ID,試題 ID,答題答案,答題評分)
大概就這樣
3. MYSQL資料庫設計
用戶對應一個評論表
建立一個分類表:里邊含音樂、咨詢、等分別賦予ID。比如音樂為1,咨詢為2
所有的評論都寫在同一個表中
類型 評論id 評論內容 評論時間 ……
1 張三 哈哈 yyyy-mm-dd
2 李四 怎麼下載 yyyy-mm-dd
也就是說靠類型來區分評論的是哪個表。比如類型是1的就是評論音樂,類型是2的就是咨詢。
有問題追問吧。
4. Mysql資料庫設計
簡單用戶表 tb_user:
userid , username
用戶詳細信息表 tb_userinfo
userid , email , homepage , phone , address
把用戶信息分開的目的就是保證經常查詢的數據在一張表,其它信息放到另一張表
論壇主題表 tb_bbs
bbsid , userid , title , ip , repleycount , replyuserid , createtime , lastreplytime
論壇內容標 tb_bbs_content (此表可按照bbsid進行分表存儲)
bbsid , content;
論壇回復表 tb_bbs_reply (此表可按照bbsid進行分表存儲)
replyid , bbsid , userid , content , replytime , ip
5. 有沒有好用的mysql資料庫設計工具
下面推薦兩款:
一、Navcat:
Navicat 是一套快速、可靠並價格相宜的資料庫管理工具,專為簡化資料庫的管理及降低系統管理成本而設。它的設計符合資料庫管理員、開發人員及中小企業的需要。Navicat 是以直覺化的圖形用戶界面而建的,讓你可以以安全並且簡單的方式創建、組織、訪問並共用信息。
Navicat是聞名世界、廣受全球各大企業、政府機構、教育機構所信賴,更是各界從業員每天必備的工作夥伴。自2001 年以來,Navicat 已在全球被下載超過 2,000,000 次,並且已有超過 70,000 個用戶的客戶群。《財富》世界 500 強中有超過 100 家公司也都正在使用 Navicat。
二、MySQL Workbench:
MySQL Workbench是一款圖形化的資料庫設計工具,它在一個開發環境中集成了SQL的開發,管理,資料庫設計,創建以及維護。它是 fabFORCE.net旗下DBDesigner 4的繼承者,並替代了MySQL GUI Tools Bundle。當前版本是5.2,最早版本是5.0,這是為了強調MySQL Workbench是作為DBDesigner4的繼承者被開發出來的事實。
6. MYSQL資料庫的物理設計都包括哪些內容,怎麼設計
Log File物理結構
log block結構分為日誌頭段、日誌記錄、日誌尾部
Block Header,佔用12位元組
Data部分
Block tailer,佔用4位元組
Block Header
這個部分是每個Block的頭部,主要記錄的塊的信息
Block Number,表示這是第幾個block,佔用4位元組,是通過LSN計算得來的,佔用4位元組
Block data len,表示該block中有多少位元組已經被使用了,佔用2位元組
First Rec offet,表示該block中作為第一個新的mtr開始的偏移量,佔用2位元組
Checkpoint number,表示該log block最後被寫入時的檢查點的值,佔用4位元組
7. Mysql或者sql,小說資料庫,儲存設計
文本文件不推薦存儲在資料庫中,應該單獨放在某個磁碟目錄下面,然後再資料庫中,記錄文件的存放目錄。
8. mysql資料庫裡面表的設計
建一個欄位就可以了
存入的時候用一個特殊的標點符號隔開
現在大部分的網站都是這么做的,你可以看看起點,迅雷
他們要求輸入標簽的時候就是讓你直接輸入一個字元串,然後用逗號隔開
到時候你讀的時候也截取下字元串來讀
這樣就可以了
截取字元串可以在資料庫里做,這樣比較快
最好就是做成存儲過程,到時候調用一下就可以了,方便的很
9. 根據如下表格內容如何設計資料庫表(Mysql)
1、職責信息表、包含表述信息
2、工作任務表
3、職責和任務關聯中間表
這樣就做到了職責表1對多個工作表,後面不管怎麼加都是一個套路