В настоящее время я пытаюсь заполнить базу данных MySQL5.1 на текущей машине с Ubuntu> 5 000 000 записей.
Из-за архитектуры программы для каждого оператора INSERT открывается и закрывается новое соединение с базой данных. Я знаю, что это дорогостоящая операция, но для ее изменения потребуется изменить лут-код, поэтому я бы предпочел этого избежать.
Проблема Я сталкиваюсь с тем, что через некоторое время (обычно около 12 секунд, но это число увеличивается после некоторых повторных попыток) этот процесс не может подключиться к базе данных Больше. Другие процессы могут без проблем подключаться к базе данных.
Я не думаю, что это проблема MySQL, потому что ни один из журналов MySQL не сообщает об ошибках. Кроме того, одновременно может быть открыто максимум 1 соединение (которое я проверил, посмотрев на переменные состояния MySQL).
Вопрос : Существует ли ограничение на количество последовательных подключений к сокету, которые могут быть открыты в данный период времени?
Вот упрощенный Perl-скрипт (на самом деле программа на Java), которая приводит к той же проблеме (переменные базы данных не включены):
# ...
my $i = 0;
my $DBH = 0;
for ($i = 0;$i < $MAX; ++$i) {
$DBH = DBI->connect("DBI:mysql:$DBNAME:$DBHOST:$DBPORT", $DBUSER, $DBPW)
or die ("Error - Connection to database failed: \n $i times ok\n".DBI->errstr);
$DBH -> disconnect;
if ($i % 10000 == 0) {
print $i. " ";
}
}
Вопрос : Есть предложения / идеи?