橫向分表是按行分表.假設(shè)我們有一張用戶表,主鍵是自增ID且同時是用戶的ID.數(shù)據(jù)量較大,有1億多條,那么此時放在一張表里的查詢效果就不太理想.我們可以根據(jù)主鍵ID進行分表,無論是按尾號分,或者按ID的區(qū)間分都是可以的.
假設(shè)按照尾號0-99分為100個表,那么每張表中的數(shù)據(jù)就僅有100w.這時的查詢效率無疑是可以滿足要求的. 縱向分表是按列分表.
假設(shè)我們現(xiàn)在有一張文章表.
包含字段 id-摘要-內(nèi)容 .而系統(tǒng)中的展示形式是刷新出一個列表,列表中僅包含標(biāo)題和摘要,當(dāng)用戶點擊某篇文章進入詳情時才需要正文內(nèi)容.
此時,如果數(shù)據(jù)量大,將內(nèi)容這個很大且不經(jīng)常使用的列放在一起會拖慢原表的查詢速度.我們可以將上面的表分為兩張.
id-摘要 , id-內(nèi)容 .當(dāng)用戶點擊詳情,那主 鍵再來取一次內(nèi)容即可.
而增加的存儲量只是很小的主鍵字段.代價很小.當(dāng)然,分表其實和業(yè)務(wù)的關(guān)聯(lián)度很高,在分表之前一定要做好調(diào)研以及benchmark.不要按照自己的猜想盲目操作