新聞中心
php MySQL 很多用戶頻繁讀寫(xiě)操作怎么優(yōu)化
有很多種方法可以優(yōu)化:
為信陽(yáng)等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及信陽(yáng)網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都網(wǎng)站制作、網(wǎng)站建設(shè)、信陽(yáng)網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!
數(shù)據(jù)庫(kù)設(shè)置主從,進(jìn)行讀寫(xiě)分離;
數(shù)據(jù)分表,如按月份分表,需要統(tǒng)計(jì)數(shù)據(jù)就查總表;
優(yōu)化查詢語(yǔ)句,適當(dāng)增加索引;
字段優(yōu)化,對(duì)不常用或者沒(méi)有必要的字段可以考慮放在另外一張表里,避免單表數(shù)據(jù)過(guò)大,字段過(guò)多。
PHP多次訪問(wèn)數(shù)據(jù)庫(kù),是否有優(yōu)化方案
我只針對(duì)你這個(gè)做優(yōu)化吧。。
第一個(gè)不要用select * 這樣的sql語(yǔ)句,你需要什么字段就寫(xiě)哪些字段
都需要的話,你都寫(xiě)出來(lái),select * 效率很低的。。
第二個(gè)如果說(shuō)你的后臺(tái)中對(duì)這些數(shù)據(jù)的變動(dòng)不是很頻繁
然后你可以將查詢結(jié)果存入memcahe中
我寫(xiě)一段偽代碼
$mem_key="all";
$res = $memcache-get($mem_key);
//如果沒(méi)有存入memcache中
if (empty($res){
//sql語(yǔ)句可以用left jion on關(guān)聯(lián)查詢
$aaa="select b.字段1,b.字段2...from btb as b left jion tb as b.id=t.id";
$bb=$mysql-_query($aaa);
while(!!$_rows=$mysql-_fetch_array_list($bb)){
//do something
$res ....
}
//結(jié)果存入memecahed中
$memcache-set($mem_key,$res,0,超時(shí)時(shí)間);
}
$res就是你獲取的結(jié)果。。
你這段代碼基本可以這樣。。
當(dāng)大量用戶訪問(wèn)數(shù)據(jù)庫(kù)php怎么解決
sql多用戶訪問(wèn)數(shù)據(jù)庫(kù)其實(shí)就是事務(wù)并發(fā),會(huì)引起如下問(wèn)題:
1、臟讀:一個(gè)事務(wù)讀取到了另外一個(gè)事務(wù)沒(méi)有提交的數(shù)據(jù)
事務(wù)1:更新一條數(shù)據(jù)
事務(wù)2:讀取事務(wù)1更新的記錄
事務(wù)1:調(diào)用commit進(jìn)行提交
此時(shí)事務(wù)2讀取到的數(shù)據(jù)是保存在數(shù)據(jù)庫(kù)內(nèi)存中的數(shù)據(jù),稱為臟讀。
讀到的數(shù)據(jù)為臟數(shù)據(jù)
詳細(xì)解釋:
臟讀就是指:當(dāng)一個(gè)事務(wù)正在訪問(wèn)數(shù)據(jù),并且對(duì)數(shù)據(jù)進(jìn)行了修改,而這種修改還沒(méi)有提交到數(shù)據(jù)庫(kù)中,這時(shí),
另外一個(gè)事務(wù)也訪問(wèn)這個(gè)數(shù)據(jù),然后使用了這個(gè)數(shù)據(jù)。因?yàn)檫@個(gè)數(shù)據(jù)是還沒(méi)有提交的數(shù)據(jù),那么另外一個(gè)
文章名稱:php總是頻繁訪問(wèn)數(shù)據(jù)庫(kù) php訪問(wèn)記錄
網(wǎng)站地址:http://ef60e0e.cn/article/doeeosj.html