одновременные подключения к базе данных mysql

#mysql #python-2.7 #mysql-python

#mysql #python-2.7 #mysql-python

Вопрос:

Я создал программу, которая получает пользовательский ввод и сохраняет его в базе данных MySQL. Я хочу реализовать эту программу на нескольких компьютерах, чтобы пользователи могли одновременно загружать информацию в одну и ту же базу данных. База данных очень проста, в ней всего семь столбцов, и пользователь будет вводить только четыре из них.

Было бы около двух-трех сотен компьютеров, загружающих информацию (не всегда в одно и то же время, но это может произойти). Насколько это надежно? Возможно ли это вообще?

Это мой первый скрипт, поэтому я ценю, если вы могли бы указать мне правильное направление. Заранее спасибо.

Ответ №1:

Наличие одновременных подключений из одного и того же скрипта зависит от того, как вы обрабатываете запросы. Типичным выбором является разветвление нового процесса Python (обычно обрабатываемого веб-сервером) или обработка всех запросов одним процессом.

Если вы разветвляете процессы (каждый запрос обрабатывается заново):

Одно подключение к MySQL должно быть в полном порядке (поскольку общее количество активных подключений будет равно количеству обрабатываемых вами запросов).

Обычно вам не следует беспокоиться о нескольких подключениях, поскольку одно соединение MySQL (и сервер) может обрабатывать нагрузки, намного превышающие эту (конечно, полностью зависящие от аппаратного обеспечения). В этом случае, как сказал @GeorgeDaniel, более важно, чтобы вы сосредоточились на контроле количества активных процессов, которые у вас есть, и убедились, что они не перегружают ваш компьютер.

Если вы запускаете один процесс:

Опять же, одно соединение с MySQL должно быть достаточно быстрым для всех этих запросов. Если вы хотите, вы можете изучить группировку вставок вместе, а также несколько подключений.

MySQL быстр и должен быть способен легко обрабатывать более 200 одновременных подключений для записи / чтения, независимо от того, сколько активных подключений у вас открыто. И еще раз, производительность, которую вы получаете от MySQL, полностью зависит от вашего оборудования.

Комментарии:

1. Думаю, тогда у меня не будет проблем. Спасибо за полное объяснение.

Ответ №2:

Да, возможно иметь до такого количества подключений MySQL. Это зависит от нескольких переменных. Максимальное количество подключений, которое MySQL может поддерживать, зависит от качества библиотеки потоков на данной платформе, объема доступной оперативной памяти, объема оперативной памяти, используемой для каждого соединения, рабочей нагрузки от каждого соединения и желаемого времени отклика.

Количество разрешенных подключений контролируется системной переменной max_connections. Значение по умолчанию равно 151 для повышения производительности при использовании MySQL с веб-сервером Apache.

Важной частью является правильная обработка подключений и их надлежащее закрытие. Вы не хотите, чтобы возникали избыточные подключения, поскольку это может вызвать проблемы с замедлением в долгосрочной перспективе. Убедитесь, что при написании кода вы правильно закрываете соединения.

Комментарии:

1. dev.mysql.com/doc/refman/5.5/en/too-many-connections.html также является хорошим началом для получения информации об этом

2. Я не понимал, что мне приходилось закрывать соединения после каждого оператора insert. Спасибо!