Primary Key Invisível: O “Modo Ghost” que corrige as gambiarras do seu sistema.

Falaaa Galerinha !!!

 

Nesta postagem irei demonstrar e explicar o quanto uma chave primária é importante para qualquer ambiente.

 

  • O crime -> Criar tabela sem PK.

Para o desenvolvedor, uma tabela é só uma PLANILHA EXCEL GLORIFICADA. Para nós DBA’s, uma tabela sem PRIMARY KEY (PK) é um desastre anunciado. Sem Primary Key, a InnoDB fica perdida, tentando criar um índice interno (o famosoo Share Row ID) que acabará virando um gargalo quando o sistema cresce exponencialmente.

No português claro, é o contexto de morarmos em um Prédio onde os apartamentos não possuem numeração. Assim, imaginamos um entregador (MySQL) tentando achar o local da entrega.

  • O castigo.

Para aquelas que utilizam de MySQL Cluster ou Group Replication, a PK não é opcional, e sim OBRIGATÓRIA.

Se o desenvolvedor insiste em continuar neste contexto de tabelas “peladas”, a replicação engasga.

O nó secundário tem que escanear a tabela inteira para achar uma linha que foi alterado no primário. Resultado? Lag de replicação INFINITO….. 

E vemos a famosa frase: Acionem o DBA, estamos com o ambiente em atraso.

  • A solução “Ninja”: (GIPK)

Aqui vemos o pulo do gato implementado no MySQL 8.0.

O DBA simplesmente ativa o “sql_generate_invisible_primary_key = ON”.

  1. O que o DEV vê: A mesma “tabelinha” capenga de sempre.
  2. O que o MySQL faz: Cria uma coluna “my_row_id” potente, com Auto_increment, mas deixando-a escondida.
  3. Vantagem: O select * (all) do DEV continua funcionando (sem quebrar a aplicação engessada dele), mas o Cluster agora tem um ID sólido para replicar os dados na velocidade da LUZ.

Vamos as demonstrações técnicas.

  • O famoso CREATE TABLE.

  • Leitura simples + plano de execução demonstrando a má performance.

  • Checagem + ativição da váriavel.

  • Novamente, CREATE TABLE porém com váriavel ativa.

  • Formato correto de demonstração via DISPLAY (Prompt).

  • Plano de execução demonstrando ganhos com o uso da chave primária (invisible) ao invés de demais colunas.

 

Dica do DBA!!!

No sistema atual de cada um, poderão realizar a ATIVAÇÃO desta chave primária manualmente ou atráves desta variável definida em SISTEMA.

Como abaixo demonstro uma tabela existente com dados, e por via de regras precisaria de CHAVE PRIMÁRIA.

Temos a possibilidade de apresentar a coluna para consultas via INFORMATION_SCHEMA.COLUMNS com a definição (show_gipk_in_create_table_and_information_schema = ON).

Antes de tudo, revisem sempre o sistema atual de seu cliente.

 

 


Referências.

MySQL MeetUP 2023 – Apresentação Vinicius Grippa. (partipação plateia).

https://dev.mysql.com/doc/refman/8.0/en/create-table-gipks.html

https://dev.mysql.com/doc/refman/8.0/en/invisible-columns.html

COMPARTILHE:
Picture of Henrique Borba Garcia

Henrique Borba Garcia

Iniciei meus estudos na área de Desenvolvimento no ano de 2021. Atualmente, em MySQL tenho uma experiência de 5 anos, e com bancos não relacionais (MongoDB) 2 anos. Desempenho o papel de LÍDER TÉCNICO para ambas as técnologias. Sou bastante persistente e proativo em diversos assuntos em banco de dados. Minhas certificações. . MySQL 2025 Solution Enginner Specialist Assessment. . MySQL Database Administrator 8.0 . MySQL Database Developer 8.0 . OCI Foundations 2021, 2022, 2023, e 2024. . MySQL Database Service . MySQL Explorer. . SQL Explorer. . Oracle Cloud Data Management 2023
Picture of Henrique Borba Garcia

Henrique Borba Garcia

Iniciei meus estudos na área de Desenvolvimento no ano de 2021. Atualmente, em MySQL tenho uma experiência de 5 anos, e com bancos não relacionais (MongoDB) 2 anos. Desempenho o papel de LÍDER TÉCNICO para ambas as técnologias. Sou bastante persistente e proativo em diversos assuntos em banco de dados. Minhas certificações. . MySQL 2025 Solution Enginner Specialist Assessment. . MySQL Database Administrator 8.0 . MySQL Database Developer 8.0 . OCI Foundations 2021, 2022, 2023, e 2024. . MySQL Database Service . MySQL Explorer. . SQL Explorer. . Oracle Cloud Data Management 2023

COMENTÁRIOS

PARTICIPE

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

POSTADO POR
Picture of Henrique Borba Garcia

Henrique Borba Garcia

Iniciei meus estudos na área de Desenvolvimento no ano de 2021. Atualmente, em MySQL tenho uma experiência de 5 anos, e com bancos não relacionais (MongoDB) 2 anos. Desempenho o papel de LÍDER TÉCNICO para ambas as técnologias. Sou bastante persistente e proativo em diversos assuntos em banco de dados. Minhas certificações. . MySQL 2025 Solution Enginner Specialist Assessment. . MySQL Database Administrator 8.0 . MySQL Database Developer 8.0 . OCI Foundations 2021, 2022, 2023, e 2024. . MySQL Database Service . MySQL Explorer. . SQL Explorer. . Oracle Cloud Data Management 2023
PARCEIROS