首页 >

mysql批量插入数据越来越慢 |mysql用户ip修改

mysql 清除 function,Linux mysql 登录 2002,amd的u装mysql,hbase数据同步到mysql,mysql服务删除命令,mysql用户ip修改mysql批量插入数据越来越慢 |mysql用户ip修改
$conn = new mysqli($servername, $username, $password, $dbname);
// 检测连接
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "INSERT INTO users (name, age, sex) VALUES ";
for ($i = 0; $iquery($sql) === TRUE) {
$end = microtime(true);
$time = $end - $start;
echo "插入成功,用时:{$time} 秒";
} else {
echo "Error: " . $sql . "
" . $conn->error; } $conn->close();

上述代码演示了 MySQL 数据库的批量插入操作,通过循环构建 SQL 语句,将 10000 条数据插入名为 users 的表中。然而,当大家一次性插入的数据量越来越大时,插入速度却逐渐变慢,直至无法继续执行。

这一现象出现的原因在于,MySQL 默认开启了自动提交模式。当大家每次执行一条 SQL 语句时,都需要向数据库发送一次请求,并且会立即对数据库进行提交。这样的过程需要大量的时间和计算资源,因此在批量插入数据时会造成不必要的浪费。

为了解决这个问题,大家可以使用 MySQL 的预处理语句和事务模式来优化插入效率。

$conn = new mysqli($servername, $username, $password, $dbname);
// 检测连接
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// 关闭自动提交模式,开启事务模式
$conn->autocommit(FALSE);
$sql = "INSERT INTO users (name, age, sex) VALUES (?, ?, ?)";
$stmt = $conn->prepare($sql);
$stmt->bind_param("sis", $name, $age, $sex);
for ($i = 0; $iexecute();
}
// 提交事务
$conn->commit();
$end = microtime(true);
$time = $end - $start;
echo "插入成功,用时:{$time} 秒";
$stmt->close();
$conn->close();

在上述代码中,大家通过将自动提交模式关闭,开启事务模式,并使用预处理语句来实现了批量插入数据库的操作。预处理语句允许大家先将 SQL 语句赋值到一个变量中,然后再将参数绑定到这个语句中,最后在循环中执行语句。这种操作只需要进行一次请求和提交,可以大大提高效率。

因此,当大家在 MySQL 中批量插入数据时,需要注意自动提交模式和事务模式的使用。通过优化插入操作,大家可以提高MySQL 的效率,更高效地管理和储存数据。


mysql批量插入数据越来越慢 |mysql用户ip修改
  • 如何应对MySQL存储的海量数据(从优化到扩展,全方位解决方法) |mysql 全文索引 实战
  • 如何应对MySQL存储的海量数据(从优化到扩展,全方位解决方法) |mysql 全文索引 实战 | 如何应对MySQL存储的海量数据(从优化到扩展,全方位解决方法) |mysql 全文索引 实战 ...

    mysql批量插入数据越来越慢 |mysql用户ip修改
  • java写入mysql多5小时 |mysql group by 空值
  • java写入mysql多5小时 |mysql group by 空值 | java写入mysql多5小时 |mysql group by 空值 ...

    mysql批量插入数据越来越慢 |mysql用户ip修改
  • MySQL外键设置的正确姿势,让你的数据库管理更得心应手 |mysql set delimiter
  • MySQL外键设置的正确姿势,让你的数据库管理更得心应手 |mysql set delimiter | MySQL外键设置的正确姿势,让你的数据库管理更得心应手 |mysql set delimiter ...