Назад к вопросам
Middle
104
questionbank

Как узнать количество текущих подключений к базе данных?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Для PostgreSQL:

SELECT count(*) FROM pg_stat_activity;  -- Все активные сессии
SELECT count(*) FROM pg_stat_activity WHERE state = 'active'; -- Только текущие выполняющиеся запросы

Для MySQL:

SHOW STATUS LIKE 'Threads_connected'; // Количество текущих активных подключений
SHOW PROCESSLIST; // Список всех процессов с их текущим состоянием

Для SQLite:

# Количество подключений определяется на уровне приложения, 
# т.к. SQLite - это файл и не имеет встроенного сетевого сервера.
import sqlite3

def get_connections(db_path):
    # В общем случае, это количество объектов Connection, 
    # созданных в приложении, которые еще не закрыты.
    # SQLite не хранит состояние "подключений" как сетевая СУБД.
    pass 

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

Пример с SQLAlchemy:

from sqlalchemy import create_engine

engine = create_engine('postgresql://user:pass@host:port/db', pool_size=10, max_overflow=2)

# получить информацию о пуле
pool_status = engine.pool.status() 
print(pool_status) 
# Пример вывода: "Pool size: 10  Connections in pool: 5 Current overflow: 1"
# "Connections in pool" + "Current overflow" - количество текущих подключений, 
# которые могут быть активны или находиться в режиме ожидания.