前言:
當(dāng)數(shù)據(jù)庫表中的數(shù)據(jù)過大時(shí),查詢速度變慢,會影響整個(gè)業(yè)務(wù)模塊的性能。
解決方案:
首先考慮:緩存、加索引、優(yōu)化sql語句。若數(shù)據(jù)量極大,且持續(xù)增長可考慮水平分表、水平分庫。
與水平分庫、水平分表對應(yīng)的還有,垂直分庫、垂直分表。垂直分庫、垂直分表一般來說在系統(tǒng)設(shè)計(jì)階段的時(shí)候根據(jù)業(yè)務(wù)情況來確定如何分。
相關(guān)概念:
垂直分表:把一個(gè)表中的字段,按訪問頻次、是否是大字段的原則拆分多個(gè)表。(注意:拆分后,盡量從業(yè)務(wù)角度方面避免聯(lián)合查詢,否則性能方面得不償失)
垂直分庫:把多個(gè)表按業(yè)務(wù)耦合松緊,分別存放在不同的庫,這些庫可以分布在不同的服務(wù)器上。
水平分表:把一個(gè)表中的數(shù)據(jù)分?jǐn)偟酵瑤煜嗤Y(jié)構(gòu)的表中。
水平分庫:把一個(gè)表中的數(shù)據(jù)分?jǐn)偟讲煌瑤煜嗤Y(jié)構(gòu)的表中。
其它方案:
系統(tǒng)業(yè)務(wù)的基礎(chǔ)數(shù)據(jù)和該業(yè)務(wù)的不同維度的查詢數(shù)據(jù)分開,基礎(chǔ)數(shù)據(jù)保證核心功能正常運(yùn)轉(zhuǎn)。查詢所需數(shù)據(jù)可用定時(shí)任務(wù)從基礎(chǔ)數(shù)據(jù)中收集出來。
不同方案帶來的性能提升不同,可按實(shí)際情況而定。