Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 11999|Resposta: 0

[Fonte] O arquivo de configuração MySQL my.cnf é explicado em detalhes

[Copiar link]
Publicado em 13/11/2017 11:55:59 | | |
Ajuste os parâmetros de execução do MySQL, modifique o arquivo /etc/my.cnf Ajuste os parâmetros de execução do MySQL para que tenham efeito após reiniciar o MySQL, após a versão do MySQL 4, algumas variáveis internas podem ser definidas no tempo de execução do MySQL, mas isso será inválido quando o MySQL for reiniciado.
Programa MySQLD - Diretórios e arquivos
basedir = path # Use o diretório dado como diretório raiz (diretório de instalação).
datadir = path # Leia o arquivo do banco de dados de um determinado diretório.
pid-file = nome do arquivo # Especifique um arquivo para o programa mysqld armazenar o ID do processo (disponível apenas para sistemas UNIX/Linux);

[mysqld]                        
socket = /tmp/mysql.sock # Especifica um arquivo socket para comunicação local entre o programa cliente MySQL e o servidor (o padrão é o arquivo /var/lib/mysql/mysql.sock no Linux)
port=3306 # Especifica a porta que o MsSQL escuta
key_buffer = 384M # key_buffer é o tamanho do buffer usado para indexar blocos, aumentando o índice que ele gerencia melhor (para todas as leituras e multiescritos).
                               O bloco de índice é armazenado em buffer e compartilhado por todas as threads, e o tamanho da key_buffer depende do tamanho da memória.
table_cache = 512 # O número de tabelas abertas para todas as threads. Aumentar esse valor aumenta o número de descritores de arquivo exigidos pelo mysqld. Isso evita a sobrecarga de abrir tabelas de dados com frequência
sort_buffer_size = 2M # Aloque um buffer desse tamanho para cada thread que precisa ser ordenada. Aumentar esse valor acelera as operações ORDER BY ou GROUP BY.
                               Nota: A memória alocada correspondente a esse parâmetro é exclusiva de cada conexão! Se houver 100 conexões, então o tamanho total do buffer de classificação realmente alocado é 100×6 = 600MB
read_buffer_size = 2M # O tamanho do buffer que pode ser usado para a operação de consulta de leitura. Assim como no sort_buffer_size, a memória alocada correspondente a esse parâmetro também é exclusiva de cada conexão.
query_cache_size = 32M # Especifica o tamanho do buffer de resultados da consulta MySQL
read_rnd_buffer_size = 8M # Mude o parâmetro a ser lido aleatoriamente após ordenar usando o ponteiro de linha.
myisam_sort_buffer_size =64M # Buffer necessário para reordenar as tabelas MyISAM quando elas mudam
thread_concurrency = 8 # O número máximo de threads concorrentes é definido como o número de CPUs lógicas do servidor ×2, e se a CPU suportar hyperthreading H.T, × 2
thread_cache = 8 # #缓存可重用的线程数
O travamento de pular # evita o travamento externo do MySQL, reduz a chance de erros e aumenta a estabilidade.
[mysqldump]
max_allowed_packet =16M # O pacote máximo possível de informações que pode ser enviado entre o servidor e o cliente

[myisamchk]
key_buffer = 256M
sort_buffer = 256M
read_buffer = 2M
write_buffer = 2M

Outros parâmetros opcionais:
back_log = 384
    Especifica o número de conexões possíveis para o MySQL.
    Quando a thread principal do MySQL recebe um número muito grande de solicitações de conexão em um período muito curto, esse parâmetro entra em vigor, e a thread principal leva um curto tempo para verificar a conexão e iniciar uma nova thread.
    O valor de back_log parâmetro indica quantas requisições podem ser armazenadas na pilha por um curto período antes que o MySQL pare temporariamente de responder a novas requisições.
    Se o sistema possui muitas conexões em um curto período de tempo, é necessário aumentar o valor desse parâmetro, que especifica o tamanho da fila de escuta para conexões TCP/IP recebidas.
    Tentar estabelecer um limite que back_log maior que o do seu sistema operacional será ineficaz. O valor padrão é 50. Para sistemas Linux, recomenda-se definir um inteiro menor que 512.
max_connections = n
    O número máximo de conexões de banco de dados que o servidor MySQL pode gerenciar ao mesmo tempo (a configuração padrão é 100). Se o limite for ultrapassado, o erro de conexões demais será reportado
key_buffer_size = n
    Valor de RMA para blocos de índice (configuração padrão é 8M), aumentando o índice para melhor manuseio (para todas as leituras e multiescritos)
record_buffer:
    Cada thread que realiza uma varredura sequencial aloca um buffer desse tamanho para cada tabela que escaneia.
    Se você fizer muitas varreduras sequenciais, talvez queira aumentar esse valor. O valor padrão é 131072 (128K)
wait_timeout:
    O número de segundos que o servidor espera por uma ação em uma conexão antes de desligá-la.
interactive_timeout:
    O número de segundos que o servidor espera por uma ação em uma conexão interativa antes de desligá-la.
    Um cliente interagindo é definido como um cliente que usa a opção CLIENT_INTERACTIVE para mysql_real_connect().
    O valor padrão é 28800, você pode mudar para 3600.
pular-nome-resolver            
    Desative o MySQL da resolução DNS em conexões externas; usar essa opção elimina o tempo que o MySQL leva para resolver o DNS.
    No entanto, vale notar que, se essa opção estiver ativada, toda autorização remota de conexão do host deve usar o método do endereço IP, caso contrário o MySQL não poderá processar a solicitação de conexão normalmente!
log-lento-consultas = slow.log
    Grave consultas lentas e otimize-as uma a uma
skip-innodb
Skip-BDB
    Feche os tipos de tabelas indesejados e não adicione isso se precisar
         
         
# > MOSTRAR VARIÁVEIS COMO '%query_cache%';
# > MOSTRAR STATUS COMO 'Qcache%';
Se o valor Qcache_lowmem_prunes for muito grande, isso indica que frequentemente há buffering insuficiente;
Se o valor do Qcache_hits for muito grande, isso indica que o buffer de consulta é usado com muita frequência, e se o valor for pequeno, mas afetar a eficiência, então você pode considerar não usar buffer de consultas.
Se o valor de Qcache_free_blocks for muito grande, indica que há muitos detritos no buffer.


##########################################
###### max_allowed_packet      ######
##########################################
Um pacote de comunicação é uma única instrução SQL enviada ao servidor MySQL ou uma única linha ao cliente.
O pacote máximo possível que pode ser enviado entre o servidor MySQL 5.1 e o cliente é de 1 GB.
Quando um cliente MySQL ou servidor MySQL recebe um pacote maior que max_allowed_packet bytes, um erro "pacote está grande demais" é emitido e a conexão é fechada. Para alguns clientes, se o pacote de comunicação for muito grande, você pode encontrar o erro "Perda de conexão com o servidor MySQL" durante a consulta.
Tanto o cliente quanto o servidor têm suas próprias variáveis max_allowed_packet, então, se você planeja lidar com pacotes grandes, deve adicionar essa variável tanto no cliente quanto no servidor.
Se você está usando um programa cliente Mysql, a variável max_allowed_packet dele tem como padrão 16MB. Para definir um valor maior, você pode iniciar o mysql da seguinte forma:
mysql> mysql --max_allowed_packet=32M
Ele define o tamanho do pacote de informações para 32MB.
O valor padrão de max_allowed_packet do servidor é 1MB. Se o servidor precisar processar consultas grandes, você pode aumentar esse valor (por exemplo, se estiver se preparando para processar colunas grandes de blob). Por exemplo, para definir para 16MB, você pode iniciar o servidor da seguinte forma:
mysql> mysqld --max_allowed_packet=16M

Você também pode usar arquivos de opções para definir max_allowed_packet. Para definir essa variável para o servidor em 16MB, adicione conteúdo de downlink ao arquivo de opções:
[mysqld]
max_allowed_packet=16M
É seguro aumentar o valor dessa variável porque a memória adicional é alocada apenas quando necessário. Por exemplo, o mysqld aloca mais memória apenas se você emitir uma consulta longa ou se o mysqld tiver que retornar linhas de resultado grandes. O pequeno valor padrão dessa variável é uma medida de precaução para capturar pacotes de erro entre o cliente e o servidor e garantir que os transbordamentos de memória não sejam causados pelo uso acidental de pacotes grandes.
Se você estiver usando valores grandes de blob e não conceder permissão ao mysqld para acessar memória suficiente para processar consultas, também vai enfrentar problemas estranhos relacionados a pacotes grandes. Se você suspeitar que seja esse o caso, tente começar a aumentar o ulimit -d 256000 no script mysqld_safe e reinicie o MySQLD.
##########################################
##### Como abrir e fechar tabelas de banco de dados no MySQL #####
##########################################
table_cache, max_connections e max_tmp_tables afetam o número máximo de arquivos que o servidor mantém abertos. Se você aumentar um ou ambos esses valores, pode encontrar o limite imposto pelo seu sistema operacional sobre o número de descritores de arquivo que cada processo abre. No entanto, você pode aumentar o limite em muitos sistemas. Peça à documentação do seu sistema operacional para descobrir como fazer isso, pois os métodos para alterar os limites variam muito de sistema para sistema.
table_cache relacionado a max_connections. Por exemplo, para 200 joins abertos, você deve ter um buffer de tabela de pelo menos 200 * n, onde n é o número máximo de tabelas em uma join.
O cache das tabelas abertas pode ser aumentado para um máximo de um table_cache (64 por padrão; Isso pode ser feito com o -O table_cache=#选项来改变) do mysqld. Uma tabela nunca é fechada, exceto quando o cache está cheio e outra thread tenta abrir uma tabela ou se você usa mysqladmin refresh ou mysqladmin flush-tables.
Quando o cache da tabela está cheio, o servidor usa o seguinte procedimento para encontrar uma entrada de cache a ser utilizada:
Tabelas que não estão em uso atualmente são lançadas, na ordem de menor uso (LRU).
Se o cache estiver cheio e não houver tabelas para liberar, mas uma nova tabela precisar ser aberta, o cache deve ser temporário ampliado.
Se o cache estiver em um estado expandido temporário e uma tabela mudar de ativa para inativa, ela é fechada e liberada do cache.
Abra uma tabela para cada acesso concorrente. Isso significa que, se você tem 2 threads acessando a mesma tabela ou acessando a tabela duas vezes na mesma consulta (com AS), a tabela precisa ser aberta duas vezes. A primeira abertura de qualquer tabela conta com 2 descritores de arquivo; Cada uso adicional da tabela representa apenas um descritor de arquivo. Para a primeira abertura, um descritor extra é usado para indexar o arquivo; Esse descritor é compartilhado entre todos os threads




Anterior:Entenda os scripts do diretório /etc/init.d e /etc/rc.local em sistemas Linux
Próximo:Como confirmar que o serviço MySQL foi iniciado sob Linux CentOS
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com