Execute OPTIMIZE TABLE para desfragmentar tabelas para obter melhor desempenho

12

Estou executando o sistema operacional Linux de 64 bits. Meu sintonizador mysql está dizendo as seguintes coisas:

-------- Estatísticas Gerais ---------------------------------------- ----------
[-] Verificação de versão ignorada para o script MySQLTuner
[OK] Atualmente executando o MySQL suportado, versão 5.1.61-log
[OK] Operando na arquitetura de 64 bits

-------- Estatísticas do mecanismo de armazenamento --------------------------------------- ----
[-] Status: -Arquivo -BDB -Federado + InnoDB -ISAM -NDBCluster
[-] Dados nas tabelas MyISAM: 1G (Tabelas: 1914)
[-] Dados nas tabelas do InnoDB: 4M (Tabelas: 199)
[!!] Total de tabelas fragmentadas: 296

-------- Recomendações de segurança ---------------------------------------- ---
[OK] Todos os usuários do banco de dados têm senhas atribuídas

-------- Métricas de desempenho ---------------------------------------- ---------
[-] Acima: 6s (7K q [1K qps], 142 conexões, TX: 8M, RX: 701K)
[-] Lê / grava: 97% / 3%
[-] Total de buffers: 1,7G global + 13,2M por thread (máximo de 384 threads)
[OK] Máximo possível de uso de memória: 6,6G (42% da RAM instalada)
[OK] Consultas lentas: 0% (0 / 7K)
[OK] Maior uso de conexões disponíveis: 5% (20/384)
[OK] Tamanho do buffer da chave / índices MyISAM totais: 1.5G / 2.7G
[OK] Taxa de acertos do buffer de teclas: 97,4% (553K em cache / 14K leituras)
[OK] Eficiência do cache de consulta: 64,6% (4K em cache / 6K seleciona)
[OK] Consultar ameixas de cache por dia: 0
[OK] Classificações que exigem tabelas temporárias: 0% (classificações de 2 temp / 337 classificações)
[OK] Tabelas temporárias criadas em disco: 8% (17 em disco / 198 total)
[OK] Taxa de acertos no cache do thread: 85% (20 criados / 142 conexões)
[OK] Taxa de acertos no cache da tabela: 98% (438 aberto / 445 aberto)
[OK] Limite de arquivo aberto usado: 10% (856 / 8K)
[OK] Bloqueios de tabela adquiridos imediatamente: 99% (2K imediatos / 2K bloqueios)
[OK] Tamanho dos dados do InnoDB / buffer pool: 4.2M / 8.0M


-------- Recomendações ----------------------------------------- ------------
Recomendações gerais:
    Execute OPTIMIZE TABLE para desfragmentar tabelas para obter melhor desempenho
    MySQL iniciado nas últimas 24 horas - as recomendações podem ser imprecisas

Suas recomendações são executar OPTIMIZE TABLEa desfragmentação de tabelas para obter melhor desempenho; Mas não sei como executá-lo via Putty.

Existe alguém que possa me dar o código, como eu o executo via Putty?

Barkat Ullah
fonte

Respostas:

7

OPTIMIZE TABLE é uma instrução SQL - execute-a em um cliente MySQL.

Na linha de comando do servidor, você deve ter o cliente de linha de comando instalado; você pode se conectar ao seu banco de dados no cliente com mysql -u username -p.

Consulte a documentaçãoOPTIMIZE TABLE para obter mais informações.

Shane Madden
fonte
Este site trata de perguntas feitas por administradores profissionais de sistemas.
precisa saber é
@ gparent - foi uhh que queria estar em questão, não é a resposta perfeitamente válida de Shane?
Mark Henderson
2
@gparent Certo - mas não acho justo julgar o profissionalismo de alguém com base no conhecimento de uma instrução SQL quando a vê. A pesquisa teria rapidamente encontrado a resposta, mas .. Eu não gosto da idéia de que essa comunidade rejeite as perguntas por ser "óbvia" demais.
Shane Madden
Você está certo, meu comentário não pertence aqui, acho que o autor postou um comentário sobre a pergunta de Shane e o removeu, ou isso realmente significava postá-lo na pergunta de Barkat, mas eu geralmente adicionaria mais informações se esse foi o caso
gparent
1
Eu discordo de você, porém, há um lugar onde você tem que desenhar a linha. Eu acho que é justo dizer que um profissional (faq: em uma capacidade profissional) atualmente trabalhando com bancos de dados MySQL e tentando otimizá-los deve ser proficiente o suficiente para pesquisar o termo no Google e descobrir que é uma consulta MySQL desde o primeiro resultado da pesquisa. Talvez eu estou esperando muito em qualquer funcionário ..
gparent
18

Você também pode tentar mysqlcheck -u username -p --auto-repair --optimize --all-databasesno terminal.

No que diz respeito à execução de "otimizar tabela", você pode iniciar o MySQL assim mysql -u username -pe, a partir daí, executar comandos. Normalmente, o primeiro comando que eu uso é, show databases;mas você realmente deve encontrar um tutorial do MySQL primeiro. O primeiro que surgiu no Google: http://downloads.mysql.com/docs/mysql-tutorial-excerpt-5.1-en.pdf

Se você está usando massa de vidraceiro ou não, é irrelevante. Você pode dizer "na linha de comando" em vez de "via Putty".

PJ Brunet
fonte
2
Essa é uma solução muito melhor do que a que foi aceita. Não há necessidade de enumerar todos os bancos de dados e tabelas antes da execução dos comandos, além de reparo automático.
Sammitch
1
Também faça um favor a si mesmo e faça um backup do banco de dados antes de executar qualquer coisa. mysqldump -u username -p dbname > dbname.sqle gzip dbname.sqldeve fazê-lo bem.
Fiasco Labs
Fiasco, em centos, pelo menos, o comando deve sermysqldump -u username -p db_name > dbname.sql
yitwail