Pular para o conteúdo principal

MySQL storage engines – parte 2

Continuando o meu post anterior (MySQL storage engines – parte 1), onde apresentamos as principais engines de armazenamento do MySQL, são elas: InnoDB, MyISAM, Memory, CSV, Merge, Archive, Federated e Blackhole, vamos agora entender como escolher e mudar.

Para visualizar todas as opções de engines suportadas pelo servidor, execute:

SHOW ENGINES

Nenhum mecanismo de armazenamento é ideal para todas as circunstâncias. Alguns têm melhor desempenho em certas condições e pior desempenho em outras situações. Há compensações que devem ser consideradas. Uma solução mais segura requer mais recursos; pode ser mais lento, levar mais tempo de CPU e espaço em disco. O MySQL é muito flexível no fato de fornecer vários mecanismos de armazenamento diferentes. Alguns deles, como o mecanismo Archive, são criados para serem usados em situações específicas.

Em alguns casos, a resposta é clara. Sempre que estamos lidando com alguns sistemas de pagamento, somos obrigados a utilizar a solução mais segura. Não podemos nos dar ao luxo de perder esses dados confidenciais. InnoDB é o caminho a seguir. Se quisermos pesquisa de texto completo, podemos escolher MyISAM ou InnoDB. Somente o InnoDB oferece suporte à restrição de integridade referencial de chave estrangeira e, se planejamos usar essa restrição, a escolha é clara.

O modelo de armazenamento é tratado no momento de criação da tabela. Veja o exemplo:

CREATE TABLE Cars(Id INTEGER PRIMARY KEY, Name VARCHAR(50), Cost INTEGER) ENGINE='MyISAM';

Se não especificarmos o mecanismo de armazenamento explicitamente, o mecanismo de armazenamento padrão será usado. Antes do MySQL 5.5, o mecanismo de armazenamento padrão era o MyISAM. Para MySQL 5.5 e posterior, o mecanismo de armazenamento padrão é o InnoDB.

É possível migrar para um mecanismo de armazenamento diferente. Observe que a migração de uma tabela grande pode levar muito tempo. Além disso, podemos ter alguns problemas ao migrar tabelas. Alguns recursos podem não ser suportados em ambas as tabelas. Para saber como está configurado o seu schema, execute:

SELECT * FROM information_schema.TABLES WHERE TABLE_SCHEMA='[nome do schema]'

Para alterar a engine de armazenamento, execute:

ALTER TABLE [nome da tabela] ENGINE='MyISAM'; (exemplo mudando para MyISAM)

É importante entender cenário a cenário e buscar utilizar o melhor de cada opção. Por ser flexível e permitir a mudança de engine por tabela, fique a vontade para testar o desempenho, mudar e retestar. Lembre de sempre manter um backup do banco de dados antes de executar qualquer mudança. O ideal é montar um ambiente de testes semelhando ao ambiente de produção.

Postagens mais visitadas deste blog

Cloudflare Turnstile com HTML e PHP: Guia Completo e Otimizado

Proteger seus formulários online contra spam e bots é crucial para a segurança e a experiência do usuário em seu site. Por muito tempo, os CAPTCHAs tradicionais foram a principal ferramenta para essa tarefa, mas muitas vezes à custa da paciência dos visitantes. Felizmente, soluções mais modernas e inteligentes surgiram, e o Cloudflare Turnstile se destaca como uma das melhores alternativas. Neste guia completo e atualizado para 2025, vamos explorar passo a passo como implementar o Cloudflare Turnstile em seus formulários usando HTML e PHP. Você aprenderá não apenas a configuração básica, mas também as melhores práticas para garantir uma integração segura, eficiente e amigável ao usuário. Por que escolher o Cloudflare Turnstile? Antes de mergulharmos no código, é importante entender as vantagens que o Turnstile oferece em comparação com soluções como o reCAPTCHA do Google: Melhor Experiência do Usuário: Na maioria das vezes, o Turnstile é completamente invisível para o usuário, elimin...

Diferença entre banco de dados, instância, schema, tablespaces e etc.

Vamos a um pouco de teoria de banco de dados. Tenho certeza que será muito útil para os universitários. 🙂 No mundo da tecnologia e gerenciamento de informações, os bancos de dados desempenham um papel vital. Um banco de dados, ou base de dados, é um conjunto organizado de registros que oferece a capacidade de reorganização e extração de informações. Normalmente, os registros em um banco de dados são agrupados para servir a um propósito comum. A gestão de um banco de dados é tipicamente realizada por meio de um software conhecido como Sistema Gerenciador de Banco de Dados (SGBD). Exemplos notáveis de SGBDs incluem o Oracle, MySQL, SQL Server e PostgreSQL. É importante notar que, às vezes, o termo “banco de dados” é erroneamente usado como sinônimo de SGBD. No contexto atual, o modelo de dados mais amplamente adotado é o modelo relacional, no qual as informações são organizadas em tabelas compostas por linhas e colunas. Instâncias: A Máquina Cerebral do Banco de Dados Quando se trata de...

Como iniciar, parar e reiniciar o serviço MySQL no Linux

Recentemente fiz um post sobre a instalação do MySQL no Linux , agora vamos falar como verificar o status do serviço e como aplicar os comandos start, stop e restart. Coisas básicas para a manutenção. 1 . Como verificar o status do serviço É importante compreender que, dependendo da versão do Linux, o comando a ser usado pode variar. Em versões mais antigas, utilizamos o comando " service ";  já em versões mais recentes, o comando " systemctl ". Veja os exemplos abaixo: sudo systemctl status mysql ou sudo service mysql status Um retorno semelhante a esse mostra que o serviço está ativo. 2 . Como iniciar o serviço no Linux Novamente importante atentar para a distribuição do linux. Para o Ubuntu ou outras distribuições baseadas no Debian, você usará o comando systemctl, em outras provavelmente o service. Vamos aos exemplos: sudo systemctl start mysql ou sudo service mysql start Importante notar que o comando start pode não gerar output, por isso é importante verificar...

Diferença entre erro, falha e defeito - conceitos

Se você trabalha com desenvolvimento de software ou engenharia de qualidade, provavelmente já ouviu falar nos termos erro, falha e defeito. Embora esses termos sejam frequentemente usados ​​de forma intercambiável, é importante compreender suas diferenças e como eles se relacionam. Em termos simples, um erro é uma ação humana que produz um resultado incorreto ou inesperado. Um desenvolvedor pode cometer um erro ao escrever um código incorreto para uma determinada função, um testador pode cometer um erro ao não testar corretamente uma determinada funcionalidade, e um usuário pode cometer um erro ao inserir dados incorretos em um formulário. Uma falha, por sua vez, é a manifestação externa de um erro. É quando o produto não executa conforme o esperado. Por exemplo, se uma aplicação de pagamento online apresentar um erro de processamento de pagamento, isso pode ser considerado uma falha. As falhas podem ser detectadas pelos usuários ou por testadores durante o processo de teste. Por fim, ...

Contar caracteres no MySQL

Vamos fazer uso das funções da linguagem SQL para contar caracteres de um campo salvo em uma tabela. Ou seja, vamos selecionar diversos registros de uma tabela e contar os caracteres de um de seus campos. No MySQL temos várias funções para contar caracteres: LENGTH(cadeia) – comando também existente no Oracle Recebe uma cadeia , conta e retorna o número de caracteres. CHARACTER_LENGTH(cadeia)  Recebe também uma cadeia e retorna o número de caracteres contados. CHAR_LENGTH(cadeia) É um sinônimo de CHARACTER_LENGTH. Embora nem todas as versões de MySQL o tenham. A diferença entre LENGTH e CHARACTER_LENGTH é que em CHARACTER_LENGTH um caractere “multibyte” conta como um só caractere. Em LENGTH conta o número de bytes da cadeia. Assim, no caso de ter uma cadeia com 5 caracteres que ocupam 2 bytes cada um, LENGTH retornaria 10 e CHARACTER_LENGTH só 5. Por enquanto vamos utilizar CHARACTER_LENGTH, ela devolverá os resultados que esperamos obter, o número de caracteres da cadeia, independ...