Eu tenho um banco de dados MySql de 30 GB, feito de tabelas innoDB. atualmente o conjunto de caracteres das tabelas é: "utf8_unicode_ci" e quero mudar para "utf8_general_ci", qual a melhor maneira de fazer isso? atualmente estou passando por cada mesa e correndo ALTER TABLE some_table CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
e demora uma eternidade ... existe uma maneira melhor?
relate perguntas
-
Existem ferramentas de benchmarking do MySQL? [fechado]
-
Onde posso encontrar o log lento do mysql?
-
Como posso otimizar um mysqldump de um banco de dados grande?
-
Quando é o momento certo para usar o MariaDB em vez do MySQL e por quê?
-
Como um grupo pode rastrear alterações no esquema do banco de dados?
Eu sei o que você quer dizer. Às vezes, alterar a tabela precisa reconstruir toda a tabela quando você a usa.
Supondo que a instrução Alter table esteja incomodando você porque leva muito tempo E bloqueia sua tabela, então você pode usar 2 ferramentas para torná-la uma tabela alter "online".
Um se do facebook https://www.facebook.com/notes/mysql-at-facebook/online-schema-change-for-mysql/430801045932
E um é de openark http://openarkkit.googlecode.com/svn/trunk/openarkkit/doc/html/oak-online-alter-table.html (somente MySQL 5.1+)
Ambas as ferramentas basicamente criam uma nova tabela, copiam os dados e os mantêm atualizados, atualizando a tabela antiga e a nova com novas consultas até que a nova tabela seja concluída. Isso significa que você precisa ter espaço disponível para fazer essa operação.
Espero que ajude.
Você pode tentar:
Como em todas as operações arriscadas, execute primeiro em um ambiente de teste para verificar o resultado. Quando você "source source.sql", se estiver executando literalmente a partir do prompt do mysql, não se esqueça de definir os nomes utf8. Se estiver cating no mysql, execute mysql w/ --default-character-set=utf8 para evitar a estranheza do conjunto de caracteres nas configurações do seu terminal.