我只是切换到mysqlnd,以便能够使用http://php.net/manual/en/book.mysqlnd-ms.php,但是与libmysql相比,我看到了一些严重的性能下降。
NewRewlic显示,在切换到mysqlnd https://db.tt/68r9RfhJ之后,在PHP上花费了更多的100 in
我创建了一个基准来重现这个问题,它非常简单:
$dbh = new PDO("mysql:host=$host; dbname=$dbname;", $user, $pass);
for ($i = 0; $i < 1000; $i++) {
$sth = $dbh->prepare("SELECT * FROM Orders LIMIT 100");
$sth->execute();
$result = $sth->fetchAll(PDO::FETCH_ASSOC);
}执行时间:
版本信息:
有谁能解释一下这背后的原因以及如何解决呢?
setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false))的查询的缓冲,这在生产中是很难做到的,这是因为特性的变化和可能的副作用。发布于 2015-06-17 14:51:28
mysqlnd并不慢。只是对记忆更有效。PHP不是通过复制所有数据从mysql获取结果,而是成为与mysql对话并将数据存储在内存中的相同进程。因此,最终您将使用一半的内存,但增加的计算成本可能是因为必须在PHP进程中分配该内存。您可能只是在新版本中看到从mysql到PHP的转变。我很怀疑你在这方面有什么值得关注的地方。
https://stackoverflow.com/questions/30894833
复制相似问题