PHP解決大數(shù)據(jù)
一、使用緩存
1、使用程序直接保存到內(nèi)存中。主要使用Map,尤其ConcurrentHashMap。
2、使用緩存框架。常用的框架:Ehcache,Memcache,Redis等。
最關(guān)鍵的問(wèn)題是:什么時(shí)候創(chuàng)建緩存,以及其失效機(jī)制。
對(duì)于空數(shù)據(jù)的緩沖:最好用一個(gè)特定的類型值來(lái)保存,以區(qū)別空數(shù)據(jù)和未緩存的兩種狀態(tài)。
二、數(shù)據(jù)庫(kù)優(yōu)化
1、表結(jié)構(gòu)優(yōu)化
2、SQL語(yǔ)句優(yōu)化,語(yǔ)法優(yōu)化和處理邏輯優(yōu)化??捎涗浉髡Z(yǔ)句執(zhí)行時(shí)間,有針對(duì)性的分析
3、分區(qū)
4、分表
5、索引優(yōu)化
6、使用存儲(chǔ)過(guò)程代替直接操作
三、分離活躍數(shù)據(jù)
例如用戶,可以分為活躍用戶和不活躍用戶。
四、批量讀取和延遲修改
1、高并發(fā)情況可以將多個(gè)查詢請(qǐng)求合并到一個(gè)。
2、高并發(fā)且頻繁修改的可以暫存緩存中。
五、讀寫分離
數(shù)據(jù)庫(kù)服務(wù)器配置多個(gè),配置主從數(shù)據(jù)庫(kù)。寫用主數(shù)據(jù)庫(kù),讀用從數(shù)據(jù)庫(kù)。
六、分布式數(shù)據(jù)庫(kù)
將不同的表存放到不同的數(shù)據(jù)庫(kù)中,然后再放到不同的服務(wù)器中。有些復(fù)雜問(wèn)題,如:事務(wù)處理,多表查詢。
七、NoSql和Hadoop
1、NoSql,not only SQL,沒(méi)有關(guān)系型數(shù)據(jù)庫(kù)那么多限制,比較靈活高效。
2、Hadoop,將一個(gè)表中的數(shù)據(jù)分成多塊,保存到多個(gè)節(jié)點(diǎn)(分布式)。每一塊數(shù)據(jù)都有多個(gè)節(jié)點(diǎn)保存(集群)。集群可以并行處理相同的數(shù)據(jù),還可以保證數(shù)據(jù)的完整性。
以上內(nèi)容僅供參考!
推薦教程:PHP視頻教程