我已经阅读了各种来源(如 this 、 this 或 this 之一)关于 use_result()
(无缓冲查询)和 store_result() 之间的区别
(缓冲查询)并且还知道 MySQL 保持对数据的锁定(在 MyISAM 的情况下锁定整个表)直到所有结果都已发送到客户端。
我不明白的是,为什么 use_result()
(无缓冲)查询 MySQL 比 store_result()
(缓冲)查询保持锁定的时间更长。为什么使用 store_result()
与使用 use_result()
并自己进行缓冲(到 PHP 数组中)有如此不同?
最佳答案
当使用 store_result()
mysql 驱动程序(写在比 php 更低的级别)时,将数据从服务器传输到客户端并释放锁。
当使用 use_result()
并在数组中进行缓冲时,您需要创建一个 php 循环,并且由于 php 是一个解释器,因此循环速度较慢,因此每次获取行之间都会有延迟。
为了看到这个延迟测量执行所花费的时间差
for (i = 0; i < 100000; i++) {}
在 php
和 c
之间>
一般来说,php 代码比 c 代码慢,而 php 扩展和内部函数是用 c 代码编写的,所以使用扩展或内部函数总是比用 php 代码编写相同的算法更快
关于PHP/MySQL(i) use_result、store_result 和 MyISAM 表锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5753948/