PDO vs mysql控制台 - 性能方面

时间:2014-09-01 05:35:34

标签: mysql pdo database-performance

我在 CLI 模式下使用 PHP 5.5 和本地 MySQL服务器5.6.20-1 + deb.sury.org~trusty + 1- log - (Ubuntu)

我有一堆包含DDL和DML语句的SQL文件。这些语句旨在将数据库升级到最新版本,并且需要执行它们才能完成工作。没有一个语句选择要检索的任何记录,他们所做的只是更改结构和/或INSERT / DELETE / UPDATE。唯一的SELECT语句是INSERT INTO SELECTSELECT INTO。值得一提的是,每个文件可能包含由分号分隔的多个SQL语句。

我编写了一个PHP脚本来读取和执行这些针对数据库的SQL。问题是一个特定文件需要很长时间才能执行。在分析之后,我发现问题是INSERT INTO SELECT语句,它试图插入大约30k的记录。

为了优化插入,我在插入之前通过ALTER TABLE .. DISABLE KEYS;禁用了表键,并在插入完成后重新启用它,并且当我在mysql控制台中测试它时它工作。但是当我回到我的PHP CLI脚本时,它花了与以前相同的时间。

确保我使用mysql < file.sql命令测试了所有文件的执行情况。结果如下:

PDO->exec();花了1000多秒。

mysql < file.sql花了大约2秒钟。

为了防止任何误解,我采用上述两种方式执行完全相同的陈述。

有谁知道为什么PDO需要的时间比mysql控制台长得多?

0 个答案:

没有答案