php返回資料庫資料效率優化
阿新 • • 發佈:2018-11-12
當我們從資料庫讀取資料返回到頁面時,如果返回資料量很少,請求數也很少。是很快速的。但當請求量增大,資料量變多時。還是頻繁的從資料庫中讀取資料就很慢了。所以當返回的資料大多是不變的資料或者是很少更新的資料時。我們第一次讀取資料庫時就將資料存在檔案中,之後當需要返回時就直接從檔案中返回,省去了連線和讀取資料庫的步驟。效率自然就會提上去。下面做一個實驗。
假設資料庫中有100條資料。如圖
我們用兩種方法來將其返回到頁面上。第一種用直接從資料庫讀取的方式,第二種用存檔案的方式,對比一下效率。
資料庫讀取的useDb.php程式碼:
<?php $con = mysqli_connect('localhost','root','','test'); // for ($i=0; $i < 10; $i++) { $sql = 'select * from test'; $query = mysqli_query($con,$sql); while($res = mysqli_fetch_assoc($query)){ $arr[] = $res; } echo json_encode($arr); // }
檔案讀取的useFile.php程式碼:
<?php $con = mysqli_connect('localhost','root','','test'); // for ($i=0; $i < 10; $i++) { if(!file_exists('./temp.txt')){ $sql = 'select * from test'; $query = mysqli_query($con,$sql); while ($res = mysqli_fetch_assoc($query)) { $arr[] = $res; } file_put_contents('./temp.txt',serialize($arr)); } echo json_encode(unserialize(file_get_contents('./temp.txt'))); // }
這時沒有for迴圈來模擬大壓力的情況下,看看效率。
直接讀取資料庫的:
存檔案的:
沒有for迴圈時兩個效率都差不多,我們現在把for迴圈的註釋開啟。看看有壓力的情況下二者的效率比較
直接讀取資料庫的:
存入檔案的:
可以看到,直接讀取資料庫用了1.3秒,這樣就太慢了。而讀取檔案的才38毫秒,只是比沒有for迴圈的慢了一點。所以在專案中適當存一下檔案還是對效率有很大的提升的。還可以給userFile給個定時任務讓他每隔多長時間就自己從資料庫中拿取重新整理一次。從資料庫中取資料是效率比較慢的事,應該儘量快取起來提升效率。