2011-04-22 95 views
3

我读过各种来源(如thisthis,或this一个)约use_result()(无缓冲查询)store_result()(缓冲查询)之间的差异,也知道在所有结果都发送给客户端之前,MySQL会保持数据锁定(对于整个表中的MyISAM)。PHP/MySQL的(我)use_result,store_result和MyISAM表锁

我不明白的是为什么用use_result()(无缓冲)查询MySQL保持锁的时间要长于store_result()(缓冲)查询的时间。为什么使用store_result()与使用use_result()并自己进行缓冲(进入PHP数组)不同?

回答

2

使用store_result()时mysql驱动程序(写在低于php的级别)将数据从服务器传输到客户端并释放锁。

当在阵列中使用use_result()和缓冲时,您需要创建一个php循环,并且因为php是一个解释器,循环速度较慢,所以每行获取之间会存在延迟。

为了看到这延迟测量结果所花费的时间差来执行

for (i = 0; i < 100000; i++) {} 

之间phpc

一般来说,PHP代码是慢然后c代码,和PHP扩展和内部功能是用c代码编写,所以使用扩展名或内部函数总是比在php代码

中编写相同的算法更快