1.基本原理
讀寫分離,基本的原理是讓主數(shù)據(jù)庫(kù)處理事務(wù)性增、改、刪操作(INSERT、UPDATE、DELETE),而從數(shù)據(jù)庫(kù)處理SELECT查詢操作。數(shù)據(jù)庫(kù)復(fù)制被用來把事務(wù)性操作導(dǎo)致的變更同步到集群中的從數(shù)據(jù)庫(kù)。
2.讀寫分離的原因
因?yàn)閿?shù)據(jù)庫(kù)的“寫”(寫10000條數(shù)據(jù)到oracle可能要3分鐘)操作是比較耗時(shí)的。
但是數(shù)據(jù)庫(kù)的“讀”(從oracle讀10000條數(shù)據(jù)可能只要5秒鐘)。
所以讀寫分離,解決的是,數(shù)據(jù)庫(kù)的寫入,影響了查詢的效率。
3.什么時(shí)候要讀寫分離?
數(shù)據(jù)庫(kù)不一定要讀寫分離,如果程序使用數(shù)據(jù)庫(kù)較多時(shí),而更新少,查詢多的情況下會(huì)考慮使用,利用數(shù)據(jù)庫(kù) 主從同步 ??梢詼p少數(shù)據(jù)庫(kù)壓力,提高性能。當(dāng)然,數(shù)據(jù)庫(kù)也有其它優(yōu)化方案。memcache 或是 表折分,或是搜索引擎。都是解決方法
4.主從復(fù)制和讀寫分離
通過主從復(fù)制的方式來同步數(shù)據(jù),再通過讀寫分離來提升數(shù)據(jù)庫(kù)的并發(fā)負(fù)載能力。
5.數(shù)據(jù)庫(kù)的其他優(yōu)化方案
1.表拆分
垂直拆分和水平拆分
垂直拆分
垂直拆分是指數(shù)據(jù)列的拆分,把一張列比較多的表拆分為多張表,然后查詢的時(shí)候用join關(guān)聯(lián)起來即可。
拆分原則:
1.把不常用的字段單獨(dú)放在一張表;
2.把text,blob等大字段拆分出來放在附件表中;
3.經(jīng)常組合查詢的列放在一張表中

水平拆分
水平拆分是指數(shù)據(jù)表行的拆分,表的行數(shù)超過200萬行時(shí),就會(huì)變慢,這時(shí)可以把一張表的數(shù)據(jù)拆成多張表來存放。進(jìn)行水平拆分后的表,字段的列和類型和原表應(yīng)該是相同的,但是要記得去掉auto_increment自增長(zhǎng)。
