Pool di Thread in MariaDB 5.1 - 5.3
Informazioni sul Pool of Threads
Questa è una versione estesa del pool-of-threads di MySQL 6.0. Ciò permette di utilizzare un insieme limitato di thread per gestire tutte le query, invece del metodo 'one-thread-per-connection'. Recentemente questa caratteristica è stata chiamata anche "thread pool" o "thread pooling". Essa è disponibile (in una diversa implementazione) nelle edizioni Enterprise di MySQL (ma non nella Community edition).
Questo può essere un grande vantaggio negli ambienti in cui la maggior parte delle query sono eseguite rapidamente e vi sono pochi lock a livello di riga o di tabella.
Istruzioni
Per abilitare il pool-of-threads è necessario eseguire configure con l'opzione --with-libevent
(il chè viene fatto automaticamente dagli script 'max' che sono nella directory BUILD):
./configure --with-libevent
Quando si avvia mysqld con il codice del pool of threads bisogna usare:
mysqld --thread-handling=pool-of-threads --thread-pool-size=20
I valori predefiniti sono:
thread-handling= one-thread-per-connection thread-pool-size= 20
Un problema del pool-of-threads è che se tutti i threads in esecuzione sono occupati (per esempio eseguono lunghe query) o sono bloccati per via di un lock a livello di riga o tabella, non è possibile stabilire nuove connessioni e non si può effettuare il login per trovare il problema e terminare le query.
Per risolvere questo problema, sono state introdotte due nuove opzioni in mysqld:
--extra-port=# (Default 0) --extra-max-connections=# (Default 1)
Se extra-port è <> 0 si potrà creare un numero di thread non superiore a max_connections + 1 extra SUPER user che si connette alla 'extra-port' via TCP/IP. Queste connessioni utilizzano il metodo old one-thread-per-connection.
Per connettersi attraverso la extra-port:
mysql --port='numero-extra-port' --protocol=tcp
Ciò permette di utilizzare liberamente il modello connessioni/thread.
Alcuni link utili: