軟件系統(tǒng)的設計習慣是把每張表都分清很明確的功能,比如用戶表都是用戶信息,如果需要同時從留言表取數(shù)據(jù),又從用戶表取用戶信息的時候,就會采用聯(lián)合查 詢,有的時候一些操作還會用left,join等各種復雜sql語句,沒準還要用mysql的函數(shù)。如果是針對訪問量,讀取量很大的互聯(lián)網(wǎng)服務時,同時并 發(fā)去讀,數(shù)據(jù)量又大,很可怕。最好是如果數(shù)據(jù)不會修改,在常用的表上有冗余字段,能夠做到一次讀,把數(shù)據(jù)都拿到;可以有冗余的寫操作,但減少復雜的查詢操 作。
在設計表的時候要將這個表的所有字段類型占用的字節(jié)數(shù)求和,并乘以你的預期(如:存儲100W數(shù)據(jù)量),就是整張表未來會占用容量。
拆表 拆庫
拆表就是將一張表復制N多張,里面分別存放不用內(nèi)容的數(shù)據(jù),數(shù)據(jù)的存放是用HASH算法來決定放入哪張表。
例如用戶表user,傳統(tǒng)情況就是一張表,拆表就是將表復制為user_01,user_02等里面都存放了格式一樣的不同用戶數(shù)據(jù)。
拆庫和拆表類似,就是庫的復制。
拆表或拆庫有很多的HASH算法,主要目的就是減少表的數(shù)據(jù)量,用算法保證每個表的數(shù)據(jù)量平均,請求,讀寫操作被分攤降低壓力,而且安全,出了問題最多是一部分用戶受影響。缺點就是檢索不方便,需要另想辦法。
很多網(wǎng)站為了前期省事都會采用discuz的產(chǎn)品,如bbs,blog等,網(wǎng)上有不少關于這個產(chǎn)品的介紹和優(yōu)化方法,沒細研究過,聽過一些網(wǎng)站介紹他們的 優(yōu)化方法時,對于數(shù)據(jù)庫主要是采用主從的方法,將數(shù)據(jù)庫的讀寫分離來提高性能,但是個人覺得這種辦法在數(shù)據(jù)量到了規(guī)模的時候就OVER了,并發(fā)和讀寫操作 沒提升,數(shù)據(jù)也是會逐漸累計超過限制。
互聯(lián)網(wǎng)服務由于要應對大數(shù)據(jù)量,大請求量,所以在設計開發(fā)的時候就不要太學院派,不要力圖達到數(shù)據(jù)庫、程序的設計“優(yōu)美”,性能是最要緊的。bitsCN.com
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com