Возможно ли как то ускорить MySQL-connector в python?
Пишу программу, она предполагает большое количество запросов к бд. Python 3.11, MySQL 8 +- последний, mysql-connector-python последний с pipа.
Обнаружил, что один простой SELECT к таблице на 30 строк обрабатывается на 2 порядка дольше, чем все мои измышления в области кода.
Я, конечно, сейчас пытаюсь заоптимизировать так, чтобы запросов стало поменьше, но...
Чую я тут узкое место, на котором программа начнет тормозить с ожидаемым ростом количества запросов.
И избавиться от них переведя все данные в программу я не могу, там ожидаются изменения в базе из других источников, которые надо будет учитывать.
Что я могу предпринять для ускорения выполнения запросов? Какие то настройки коннектора и mysql'а? Переход на какой то другой коннектор? Или радикальнее - переход на другую субд? Таблички прям обычные-обычные, разве что нужен множественный параллельный доступ.
Код, в общем то, тоже простой и стандартный, со всяких мануалов:
# pip install -U mysql-connector-python
# Обновлен до последней версии
from mysql.connector import connect
with connect(host='localhost', user='root', password='', database='',) as connection:
with connection.cursor() as cursor:
select_query = "SELECT value FROM table WHERE id = 5;"
cursor.execure(select_query)
value = cursor.fetchone()[0]
select_query = "SELECT value FROM table WHERE name ='Столик';"
cursor.execure(select_query)
value = cursor.fetchone()[0]
select_query = f"SELECT value FROM table WHERE date < {datetime.now()};"
cursor.execure(select_query)
value = cursor.fetchall()[0]
PS копался-копался, возможно я был не прав с вычислением источника проблем. Пойду дальше копаться.
Ответы (1 шт):
with connect убирай и используй пул конектов.
https://dev.mysql.com/doc/connector-python/en/connector-python-connection-pooling.html
Сам пул клади где-то глобально и доставай оттуда готовые коннекты.