首页 > 解决方案 > 在 php 中设置 mysql 属性会更改每个人的属性还是仅更改当前连接?

问题描述

我在 php 中运行一个 mysql 查询,它返回大量数据并需要一些时间来运行。为了让这个查询运行,我必须告诉 mysql 不要缓冲查询。

我正在使用 mysql 游标来处理正在执行的查询,这使我可以大大节省内存使用量。

为了使用光标,我必须设置MYSQL_ATTR_USE_BUFFERED_QUERY = false.

例如:

// Turn off mysql buffering
DB::connection()->getPdo()->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false);

$complexQuery->cursor();

// Turn mysql buffering back on
DB::connection()->getPdo()->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);

此查询大约需要 12 秒才能运行。我想知道在此期间其他会话是否也有MYSQL_ATTR_USE_BUFFERED_QUERY = false或它是否特定于连接?

标签: phpmysqllaravel

解决方案


推荐阅读