Как уменьшить нагрузку на базу mysql?
У меня есть порядка 150 000 строк которые нужно вставлять (insert) в базу данных mysql.
Сейчас я делаю insert на каждую строку, то есть получается 150 000 запросов идет. В итоге я получаю зависание приложения, и ошибки too many connections
в настройках mysql max connections = 150, увеличить тоже не вариант, потому что серверу не хватит ОЗУ и он упадет...
Можно ли как-то делать один insert и в него передавать все строки?
Фрагмент кода моего php скрипта:
$mysqli = new mysqli("localhost", 'base', 'pass', 'user');
$mysqli->query("SET NAMES 'utf8'");
if ($mysqli->connect_errno) {
printf("Не удалось подключиться к базе данных: %s\n", $mysqli->connect_error); exit();
}
foreach ($arr as $key => $v) {
$mysqli->query("INSERT IGNORE INTO `table` (`row1`, `row2`) VALUES ('$v[val1]', '$v[val2]')");
$id = mysqli_insert_id($mysqli);
}
Источник: Stack Overflow на русском