應(yīng)該是你的數(shù)據(jù)庫配置限制了內(nèi)存使用量導(dǎo)致的.建議查找下相關(guān)mysql配置資料.
創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供榆林網(wǎng)站建設(shè)、榆林做網(wǎng)站、榆林網(wǎng)站設(shè)計(jì)、榆林網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、榆林企業(yè)網(wǎng)站模板建站服務(wù),十載榆林做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
直接倒序取一部分,如果可以就應(yīng)該是配置的問題.
如果慢的話要考慮字段優(yōu)化
問題需要具體.不銘感的話可以把數(shù)據(jù)發(fā)來我調(diào)試一下看看.
?php
mysql_connect('127.0.0.1','root','123456');
$sql="update?sjk._sjk?set?b='1',c='1'?where?a='123'";
if?(mysql_query($sql))?echo?'修改成功。';
else?echo?"修改失敗,SQL:$sqlbr錯(cuò)誤:".mysql_error();
mysql_close();
?
你說的寫文件是個(gè)思路。如果你只是要求某一個(gè)字段是唯一,可以把這個(gè)存在內(nèi)存中,每次進(jìn)行驗(yàn)證。然后把驗(yàn)證通過的數(shù)據(jù)寫入文件,最后在統(tǒng)一從文件中讀出來存入數(shù)據(jù)庫。
但是又會(huì)出現(xiàn)個(gè)問題。如果你是10萬條數(shù)據(jù)在文件里,你要是想用一個(gè)INSERT插入,那必須得先把這數(shù)據(jù)讀到內(nèi)存里,肯定也很慢,而且不穩(wěn)定。如果你逐條讀出插入,對(duì)數(shù)據(jù)庫也是個(gè)消耗。不過你可以把數(shù)據(jù)拆散,比如每1000條插一次。
給你個(gè)思路
先最大化 PHP 效率充分利用 系統(tǒng)資源。
把 sql 拆開比如2萬一個(gè)用一個(gè) php 去跑 總共用5個(gè) php 一起跑。
然后最大化 mysql 效率
查一下mysql 的瓶頸在哪。針對(duì)性的去優(yōu)化。
查詢慢 就看看索引什么的
寫慢就查查 buffer 什么的。
這里強(qiáng)烈建議讀寫分離。
用不通的數(shù)據(jù)庫實(shí)例去分別處理讀寫。
再看看磁盤 IO 性能??纯搓?duì)列數(shù)據(jù)。不行就上陣列。或者單表部署單個(gè)磁盤?;蛘咦x寫在不同的磁盤進(jìn)行。
當(dāng)然用緩存也可以。
比如把10萬條都獨(dú)出來存到 memcache 等內(nèi)存緩存中。循環(huán)處理數(shù)據(jù)的時(shí)候讀內(nèi)存的數(shù)據(jù)不用查數(shù)據(jù)庫。
還有終極大招。
你直接把數(shù)據(jù)庫都搬內(nèi)存里面。。。
檢查下 php.ini 文件中的限制
upload_max_filesize
post_max_size
如果超出你提交的文件大小,就改大一些
改了之后重啟 apache