mysql 資料庫設計

2022-09-28 08:45:07 字數 1133 閱讀 7517

innodb表正好相反;行級鎖表

網際網路服務,不算支付性的服務外,互動產品,新聞系統等等一般都是讀多,寫少。用myisam表比較合適。

表的設計

定長表:所有列的字段長度都是定長的。可以去查mysql的手冊不定長字段是varchar、blob或text。int char都是定長的,定長表占用空間會大。

動態表:就是字段不是都定長的。

定長表要比動態表檢索速度快。

軟體系統的設計習慣是把每張表都分清很明確的功能,比如使用者表都是使用者資訊,如果需要同時從留言表取資料,又從使用者表取使用者資訊的時候,就會採用聯合查 詢,有的時候一些操作還會用left,join等各種複雜sql語句,沒準還要用mysql的函式。如果是針對訪問量,讀取量很大的網際網路服務時,同時並 發去讀,資料量又大,很可怕。最好是如果資料不會修改,在常用的表上有冗餘字段,能夠做到一次讀,把資料都拿到;可以有冗餘的寫操作,但減少複雜的查詢操 作。

在設計表的時候要將這個表的所有字段型別占用的位元組數spdmrl求和,並乘以你的預期(如:儲存100w資料量),就是整張表未來會占用容量。

拆表 拆庫

拆表就是將一張表複製n多張,裡面分別存放不用內容的資料,資料的存放是用hash演算法來決定放入哪張表。

例如使用者表user,傳統情況就是一張表,拆表就是將表複製為user_01,user_02等裡面都存放了格式一樣的不同使用者資料。

拆庫和拆表類似,就是庫的複製。

拆表或拆庫有很多的hash演算法,主要目的就是減少表的資料量,用演算法保證每個表的資料量平均,請求,讀寫操作被分攤降低壓力,而且安全,出了問題最多是一程式設計客棧部分使用者受影響。缺點就是檢索不方便,需要另想辦法。

很多**為了前期省事都會採用discuz的產品,如bbs,blog等,網上有不少關於這個產品的介紹和優化方法,沒細研究過,聽過一些**介紹他們的 優化方法時,對於資料庫主要是採用主從的方法,將資料庫的讀寫分離來提高效能,但是個人覺得這種辦法在資料量到了規模的時候就over了,併發和讀寫操作 沒提spdmrl公升,資料也是會逐漸累計超過限制。

網際網路服務由於要應對大資料量,大請求量,所以在設計開發的時候就不要太學院派,不要力圖達到資料庫、程式的設計「優美」,效能是最要緊的。

本文標題: mysql 資料庫設計

本文位址: /shujuku/mysql/48914.html

mysql 資料庫設計 MySQL 資料庫設計總結

本文由雲 社群發表 規則 1 一般情況可以選擇 myisam 儲存引擎,如果需要事務支援必須使用 innodb 儲存引擎。注意 myisam 儲存引擎 b tree 索引有乙個很大的限制 參與乙個索引的所有欄位的長度之和不能超過 1000 位元組。另外 myisam 資料和索引是分開,而 innod...

mysql考勤資料庫設計 mysql 資料庫設計

正規化 大概有8種正規化,遵循前三個一般資料庫就沒有問題 1 列不能再拆分 比如一列中有姓名,又有性別,就是沒有遵循這一條正規化 order id product id price quantity product name 111 11 123 good pen order id 和 produc...

mysql相簿資料庫設計 mysql資料庫的設計

資料庫的設計有乙個嚴謹的流程,根據流程製作乙個完整的資料庫,可以省去很多的時間,也可以最大程度上與客戶的想法契合。需求分析階段 分析客戶的業務和資料處理需求 概要設計階段 設計資料庫的e r模型圖,確認需求資訊的正確和完整 詳細設計階段 應用三大正規化審核資料庫結構 編寫階段 物理實現資料庫,編碼實...