數(shù)據(jù)庫如何實施垂直拆分,原理是啥?
當(dāng)前位置:點晴教程→知識管理交流
→『 技術(shù)文檔交流 』
水平切分是指,以某個字段為依據(jù)(例如uid),按照一定規(guī)則(例如取模),將一個庫(表)上的數(shù)據(jù)拆分到多個庫(表)上,以降低單庫(表)大小,達(dá)到提升性能的目的的數(shù)據(jù)庫架構(gòu)設(shè)計方法。 水平切分后,各個庫(表)的特點是: 1. 每個庫(表)的結(jié)構(gòu)都一樣; 2. 每個庫(表)的數(shù)據(jù)都不一樣,沒有交集; 3. 所有庫(表)的并集是全量數(shù)據(jù); 垂直拆分是指,將一個屬性較多,一行數(shù)據(jù)較大的表,將不同的屬性拆分到不同的表中,以降低單庫(表)大小,達(dá)到提升性能的數(shù)據(jù)庫架構(gòu)設(shè)計方法。 垂直切分后,各個庫(表)的特點是: 1. 每個庫(表)的結(jié)構(gòu)都不一樣; 2. 一般來說,每個庫(表)的屬性至少有一列交集,一般是主鍵; 3. 所有庫(表)的并集是全量數(shù)據(jù); 舉個例子,用戶表:
垂直拆分之后,可能變成兩個這樣的表:
3. 在內(nèi)存有限,緩沖池大小固定的情況下,長度較短的row,能緩存更多數(shù)據(jù); 4. 緩存高頻的列column,能提升緩沖池命中率,減少磁盤IO; 舉個例子: 1. 假設(shè)數(shù)據(jù)庫內(nèi)存buffer為1G,未拆分的user表1行數(shù)據(jù)大小為1k,那么只能緩存100w行數(shù)據(jù); 知其然,知其所以然。 思路比結(jié)論更重要。 文章很短,3分鐘搞定。 ==全文完== 閱讀原文:原文鏈接 該文章在 2025/1/2 12:21:41 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |