Inserting large dataset into temporary table (MariaDB) 在使用 PHP/PDO 时很慢,但在使用 Workbench 时很好

问题描述 投票:0回答:0

当使用 Workbench 并使用大型数据集(数百万行)对临时表执行查询时,我看到执行时间约为 7 秒(包括最终选择)——这是可以接受的。但是,当我通过 PHP/PDO 运行相同的查询时,查询在插入临时表时会减慢到几分钟。

只要使用临时表,这种行为似乎就是这种情况。

我的想法是,查询使用了适当的索引,并且 MariaDB 数据库配置正确,因为在使用 Workbench 时,查询确实可以正确有效地运行。我还假设有足够的 RAM 等

将 PDO 设置视为可能的原因。我目前正在使用:

PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true,
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'",
PDO::MYSQL_ATTR_FOUND_ROWS => true,
PDO::MYSQL_ATTR_COMPRESS => true

特别是对于这个查询,我设置:

PDO::MYSQL_ATTR_DIRECT_QUERY => true

我也在使用准备好的语句使用

$result = self::$dbh->prepare($query);
$result->execute($params);

无论如何,似乎没有什么会影响通过 PHP/PDO 运行时的响应时间。有任何想法吗?可以在这里做些什么来提高性能吗?

PHP/PDO 客户端 API 版本 => mysqlnd 7.4.33 / MariaDB 10.8.3

php mysql performance pdo mariadb
© www.soinside.com 2019 - 2024. All rights reserved.