MySQL多查询/事务限制

时间:2016-02-16 13:48:17

标签: php google-cloud-sql

我想弄清楚MySQL是否足够我的用例。我尝试在我的本地mysql服务器中插入100 000行,这很好。我看到DB开始填充数据。

然后我再次使用Google Cloud SQL运行相同的插入脚本。一切似乎都很好,但由于某种原因,DB在67667条目后停止插入条目,即使DB的响应是插入成功。

MySQL是否有某种限制,或者可能导致这种行为?

我的测试脚本:

// Create connection
$conn = new mysqli($servername, $username, $password);

// Check connection
if ($conn->connect_error) {
  die("Connection failed: " . $conn->connect_error);
}

$conn->select_db($database);
$insertData = '';

for ($i = 0; $i < 100000; $i++) {
  $insertData .= "INSERT INTO table (isin) VALUES ('".uniqid()."');";
}

if ($conn->multi_query($insertData) === true) {
  echo "New records created successfully";
} else {
  echo "Error: <br>" . $conn->error;
}
$conn->close();

我的测试表只有两列,idisin数字。

2 个答案:

答案 0 :(得分:2)

尝试使用mysql批量插入,例如

INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);

在你的循环中构建这个部分,即(1,2,3),(4,5,6),(7,8,9),然后只使用一个INSERT查询

答案 1 :(得分:2)

尝试这种方式:

$val = "";
for ($i = 0; $i < 100000; $i++) {
  $val .= "('".uniqid()."'),";
}
$val = rtrim($val,",");
$insertData = "INSERT INTO table (isin) values $val";
$conn->query($insertData);