PHP/MySQL(i)使用结果集(use_result)、存储结果集(store_result)和MyISAM表锁

3

我已经阅读了各种来源(例如这个这个这个),了解了use_result()(非缓冲查询)和store_result()(缓冲查询)之间的区别,并且也知道MySQL会在所有结果发送到客户端之前锁定数据(在MyISAM的情况下是整个表)。

我不明白的是,为什么使用use_result()(非缓冲)查询时,MySQL会比使用store_result()(缓冲)查询时保持锁定更长的时间。为什么使用store_result()比使用use_result()并自己进行缓冲(到PHP数组中)会有如此大的不同?

1个回答

2

使用 store_result() mysql 驱动程序(比 php 更底层)会将数据从服务器传输到客户端并释放锁定。

当使用 use_result() 和数组缓冲时,您需要进行 php 循环,因为 php 是解释器,所以循环速度较慢,因此在每次行提取之间存在延迟。

为了看到这个延迟,请测量执行所需的时间差异。

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

phpc之间的区别:

一般来说,php代码比c代码慢,并且php扩展和内部函数是用c编写的,因此使用扩展或内部函数总是比在php代码中编写相同算法更快。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接