Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
Sashka
12 / 12 / 2
Регистрация: 03.04.2009
Сообщений: 72
1

Тип соединение MYSQL. Превышено максимальное количество соединений

17.12.2013, 12:31. Просмотров 1805. Ответов 8
Метки нет (Все метки)

Для работы с БД использую MySQLConnector. Открывается постоянное соединение, которое мне не нужно. Пишу сервис; постоянное соединение не закрывается полностью, пока не закроешь программу. Плюс приложение многопоточное; несколько потоков открыли соединение одновременно, отработали, закрыли соединение. Однако следующие потоки открывают новые соединения, а старые соединения остаются. В итоге исклчение: превышено максимальное количество соединений. Как лучше поступить? Вообще хотелось бы открыть соединение как в PHP (mysql_connection), а не mysql_pconnect().
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.12.2013, 12:31
Ответы с готовыми решениями:

превышено максимальное количество открытых курсоров
Добрый день! Вот с чем я столкнулся - превышено максимальное количество открытых курсоров. ...

Превышено максимальное количество присоединённых клиентов (ГИС "ИнГЕО")
Здраствуйте возникла проблема с программой ГИСИНГЕО Превышено максимальное количество допустимых...

Как узнать количество доступных соединений к mysql
всем привет)))я хочу узнать количество доступных соединений к бд. я нашел только вот такой запрос...

Превышено максимальное время работы программы
#include <math.h> #include <stdio.h> #include <iostream> using namespace std; int...

Открытие файла .tsv - "Превышено максимальное число строк."
Добрый день! Подскажите, в чем может быть дело? Пытаюсь открыть .tsv файл в котором 1001 строчка,...

8
facepalm_by
0 / 0 / 1
Регистрация: 25.12.2013
Сообщений: 7
31.01.2014, 15:40 2
Столкнулся с той же проблемой, ребята нужна помощь! Подскажите пожалуйста.
0
Grishaco
437 / 361 / 100
Регистрация: 29.06.2010
Сообщений: 981
Записей в блоге: 1
31.01.2014, 16:38 3
Покажите код как вы открываете/закрываете соединение.
1
facepalm_by
0 / 0 / 1
Регистрация: 25.12.2013
Сообщений: 7
01.02.2014, 15:10 4
Соединения не плодятся уже, вопрос как ускорить insert в БД.

C#
1
2
3
4
5
6
7
8
9
10
11
            MySqlConnection conn = new MySqlConnection("Database=n;Data Source=localhost;User Id=root;Password=");
 
            for (int i = 1; i < 10000; i++)
            {
                string sql = String.Format("INSERT INTO `test` (`v`) VALUES('" + i + "')");
                MySqlCommand cmd = new MySqlCommand(sql);
                cmd.Connection = conn;
                conn.Open();
                cmd.ExecuteNonQuery();
                cmd.Connection.Close();
            }
Вставка идет порядка 1000 запросов в секунду на мой машине, как этот процесс ускорить.
0
Grishaco
437 / 361 / 100
Регистрация: 29.06.2010
Сообщений: 981
Записей в блоге: 1
01.02.2014, 18:09 5
Объединяйте запрос в один, например

SQL
1
2
3
4
5
6
7
INSERT INTO `test` (`v`)
SELECT '1'
UNION ALL
SELECT '2'
UNION ALL
SELECT '3'
и т.д.
1
facepalm_by
0 / 0 / 1
Регистрация: 25.12.2013
Сообщений: 7
01.02.2014, 18:18 6
Перешел на InnoDB и обернул в транзакцию, увеличить скорость только так получилось, теперь до 8тыс.
На MyISAM вытянуть больше скорость наверное нельзя.
0
Grishaco
437 / 361 / 100
Регистрация: 29.06.2010
Сообщений: 981
Записей в блоге: 1
01.02.2014, 18:22 7
Лучший ответ Сообщение было отмечено tezaurismosis как решение

Решение

Самое главное забыл, откройте соединение до цикла.

C#
1
2
3
4
5
6
7
8
9
10
11
using(MySqlConnection conn = new MySqlConnection("Database=n;Data Source=localhost;User Id=root;Password="))
{
conn.Open();
for (int i = 1; i < 10000; i++)
            {
                string sql = String.Format("INSERT INTO `test` (`v`) VALUES('" + i + "')");
                MySqlCommand cmd = new MySqlCommand(sql);
                cmd.Connection = conn;
                cmd.ExecuteNonQuery();
            }
}
1
XIST
1125 / 837 / 116
Регистрация: 01.10.2009
Сообщений: 2,544
Записей в блоге: 1
01.02.2014, 23:48 8
В настройках сервера есть параметр на макс соединение
0
Sashka
12 / 12 / 2
Регистрация: 03.04.2009
Сообщений: 72
19.03.2014, 10:47  [ТС] 9
Увеличить максимальное количество подключений не вариант. Самый первый вариант был. Не подходит.

Все решилось! В строке подключения нужно добавить pooling=false. В этом случае, когда в моём коде поток отработал, соединение закрывается, а не остается висеть несмотря на то, что mysql показывает соединение закрытым. При моём количестве потоков, отлично подходит. При этом нет проблем с доступом к БД, да и по скорости нормально. Единственное, что приходится каждый раз открывать соединение, хотя до этого соединение из пула не использовалось, каждый поток открывал свое соединение.
Вот ссылка: http://www.connectionstrings.com/mysql/ пункт Connection Pooling
0
19.03.2014, 10:47
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.03.2014, 10:47

Задача "Подсчитайте максимальное количество сетей класса В и максимальное количество адресов ком. кл. С
Добрый вечер огромная просьба подскажите пожалуйста по задаче. Вроде же и простая но загнала в...

Напечатать дни, когда было превышено среднемесячное количество осадков
Известны сведения о количестве осадков (в мм) за каждый день марта текущего года. Напечатать дни,...

Многопоточная работа с MySql. Слишко много соединений
Добрый день! В приложении, которое работает с базой данных MySql имеется функционал по считыванию...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru