Use o mpg123 com equalização

Para quem gosta de ouvir música no console e já usa o mpg123 ou o mpg321, vou mostrar como usar o recurso de equalização nestes aplicativos.
O mpg123 pode ser iniciado com a opção para aceitar comandos do teclado durante sua execução. Mas, entre estes comandos, não há qualquer um que permita alterar a equalização durante a reprodução das músicas.
O mpg321 não tem equalização. Já no mpg123, a sintaxe para usar um arquivo de equalização é esta:

mpg123 -E arquivo_de_equaliz.txt nome_do_arquivo.mp3

NOTA: O nome do arquivo de equalização pode ter qualquer extensão. Trata-se de um arquivo texto simples.

Como montar um arquivo de equalização

Vou mostrar como criar os seus próprios arquivos de equalização — você pode ter várias equalizações, em vários arquivos.
Um arquivo de equalização só precisa ter números, dispostos em 2 colunas — a primeira é referente ao speaker esquerdo e a segunda ao speaker direito:

0.0 3.0

Deve ter até 32 linhas — o que equivale a 32 canais.
Os valores vão de 0.0 a 5.0.

Exemplo de arquivo de equalização do mpg123

Para ajudar a entender, segue um arquivo exemplo:

# arquivo de equalização
# 32 canais de áudio: esquerdo e direito
# Ordenados do mais grave para o mais agudo
1.2 1.2
1.2 1.2
1.2 1.2
1.2 1.2
1.2 1.2
1.2 1.2
0.5 0.5
0.5 0.5
0.5 0.5
0.5 0.5
0.5 0.5
0.5 0.5
0.5 0.5
0.5 0.5
0.5 0.5
0.5 0.5
0.5 0.5
0.5 0.5
0.5 0.5
0.5 0.5
0.5 0.5
0.5 0.5
0.5 0.5
0.5 0.5
0.5 0.5
0.5 0.5
5.0 5.0
5.0 5.0
5.0 5.0
5.0 5.0
5.0 5.0
5.0 5.0

Você pode copiar este arquivo, colar no seu editor de textos preferido e alterá-lo de acordo com suas preferências.
As linhas com um # são comentários e são ignoradas pelo mpg123.

LEIA MAIS
  • mpg123 — conheça mais comandos e exemplos de uso do mpg123.
  • mpg321 — o clone do mpg123 pode executar suas músicas recursivamente. Veja como.
  • Zeya — use este software para fazer streaming de músicas do seu computador.
  • Como baixar e compilar o mpg123 — com esta opção, é possível montar uma versão mais eficiente do aplicativo, customizada pro seu sistema. Experimente!

Qual Ubuntu escolher?

O Ubuntu é um sistema operacional, de código aberto, com mais de 20 milhões de usuários, ao redor do mundo.
Ao acessar o site de download do Ubuntu no Brasil ou o site internacional, uma versão do Ubuntu é apresentada por padrão. Mas, será que ela é a mais indicada para você?
qual ubuntu escolher
Este texto é orientado a ajudar as pessoas escolher a versão mais adequada do Ubuntu para instalar.

Qual o melhor Ubuntu para máquinas mais antigas?

A cada 6 meses, uma versão nova do Ubuntu é lançada – tradicionalmente, nos meses de Abril e Outubro. Desta forma, você sempre tem uma versão atualizada para instalar e usar.
Não importa se sua máquina é nova ou velha — instale sempre a versão mais atual do Linux. As versões atualizadas vem sempre com correções de erros e melhorias pro seu hardware. Se a sua máquina for antiga, há uma probabilidade crescente de ela ser contemplada com uma maior quantidade de melhorias e correções de erros conhecidos.
Se você acredita que os recursos visuais das novas versões tornam a máquina mais lenta, há meios para desligá-los. Não faz sentido optar por uma versão velha e ultrapassada do Linux.
Se a sua máquina tem recursos muito restritos, então você talvez deva considerar instalar outra distro Linux ou uma das variações do Ubuntu para máquinas com recursos limitados — mas siga a regra: opte sempre pela mais atual.

O que é Ubuntu LTS?

LTS, em inglês, quer dizer Long Term Support — “suporte prolongado“, em português.
Para quem usa um computador em produção, para trabalho e necessita de mais estabilidade e confiabilidade, há as versões LTS do Ubuntu, nas quais a Canonical refreia seu ímpeto para empacotar os softwares mais novos e que ainda não foram suficientemente testados.
As versões LTS são voltadas ao público corporativo, profissionais liberais ou qualquer outra pessoa que precise privilegiar a estabilidade e a confiabilidade.
A Canonical tem atualizado as versões LTS a cada 2 anos. Cada uma delas tem 5 anos de tempo de suporte. Ou seja, A LTS mais estável, hoje, é a 12.04 — com suporte previsto até 2017.
Desta forma, sempre haverá 2 LTS disponíveis: uma estável e outra mais estável ainda.
Se você acha que a estabilidade não é tão importante e prefere ter os programas mais atualizados instalados em sua máquina, vá para a versão mais nova que houver disponível no site, independente de ser LTS ou não.
Em ambiente de produção, a versão LTS mais estável é a mais recomendada.
Aqui a regra sobre optar pela mais atual deve ser quebrada, caso você tenha uma necessidade maior de estabilidade. Pela lógica, a versão LTS anterior (no caso, a 12.04) tem mais tempo de estrada que a 14.04 — e, portanto, é a opção recomendada.

Ubuntu Alpha e Beta

Estas versões são o oposto das LTS: são versões de teste, que usam as últimas versões dos softwares disponíveis e com muito pouca estabilidade.
Se você tiver mais de um computador, pode separar uma máquina exclusiva para testes — e, nela, pode experimentar a versão Beta ou Alpha do Ubuntu.
As versões Alpha precedem as Beta e são, portanto, mais instáveis.

Por que eu deveria instalar Ubuntu Alpha ou Beta?

Em primeiro lugar, você não deve instalar software beta em máquinas de produção. Neste estágio, os programas ainda são muito instáveis e podem atrapalhar mais do que ajudar.
Há basicamente 2 motivos para instalar versões de teste de softwares:

  • Conhecer o que há de mais novo no desenvolvimento daquele software. Quando a versão estável for lançada, você já terá mais intimidade com ele do que a maioria das pessoas;
  • Ajudar no desenvolvimento — os beta-testers são muito bem vindos na comunidade Ubuntu. Uma das melhores maneiras de ajudar a sua distro favorita é usar sua versão beta e dar retorno sobre o que achou, como funcionou, os problemas que teve etc.
    Alguns projetos dão créditos aos seus beta-testers mais ativos.

Ubuntu 32-bit ou 64-bit?

A versão 32-bit é a escolha mais segura para quem tem máquina com recursos limitados.
Os desenvolvedores já portaram seus softwares ou os tem reescrito para o ambiente 64-bit — que aproveita muito melhor a capacidade e os recursos de seu hardware.
Se o seu sistema de hardware é 64-bit e você não tiver algum “motivo especial” para usar uma versão 32-bit, vá de 64-bit.

Ubuntu, Kubuntu, Xubuntu ou Lubuntu

A relação de derivados ou spins do Ubuntu é bem grande.
Como é impossível um único sistema operacional satisfazer a toda a sua base de usuários, desenvolvedores criam customizações a partir da distro original, para atender a usuários com necessidades diferenciadas.
O assunto merece um post exclusivo — por isto, vou procurar ser o mais sucinto possível aqui.
Instalar uma distro Linux em um pendrive, para testar, é sempre um bom ponto de partida, para começar a conhecer as opções que você tem.
Tanto o Ubuntu quanto o Kubuntu são opções com bastante recursos visuais. O ambiente gráfico do Ubuntu usa o Unity, que tem uma concepção bem moderna e que se integra bem a dispositivos com tela de toque.

LEIA MAIS:

O Xubuntu e o Lubuntu são voltadas para quem prefere mais simplicidade, menos recursos visuais e um ambiente mais rápido e ágil. São ótimas para quem tem uma máquina mais antiga ou para quem usa netbooks.
Espero ter conseguido demonstrar as qualidades e as diversas possibilidades do Ubuntu. Se você tiver alguma dica ou experiência pessoal, sinta-se à vontade para compartilhar com a gente, nos comentários.

MyISAM: vantagens e desvantagens.

O mecanismo de armazenamento MyISAM, padrão no MySQL até a versão 5.5, é o mais usado na WEB, em armazéns ou depósitos de dados e vários outros tipos de aplicações.
Neste texto, vou mostrar algumas de suas características e as situações onde o seu uso é indicado e quando não é.
Escolher o mecanismo de armazenamento (ou storage engine) mais adequado pras suas aplicações é crucial e uma decisão errada tomada nesta escolha pode ser de difícil reversão.
Antes do MySQL 5.5.5, ao criar uma nova tabela, o padrão escolhido pelo sistema será o MyISAM, a menos que você especifique outro. A partir desta versão, o padrão será o InnoDB.

SAIBA MAIS:
O mecanismo de armazenamento MyISAM é derivado de um outro, mais antigo, chamado ISAM — Indexed Sequential Access Method, originalmente desenvolvido pela IBM, para ser usado em mainframes. Ainda dentro da IBM, o ISAM evoluiu pro VSAM — Virtual Storage Access Method.
Atualmente, a IBM promove o uso do DB2.
Era possível usar o mecanismo de armazenamento ISAM até o MySQL 3.23. A partir de então, ele se tornou indisponível, embora seu código ainda estivesse incluído até a versão 4.1.
Conheça outros mecanismos de armazenamento para MySQL.

As vantagens de usar o MyISAM

Atualmente, muitas distros Linux oferecem o MySQL em seus repositórios e, no Ubuntu 14.04 é a versão 5.5 que ainda estará lá, para ser baixada — onde o mecanismo de armazenamento padrão é o MyISAM. A Canonical tem planos de mudar do MySQL para MariaDB em um futuro próximo.
Eu posso citar, pelo menos, 4 boas razões para usar o MyISAM storage engine.

1 – a simplicidade

As tabelas MyISAM são simples. Se você é novato no assunto “bancos de dados” ou no que concerne ao MySQL, é recomendado começar a usar o MyISAM, antes de sair experimentando os outros.
Segue um exemplo de como criar um novo banco de dados e uma tabela no MySQL.
(Se você ainda não tem o MySQL instalado, dê uma olhada no artigo Como instalar o MySQL).
Para criar um banco de dados, usamos a declaração CREATE DATABASE. Em seguida, o selecionamos para uso, com USE. Veja como:

CREATE DATABASE teste;
USE teste;

Uma vez criado o banco e selecionado para uso, vamos criar uma nova tabela dentro dele:

CREATE TABLE teste.meuslivros (
id int UNSIGNED NOT NULL AUTO_INCREMENT,
titulo TEXT NOT NULL;
autor VARCHAR(30)
genero VARCHAR(20),
PRIMARY KEY(id))
ENGINE = MyISAM;

O exemplo, acima, mostra como é simples e rápida a criação de uma nova tabela no MySQL. Se você tiver interesse, o artigo – como criar tabelas no MySQL –, mostra o processo com mais exemplos e detalhes.

2 – otimização e base de conhecimento

Eu poderia dizer que o MyISAM é muito rápido – mais rápido que muitos outros storage engines, mas os benchmarks feitos por várias empresas mostram resultados muito diferentes entre si. Esta variação se deve às tarefas executadas, às configurações dos servidores e do mysqld, entre outros fatores. A melhor medição, quem faz, é você, dentro do seu ambiente de trabalho. Ainda assim, é notória a performance do mecanismo de armazenamento MyISAM, nos testes.
Em função do tempo em que o MyISAM tem estado “na estrada”, há muitos sistemas plenamente otimizados para usa-lo.
Se você sente que o seu sistema não está perfeitamente otimizado para uso do MyISAM, há uma extensa base de conhecimento disponível na Internet para ajudá-la(o) a resolver isto.

3 – indexação FULLTEXT e busca dentro do banco de dados

Considerando a tabela que criamos, imagine que precisamos realizar uma pesquisa, percorrendo títulos e gêneros dos livros.
Uma solução simples, possibilitada pelo MyISAM é adicionar um índice FULLTEXT. Veja o exemplo:

ALTER TABLE teste.livros ADD FULLTEXT alltext (autor, genero);

Agora, fica fácil encontrar todos os livros que contenham as palavras “mauro vasconcelos” e “infanto-juvenil”, dentro da tabela:

SELECT * FROM teste.livros WHERE MATCH(autor, genero) AGAINST ('mauro vasconcelos infanto-juvenil');

Com uma alteração na declaração acima, é possível obter o mesmo resultado, só que ordenado por relevância. Veja:

SELECT *, MATCH(autor, genero) AGAINST ('mauro vasconcelos infanto-juvenil') FROM teste.livros ORDER BY rel DESC;

4 – uso de recursos em ambientes limitados

Uma das vantagens de qualquer sistema que tem longa estrada percorrida é a estabilidade conquistada pelos anos de uso, pessoas envolvidas no projeto e seu contínuo desenvolvimento.
O MyISAM é o mais indicado em sistemas de poucos recursos, em servidores de menor capacidade de processamento e/ou com pouco espaço de armazenamento em disco ou memória RAM.
Nesta arena, ele se mostra imbatível nos benchmarks de que falamos no item anterior, mesmo que você não dedique algum tempo a otimizar o hardware e o mysqld.

As desvantagens do mecanismo de armazenamento de tabelas MyISAM

Se há situações em que o MyISAM é o mais indicado para uso, há várias outras em que ele é superado por outros mecanismos.
Aqui, vou mostrar alguns dos problemas que administradores e programadores enfrentam ao usar o MyISAM, no MySQL.

1 – integridade de dados

O MyISAM não tem suporte a transações ou a restrições de chaves estrangeiras.
Leve em conta uma aplicação bancária, onde ocorre uma transferência monetária – o que envolveria duas declarações SQL UPDATE: uma para debitar o valor de uma conta; outra para creditar o mesmo valor à outra conta.
Se houvesse uma falha no servidor, exatamente neste momento, você poderia acabar com o valor nas duas contas ou em nenhuma delas. O recurso de “transações”, presente no InnoDB, é o que evita este tipo de situação.

2 – recuperação de acidentes

O MySQL é estável e confiável. Contudo, as tabelas MyISAM podem voltar corrompidas, após uma falha.
O problema pode ser resolvido com o uso de um REPAIR TABLE – o que é um trabalho administrativo a mais, na verdade.

3 – travamento de tabelas

Ao adicionar ou atualizar um registro em uma tabela MyISAM, todas as outras mudanças são impedidas pelo travamento, até que aquela operação seja completada.
É difícil demonstrar ou provar que este comportamento diminui a performance ou causa problemas à sua aplicação web, mas há um consenso entre especialistas de que o mecanismo mais adequado para você não é o MyISAM, se a sua aplicação realiza grandes quantidades de inserções e atualizações à tabela.

LEIA MAIS:
  • Busca FULLTEXT — leia mais sobre pesquisas via FULLTEXT Index no MySQL.
  • Storage engines — conheça os mecanismos de armazenamento suportados pelo MySQL.
  • Tipos de dados — conheça os tipos de dados suportados dentro das tabelas MySQL
  • mysqlcheck — veja como restaurar uma tabela corrompida.
  • Bancos de dados — veja como criar novos bancos de dados no MySQL.
  • Tabelas — aprenda, através de exemplos, como criar tabelas no MySQL.

Conclusão: devo usar o MyISAM?

Há uma série de situações em que o MyISAM tende a ser a opção mais indicada, de acordo com a relação de vantagens e desvantagens apresentada, até agora. Nas situações, abaixo, a resposta é sim:

  • Você é iniciante no MySQL;
  • Sua aplicação web é simples e não precisa de transações;
  • Você precisa de velocidade;
  • Deseja usar buscas FULLTEXT;
  • Tem recursos de hardware limitados.

Já, se precisa fazer uso de “transactions” e a integridade dos dados é prioritária e crítica, outras opções devem ser consideradas.
Note que é comum se usar mais de um tipo de mecanismo de armazenamento dentro de um mesmo banco de dados. Algumas tabelas precisam usar o InnoDB, outras o MyISAM e outras podem usar o CSV – e todo mundo convive bem, sem problema algum.
Os tipos de aplicações mais indicados para usar o MyISAM são:

  • CMS – Content Management Systems, ou sistemas de gestão de contúdo;
  • Ferramentas de marcação de páginas favoritas online;
  • Leitores RSS;
  • Mecanismos de busca na web etc.

Espero que este texto tenha lhe sido útil e, se este for o caso, compartilhe com os seus amigos, nas redes sociais. Esta é sempre a melhor forma de agradecer e incentivar.

MySQL: use o mysqlcheck para fazer manutenção das suas tabelas

O programa cliente mysqlcheck oferece uma maneira eficiente para executar a manutenção das tabelas em seu banco de dados — ele verifica, conserta, otimiza ou apenas analisa as tabelas dentro do banco de dados.
O mysqlcheck deve ser usado quando o servidor mysqld está rodando — uma de suas primeiras vantagens é essa: a de não precisar indisponibilizar o servidor para fazer uma manutenção no seu sistema de banco de dados.
O mysqlcheck é um “frontend”. Ele se autentica no MySQL e execute as declarações CHECK TABLE, REPAIR TABLE, ANALYZE TABLE e OPTIMIZE TABLE do modo mais conveniente pro usuário. Ele determina a forma mais adequada para cada declaração de acordo com a operação pedida, na linha de comando, e a envia ao servidor para ser executada.
É o indicado para realizar as tarefas de manutenção em tabelas MyISAM. Outros mecanismos de armazenamento (storage engines) podem não suportar todas as operações, nestes casos, mensagens de erro irão surgir para te informar do fato:

note    : The storage engine for the table doesn't support check
PRECAUÇÕES

Você deve fazer backup dos dados nas tabelas antes de inciar uma operação de restauração (repair) nestas tabelas. Sob certas circunstâncias, a operação pode causar perda de dados.
Algumas causas de perda de dados podem estar ligadas a sistemas de arquivos com erros.

De acordo com o manual oficial do MySQL, há 3 sintaxes possíveis pro comando mysqlcheck:

mysqlcheck [opcoes] nome_do_banco [nome_da_tabela1 nome_da_tabela2 ...]
mysqlcheck [opcoes] --databases nome_do_banco1 nome_do_banco2 ...
mysqlcheck [opcoes] --all-databases

Daqui pra frente, vamos desenvolver melhor o assunto e algumas das opções mais comuns de uso do comando.

Como verificar uma tabela dentro do banco de dados

Se seu aplicativo retornou uma mensagem de erro, informando que uma determinada tabela está corrupta, execute o mysqlcheck assim:

mysqlcheck -c nome_do_banco nome_da_tabela -u root -p

forneça a senha, assim que lhe for pedido e aguarde o resultado:

nome_do_banco.nome_da_tabela      OK

Se a senha e/ou nome de usuário estiver errada, o sistema emitirá uma mensagem de erro semelhante a esta:

mysqlcheck: Got error: 1045: Access denied for user 'root'@'localhost' (using password: NO) when trying to connect

A opção -c é a que indica que a operação a ser realizada é de checagem (verificatória).

Como verificar todas as tabelas em um banco de dados

Se quiser verificar todas as tabelas dentro de um banco de dados, com o mysqlcheck, omita seus nomes. Forneça apenas o nome do banco de dados que as contém (no meu caso, é clientes):

mysqlcheck -c clientes -u root -p

O meu resultado foi este:
clientes.CLPJ OK
clientes.CLCD OK
clientes.CLPD OK
clientes.CLCT OK[/plain]

Como checar todas as tabelas e bancos de dados

Para realizar uma checagem desta amplitude, o comando executado é bem curto:

mysqlcheck c -u root -p --all-databases

Você pode executar o mysqlcheck em mais de um banco de dados (sem ser todos), assim, com a opção --databases. No exemplo, que segue, o comando será executado em todas as tabelas dentro dos bancos de dados fornecedores e clientes:

mysqlcheck -c -u root -p --databases fornecedores clientes

Como analisar tabelas usando o mysqlcheck

O exemplo que segue, usa o comando mysqlcheck, com a opção -a para analisar a tabela cadastros, dentro do banco de dados clientes:

mysqlcheck -a clientes cadastros -u root -p

Internamente, o mysqlcheck roda a declaração ANALYZE TABLE em relação à clientes. Enquanto trabalha, trava a tabela, permitindo apenas a sua leitura – motivo, pelo qual, você não deve fazer estas tarefas em horários de pico.

Use o mysqlcheck para otimizar tabelas

No exemplo que segue, o mysqlcheck é usado para otimizar a tabela projetos, dentro do banco de dados clientes.

mysqlcheck -o clientes projetos -u root -p
Enter password: 
clientes.projetos                                  Table is already up to date

Como já disse, o comando mysqlcheck executa um comando MySQL internamente. Neste caso, o OPTIMIZE TABLE.
À medida em que você vai removendo registros das suas tabelas, espaços sem uso vão ficando no meio. Este comando funciona semelhante ao desfragmentador de alguns sistemas operacionais, reorganizando os espaços, o que melhora a performance em tabelas que já tenham passado por grandes quantidades de alterações.

Restaure, conserte tabelas com o comando mysqlcheck

Aqui, o mysqlcheck vai usar internamente o comando REPAIR TABLE, que repara (conserta) uma tabela MyISAM corrompida.
Veja como:

mysqlcheck -r clientes projetos -u root -p

Combine diversas tarefas em uma só declaração mysqlcheck

É claro que, para a sua comodidade, é possível combinar diversas tarefas para serem executadas pelo mysqlcheck, em apenas uma linha de comando. veja como combinar CHECK, OPTIMIZE e REPAIR e mais a opção --auto-repair, dentro do banco de dados clientes (adeque o comando à sua realidade):

mysqlcheck -u root -p --auto-repair -o clientes

Ou em todas as tabelas, em todos os bancos de dados:

mysqlcheck -u root -p --auto-repair -o --all-databases
LEIA MAIS:
  • Comandos (internos) de manutenção — rápida noção dos comandos REPAIR, ANALYZE, CHECK e OPTIMIZE.
  • Otimize suas consultas — use o QUERY CACHE!
  • Outras opções úteis pro mysqlcheck

    Para ter um feedback maior do que está sendo feito pelo programa, use a opção –debug-info. Ela é mais voltada para encontrar erros dentro do próprio programa, para desenvolvedores – mas é uma mão na roda para administradores de MySQL que desejam ter um maior controle do que o comando está executando. Veja, no exemplo, como a saída oferece mais informações.

    mysqlcheck -u root -p --debug-info --auto-repair clientes projetos
    Enter password: 
    clientes.projetos                                  OK
    User time 0.01, System time 0.00
    Maximum resident set size 1584, Integral resident set size 0
    Non-physical pagefaults 538, Physical pagefaults 0, Swaps 0
    Blocks in 0 out 0, Messages in 0 out 0, Signals 0
    Voluntary context switches 3, Involuntary context switches 17

    MySQL: comandos para manutenção do banco de dados

    De maneira bem breve, vou listar 4 comandos MySQL relacionados à manutenção dos seus bancos de dados. Neste texto, serão descritos de forma bem sucinta e rápida. É mais ou menos um lembrete para quem é administrador iniciante e ainda não criou os bons hábitos de verificação dos seus bancos de dados.

    Check table

    Com suporte ao MyISAM e ao InnoDB, o comando CHECK TABLE pode ser usado para verificar erros e inconsistências nas tabelas.
    Sua sintaxe é simples mas você precisa ter privilégios adequados para poder rodar este comando:

    
    CHECK TABLE projetos QUICK;
    
    +-------------------+-------+----------+----------+
    | Table             | Op    | Msg_type | Msg_text |
    +-------------------+-------+----------+----------+
    | clientes.projetos | check | status   | OK       |
    +-------------------+-------+----------+----------+
    1 row in set (0.09 sec)
    

    Repair table

    Se houver erros detectados por CHECK TABLE, será necessário usar o REPAIR na sua tabela.

    
    REPAIR TABLE projetos;
    
    +-------------------+--------+----------+----------+
    | Table             | Op     | Msg_type | Msg_text |
    +-------------------+--------+----------+----------+
    | clientes.projetos | repair | status   | OK       |
    +-------------------+--------+----------+----------+
    1 row in set (0.00 sec)
    

    Analyze table

    Este comando (exemplo abaixo) analisa e armazena a distribution key da tabela. Enquanto isto, ele a trava, impedindo que seja alterada temporariamente – ela só pode ser lida.

    O que é distribution key

    Uma distribution key ou chave de distribuição é uma coluna (ou grupo de colunas) usada para determinar a partição do banco de dados em que um registro, em particular, será armazenado.
    Você define uma distribution key em uma tabela através do comando CREATE TABLE.

    
    ANALYZE TABLE projetos;
    
    +-------------------+---------+----------+-----------------------------+
    | Table             | Op      | Msg_type | Msg_text                    |
    +-------------------+---------+----------+-----------------------------+
    | clientes.projetos | analyze | status   | Table is already up to date |
    +-------------------+---------+----------+-----------------------------+
    1 row in set (0.01 sec)
    
    

    Optimize table

    Se você executa muitas operações de remoção de registros (DELETE), provavelmente precisará da declaração OPTIMIZE TABLE para fazer uso de espaços liberados e desfragmentar o arquivo de dados.

    
    OPTIMIZE TABLE projetos;
    
    +-------------------+----------+----------+----------+
    | Table             | Op       | Msg_type | Msg_text |
    +-------------------+----------+----------+----------+
    | clientes.projetos | optimize | status   | OK       |
    +-------------------+----------+----------+----------+
    1 row in set (0.04 sec)