php - 使用 PDO 向 MySQL 插入 1000 行的有效方法

标签 php mysql pdo

我每次要往MySQL中插入1000行数据。目前,我使用 PDO 和 for-loop 逐行插入数据库。有没有更有效的方法来获得更好的性能?因为我必须将 max_execution_time 设置为 5 分钟。

function save()
{
            return $query = $this->insert("
                INSERT INTO gadata (landing_page, page_title, page_views, visits, visitors, bounce_rate, pageviews_per_visit, time_on_page, avg_time_on_page, day, month, year, hour)
                VALUES (:landing_page, :page_title, :page_views, :visits, :visitors, :bounce_rate, :pageviews_per_visit, :time_on_page, :avg_time_on_page, :day, :month, :year, :hour)", $this->data);
}

protected function insert($sql, array $data) {
    $q = $this->_db_handler->prepare($sql);

    foreach ($data as $k => $v)
    {
       $q->bindValue(':' . $k, $v);
    }

    $q->execute();
}

最佳答案

不是 PDO 也不是您插入的方式导致插入如此延迟,而是 innodb 引擎。所以你有 3 个选择:

  1. 将所有插入包装到事务中。
  2. 使用 root 权限,将 innodb_flush_log_at_trx_commit 变量设置为 2,以使 innodb 使用文件缓存进行写入 - 这将使您的插入速度非常快。
  3. 按照 Manu 的建议在一个查询中运行所有插入

关于php - 使用 PDO 向 MySQL 插入 1000 行的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15862561/

相关文章:

ubuntu下mysql登录问题

php - 无法访问父成员

mysql - 从数据库中删除单行

PHP 到 MySQL 不会显示所有列

php - 使用 PHP 检索 URL 中显示的用户 ID

javascript - 使用 PHP 显示名称

mysql - 如何在having子句中提出两个条件

php - 用户的时区如何在 facebook 中编码

mysql - GROUP_CONCAT 行到一个字符串

ubuntu - PDO_OCI : could not find driver