php返回数据库数据效率优化

当我们从数据库读取数据返回到页面时,如果返回数据量很少,请求数也很少。是很快速的。但当请求量增大,数据量变多时。还是频繁的从数据库中读取数据就很慢了。所以当返回的数据大多是不变的数据或者是很少更新的数据时。我们第一次读取数据库时就将数据存在文件中,之后当需要返回时就直接从文件中返回,省去了连接和读取数据库的步骤。效率自然就会提上去。下面做一个实验。

假设数据库中有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给个定时任务让他每隔多长时间就自己从数据库中拿取刷新一次。从数据库中取数据是效率比较慢的事,应该尽量缓存起来提升效率。

猜你喜欢

转载自blog.csdn.net/xiaopan233/article/details/83211811