Minhas tabelas foram criadas com compressão de linha InnoDB ( ENGINE=InnoDB ROW_FORMAT=COMPRESSED
). Agora estou alterando-os para compactação de página. De acordo com a documentação oficial do MariaDB, habilitar a compactação de página afeta apenas as tabelas recém-criadas.
Assim, crio uma tabela de réplicas e uso INSERT INTO SELECT
.
Gostaria de saber se é possível ALTER
uma tabela alterar o tipo de compactação (de linha para página) ?
Podemos ALTER
usar uma tabela comum para usar a compactação de página usando
ALTER TABLE t1 PAGE_COMPRESSED=1;
Minha pergunta é sobre uma maneira segura de remover ROW_FORMAT=COMPRESSED
e adicionar arquivos PAGE_COMPRESSED=1
.
Eu tentei métodos diferentes e li muitos artigos. A maneira padrão de fazer isso é
No entanto, isso vai deixar
KEY_BLOCK_SIZE
em todas as teclas.Há quem diga que este é apenas o
SHOW CREATE TABLE
display, comoKEY_BLOCK_SIZE=8
padrão para o maior tamanho de bloco para as teclas, mas o valor é exatamente o daCOMPRESSED
tabela. Se a tabela foi criada comKEY_BLOCK_SIZE=1
, as chaves terãoKEY_BLOCK_SIZE=1
após a descompactação.Alguns, por outro lado, dizem que esse bug foi corrigido no MySQL 8, mas confirmo que existe no MariaDB 10.5.9.
VEREDITO
ALTER
é um caminho limpo, mas sou a favorINSERT INTO SELECT
por dois motivos:INSERT
grava as páginas compactadas no disco.