O valor padrão de innodb_read_io_threads
e innodb_write_io_threads
é 4. Como você verifica se a carga do servidor precisa de um número maior de threads?
Como verifico regularmente show engine innodb status \G
, não há atividade rastreável:
--------
FILE I/O
--------
I/O thread 0 state: waiting for completed aio requests (insert buffer thread)
I/O thread 1 state: waiting for completed aio requests (log thread)
I/O thread 2 state: waiting for completed aio requests (read thread)
...
I/O thread 32 state: waiting for completed aio requests (write thread)
I/O thread 33 state: waiting for completed aio requests (write thread)
Pending normal aio reads: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] , aio writes: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ,
Além disso, qual é a desvantagem de aumentá-lo para o valor máximo de 64? Se não estiver usando, eles são threads ociosos inofensivos.
Esses números correspondem aos seus threads de leitura e gravação. Você pode ver que eles são todos zero. Isso significa que todas as E/S foram atendidas, ou seja, não há solicitações de E/S enfileiradas esperando por um encadeamento livre. Portanto, não há necessidade de aumentar o número de threads.
Se você ver regularmente valores diferentes de zero nesta linha, isso pode significar que você tem uma atividade de E/S pesada, a ponto de seus threads existentes não conseguirem acompanhar a demanda.
Na minha experiência, isso é muito incomum para qualquer servidor de banco de dados ficar tão sobrecarregado com solicitações de E/S. Em quase todos os casos, o número padrão de threads é fácil o suficiente para lidar com a carga. Além disso, cada thread pode lidar com várias solicitações de E/S simultaneamente, pois usa E/S assíncrona.
Não há muita desvantagem em aumentar o número de threads, mesmo que seu servidor de banco de dados não precise disso. Significa apenas que haverá uma linha mais longa de 0's. Mas não é necessário.
Como regra geral, prefiro manter o mínimo de alterações necessárias no arquivo de configuração do MySQL. Use padrões para tudo, a menos que haja um motivo real para alterá-lo.
Se você definir essas opções de configuração mais altas, eventualmente, alguém novo em sua equipe perguntará: "por que o valor innodb_*_io_threads está definido tão alto?" e você terá que explicar novamente por que achou tão importante aumentar um valor de configuração que não precisava ser aumentado.