Я также столкнулся с такой путаницей в MySQL для потоков и соединений.Я объясню то, что я выучил и пойму, изучая то же самое, если что-то, что я неправильно понял тогда или все еще в замешательстве, тогда, пожалуйста, исправьте меня.
Некоторые основы в MySQL:
- MySQL server is a single process application.
- It is multithreaded.
- It accepts connections like TCP/IP server.
- Each connection gets a thread.
- These threads are sometimes named processes, and sometimes they're referred to as connections.
Последнее и второе последнее замечание приводят в замешательство. Мы думаем, что между соединениями и активными потоками существует соотношение 1-1.Это также верно, но тогда, существует пул потоков , , что означает, что могут быть потоки, которые не связаны ни с одним соединением .
Каждое новое соединение получает свое собственноенить.Каждое новое соединение создает новый поток, а отключение требует уничтожения потока.Таким образом, между соединениями и активными потоками есть отображение 1-1.После уничтожения потоков он может перейти в пул потоков.Таким образом, количество потоков больше или равно количеству соединений.
Также, если вы выполните запрос ниже
SELECT t.PROCESSLIST_ID,IF (NAME = 'thread/sql/event_scheduler','event_scheduler',t.PROCESSLIST_USER) PROCESSLIST_USER,t.PROCESSLIST_HOST,t.PROCESSLIST_DB,t.PROCESSLIST_COMMAND,t.PROCESSLIST_TIME,t.PROCESSLIST_STATE,t.THREAD_ID,t.TYPE,t.NAME,t.PARENT_THREAD_ID,t.INSTRUMENTED,t.PROCESSLIST_INFO,a.ATTR_VALUE FROM performance_schema.threads t LEFT OUTER JOIN performance_schema.session_connect_attrs a ON t.processlist_id = a.processlist_id AND (a.attr_name IS NULL OR a.attr_name = 'program_name') WHERE 1=1
Тогда вы увидите столбец TYPE
, в котором значениялибо FOREGROUND
, либо BACKGROUND
, так что это говорит о том, что могут быть некоторые потоки, связанные с БД, для выполнения некоторой (фоновой) работы (например, потока событий, потока монитора и т. д.).
в целом, касается c3p0о соединении, а не о потоках, так что вы должны проверить SHOW FULL PROCESSLIST
для соединений с сервером БД.
Я надеюсь, что я устранил путаницу, которую вы испытываете с потоками и соединениями MySQL.