Você pode determinar tamanho padrão do buffer usados pelo
servidor mysqld
com este comando:
shell> mysqld --help
Este comando produz uma lista de todas as opções do
mysqld
e variáveis configuráveis. A saída
inclui os valores padrão das variáveis e se parece com isto:
back_log current value: 5 bdb_cache_size current value: 1048540 binlog_cache_size current value: 32768 connect_timeout current value: 5 delayed_insert_timeout current value: 300 delayed_insert_limit current value: 100 delayed_queue_size current value: 1000 flush_time current value: 0 interactive_timeout current value: 28800 join_buffer_size current value: 131072 key_buffer_size current value: 1048540 lower_case_nome_tabelas current value: 0 long_query_time current value: 10 max_allowed_packet current value: 1048576 max_binlog_cache_size current value: 4294967295 max_connections current value: 100 max_connect_errors current value: 10 max_delayed_threads current value: 20 max_heap_table_size current value: 16777216 max_join_size current value: 4294967295 max_sort_length current value: 1024 max_tmp_tables current value: 32 max_write_lock_count current value: 4294967295 myisam_sort_buffer_size current value: 8388608 net_buffer_length current value: 16384 net_retry_count current value: 10 net_read_timeout current value: 30 net_write_timeout current value: 60 read_buffer_size current value: 131072 record_rnd_buffer_size current value: 262144 slow_launch_time current value: 2 sort_buffer current value: 2097116 table_cache current value: 64 thread_concurrency current value: 10 tmp_table_size current value: 1048576 thread_stack current value: 131072 wait_timeout current value: 28800
Se existir um servidor mysqld
em execução,
você pode ver quais valores ele está usando atualmente para as
variáveis executando esta instrução:
mysql> SHOW VARIABLES;
Você também pode ver algumas estatísticas e indicadores de status para um servidor em execução executando este comando:
mysql> SHOW STATUS;
Para encontrar uma descrição completa de todas as variáveis
na seção SHOW VARIABLES
neste manual. See
Secção 4.6.8.4, “SHOW VARIABLES
”.
Para informação sobre variáveis de estado, veja
Secção 4.6.8.3, “SHOW STATUS
”.
Variáveis de servidor e informação de status também pode ser
obtido usando mysqladmin
:
shell>mysqladmin variables
shell>mysqladmin extended-status
O MySQL utiliza algorítmos que são muito escaláveis, portanto, normalmente você pode trabalhar com pouca memória. Entretanto, se você fornecer ao MySQL mais memória, obterá um desempenho melhor.
Quando estiver ajustando um servidor MySQL, as duas variáveis
mais importantes que devem ser usadas são
key_buffer_size
e
table_cache
. Você deve se sentir confiante
que as duas estejam corretas antes de tentar alterar qualquer
outra variável.
Os seguintes exemplos indicam alguns valores típicos de
variáveis para diferentes configurações de tempo de
execução. Os exemplos usam o script
mysqld_safe
e usam a sintaxe
--name=value
para definir a variável
name
com o valor value
.
Esta sintaxe está disponível a partir do MySQL 4.0. Para
versões mais antigas do MySQL, tome as seguintes diferenças
nas contas:
Use safe_mysqld
em vez de
mysqld_safe
.
Configure as variáveis usando a sintaxe
--set-variable=name=value
ou -O
name=value
Para nomes de variáveis que finalizam em
_size
, você pode precisar
especificá-las sem _size
. Por exemplo, o
nome antigo para sort_buffer_size
é
sort_buffer
. O nome antigo para
read_buffer_size
é
record_buffer
. Para ver quais variáveis
a versão do seu servidor reconhece, use mysqld
--help
.
Se você possui pelo menos 256M de memória e várias tabelas e deseja obter o melhor desempenho com um número moderado de clientes, deve utilizar algo como:
shell>mysqld_safe --key_buffer_size=64M --table_cache=256 \
--sort_buffer_size=4M --read_buffer_size=1M &
Se possui apenas 128M de memória e apenas algumas poucas tabelas, mas ainda deseja realizar várias ordenações, você pode utilizar:
shell> mysqld_safe --key_buffer_size=16M --sort_buffer_size=1M
Se você possuir pouca memória e tiver muitas conexões, utilize algo como:
shell>mysqld_safe --key_buffer_size=512K --sort_buffer_size=100K \
--read_buffer_size=100K &
ou mesmo isto:
shell>mysqld_safe --key_buffer_size=512K --sort_buffer_size=16K \
--table_cache=32 --read_buffer_size=8K -O net_buffer_length=1K &
Se você estiver executando um GROUP BY
ou
ORDER BY
em tabelas que são muito maiores
que sua memória disponível você deve aumentar o valor de
record_rnd_buffer_size
para acelerar a
leitura de registros após a operação de ordenação.
Quando você tiver instalado o MySQL, o diretório
support-files
irá conter alguns arquivos
exemplos do my.cnf
,
my-huge.cnf
,
my-large.cnf
,
my-medium.cnf
e
my-small.cnf
, você pode usá-los como base
para otimizar seu sistema.
Se você possui várias conexões simultâneas, ``problemas de
trocas'' podem ocorrer a menos que o mysqld
tenha sido configurado para usar muito pouca memória para cada
conexão. O mysqld
tem melhor performance se
você tiver memória suficiente para todas as conexões, é
claro.
Perceba que se você especifica uma opção na linha de comando
para o mysqld
, ou
mysqld_safe
ele permanece em efeito somente
para aquela chamada do servidor. Para usar a opção toda vez
que o servidor executa, coloque-o em um arquivo de opção.
Para ver os efeitos de uma alteração de parâmetro, faça algo como:
shell> mysqld --key_buffer_size=32m --help
Tenha certeza que a opção --help
seja a
última do comando; de outra forma o efeito de qualquer opções
listadas depois na linha de comando não serão refletidas na
saída.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.