石建 | Fat Mind

          歪歪之?dāng)?shù)據(jù)庫(kù)

          題記:主要記錄同學(xué)分享的關(guān)于數(shù)據(jù)庫(kù)設(shè)計(jì)方面的內(nèi)容,思考過(guò)一點(diǎn),記錄下來(lái)。

          一、從需求開(kāi)始,考慮數(shù)據(jù)庫(kù)的設(shè)計(jì),且結(jié)合具體數(shù)據(jù)庫(kù)特性

            一個(gè)論壇,要求顯示帖子的總條數(shù),對(duì)于mysql、innodb引擎;上線前期完全沒(méi)有問(wèn)題,當(dāng)人氣積累,帖子達(dá)到千萬(wàn)級(jí)別時(shí),此時(shí)性能的問(wèn)題就會(huì)顯現(xiàn)出來(lái)。好的設(shè)計(jì),是需求階段就要考慮的。對(duì)于我,這是一個(gè)思想概念上的轉(zhuǎn)變。
            但引擎如果換成myisam,就算數(shù)據(jù)達(dá)到億的級(jí)別,“統(tǒng)計(jì)總數(shù)”這樣的問(wèn)題還會(huì)存在嗎 ?不會(huì),myisam自身就會(huì)維護(hù)總數(shù)信息。因此設(shè)計(jì),必須結(jié)合具體的數(shù)據(jù)庫(kù)的特性來(lái)做,不能以一概全。

          二、應(yīng)該遵循原則 (未驗(yàn)證)

            1.小結(jié)果集驅(qū)動(dòng)大結(jié)果集。理由:mysql的連接查詢?cè)??
            2.盡可能在索引中完成排序。理由:索引本身就是有序的
            3.只取自己需要的column ?
            4.避免復(fù)雜的連接查詢和子查詢。
            5.適當(dāng)?shù)臄?shù)據(jù)冗余.理由:帖子表&用戶表,如果帖子表?yè)碛衭sername,則每次帖子的顯示是不需要連接查詢獲取username。 
            6.應(yīng)用層的cahce機(jī)制 ?

          三、概念

            1.垂直拆分:按列進(jìn)行分割,即把一條記錄分開(kāi)多個(gè)地方保存,每個(gè)子表的行數(shù)相同。帖子表,id、userid、username、content、xxx ...前面4個(gè)字段很常用,但是后面xxx等很多字段,不常用,數(shù)據(jù)量很大。進(jìn)行垂直拆分,table1字段包含“id、userid、username、content”,table2包含“xxx、...”等不常用字段。優(yōu)點(diǎn):減少io的操作。缺點(diǎn):如果需要不常用字段信息,需要連表查詢。
            2.水平拆分:
          按記錄進(jìn)分分割,不同的記錄分開(kāi)保存,每個(gè)子表的列數(shù)相同。比如:淘寶的用戶交易數(shù)據(jù),根據(jù)用戶id取模,確定具體的數(shù)據(jù)存放在那個(gè)數(shù)據(jù)庫(kù)。水平拆分會(huì)給應(yīng)用帶來(lái)復(fù)雜性。
            3.集群:提高系統(tǒng)的可用性。分庫(kù)的節(jié)點(diǎn)引入多臺(tái)機(jī)器,每臺(tái)機(jī)器保 存的數(shù)據(jù)是一樣,負(fù)載均衡在多臺(tái)機(jī)器。如何均衡、探測(cè)機(jī)器的可用性,是新的問(wèn)題 ?
            4.主備:一般的互聯(lián)網(wǎng)應(yīng)用中,經(jīng)過(guò)一些數(shù)據(jù)調(diào)查得出結(jié)論,讀/寫(xiě)的比例大概在 10:1左右。為什么要讀寫(xiě)分離:寫(xiě)操作涉及到鎖的問(wèn)題,不管是行鎖還是表鎖還是塊鎖,在大并發(fā)的情況下,效率很低。寫(xiě)操作集中在一個(gè)節(jié)點(diǎn)上,而讀操作其其他 的N個(gè)節(jié)點(diǎn)上進(jìn)行。讀寫(xiě)分離引入的新問(wèn)題:比如我的Master上的數(shù)據(jù)怎樣和集群中其它Slave機(jī)器保持?jǐn)?shù)據(jù)的同步和一致呢?




          posted on 2010-11-07 17:53 石建 | Fat Mind 閱讀(472) 評(píng)論(0)  編輯  收藏 所屬分類: database


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           

          導(dǎo)航

          <2010年11月>
          31123456
          78910111213
          14151617181920
          21222324252627
          2829301234
          567891011

          統(tǒng)計(jì)

          常用鏈接

          留言簿

          隨筆分類

          隨筆檔案

          搜索

          最新評(píng)論

          What 、How、Why,從細(xì)節(jié)中尋找不斷的成長(zhǎng)點(diǎn)
          主站蜘蛛池模板: 乌兰浩特市| 红安县| 正蓝旗| 榆中县| 咸阳市| 思南县| 张北县| 黄龙县| 门头沟区| 绍兴县| 韶关市| 双桥区| 遵化市| 洞头县| 漳浦县| 阳山县| 乐安县| 常熟市| 徐水县| 武强县| 墨玉县| 瓮安县| 厦门市| 万荣县| 陇川县| 新安县| 碌曲县| 新建县| 托里县| 资兴市| 沁水县| 舒城县| 瑞丽市| 元江| 江山市| 安丘市| 蕲春县| 巴塘县| 郁南县| 德保县| 清新县|