5
respostas

Como apagar tabela temporária no HD

Olá! O professor ensinou sobre tabelas temporárias em memória ou hd, mas não mostrou como limpar/apagar as tabelas que foram para o hd. Eu tenho 6 tabelas temporárias no hd, como posso apagá-las?

Além disso, ele também mostrou como recuperar uma base importando os dados, mas eu tentei fazer o contrário e não consegui, o que posso ter feito errado? Ao tentar exportar apenas a estrutura das tabelas são criadas no arquivo exportado (create table), eu gostaria de saber como exportar os registros para ficarem semelhantes aos arquivos da aula de recuperação da base? Obrigado.

5 respostas

Olá Danilo, tudo bem? Não entendi muito bem sua primeira dúvida Danilo, poderia explicar melhor? Porque as tabelas temporárias ficam em memoria durante a operação e depois se perdem se o servidor for reiniciado, onde elas podem ficar é em um diretório temporário, no caso do Windows no diretório Temp, só que isso é um tanto quando complexo de identificar. Agora as tabelas que estão no disco e que você consegue ver tem o número 2, 3 ou mais a frente do nome da tabela? Se sim, então elas não são tabelas temporárias e sim tabelas reais isso acontece porque o modelo InnoDB salva em arquivos e após atingir um determinado tamanho é criado um novo arquivo com um número 2, ou 3, em sequência numérica para armazenar mais dados.

Sobre a exportação do banco de dados, ou no caso o Backup do banco, eu não entendi muito bem, você seguiu os passos do instrutor nesse vídeo onde ele faz o processo pelo Workbench? E os arquivos não contém os comandos INSERTs, foi isso? Ou foi seguindo os passos desse vídeo onde ele faz o processo pelo terminal? Em ambos os casos os meus arquivos foram criados com os comandos INSERTspara inserir todos os dados que a tabela continha.

Fico aguardando retorno!

Olá Jonilson, tudo bem? Obrigado por responder e desculpe se não fui muito claro, eu costumo escrever minhas dúvidas quase dando a resposta que eu mesmo não conseguia enxergar, mas vou tentar explicar novamente.

Sobre a primeira dúvida ainda não consegui entender, pois o professor mostra que existem duas áreas, uma onde as tabelas temporárias ficam e a outra onde elas ficarão caso o espaço para tabelas temporárias exceda seu limite. Quando rodei o script mostrou 6 tabelas e eu queria saber como apagar essas tabelas.

A segunda dúvida é sobre uma aula que o professor mostrou como importar uma base de dados utilizando somente o recurso "import" do workbench, eu tentei fazer o processo contrário para gerar os mesmos arquivos com os mesmos conteúdos, mas não conseguir, pois os dados não estavam sendo exportados, principalmente os que tinham INSERTs o que me deixou sem saber o que fazer.

Vídeos mais tarde percebi que o professor mostra como fazer essa exportação (backup) usando linha de comando e o workbench, eu que estava tentando testar uma coisa antes de aprendê-la.

Obrigado pela ajuda, se ainda não fui claro por favor escreva que irei tentar reformular minha questão novamente.

Ainda não entendi bem sua primeira dúvida, sei o que está tentando fazer, mas você poderia indicar o link da aula pra eu verificar e entender corretamente e ai ti indicar uma solução?

Sobre sua segunda dúvida, você poderia me falar se foi o procedimento que o instrutor fez nesse vídeo? E qual foi o problema? Você tentou realizar apenas o backup completo (full)?

Olá Janilson, tudo bem?

Obrigado pelo retorno. Neste vídeo o professor falou sobre as variáveis de ambiente e mostrou que existem alguns comandos que podemos usar para fazer algumas verificações no servidor.

Este comando é usado para verificar se alguma tabela temporária que deveria ter sido criada em memória, foi criada em HD. Se o valor=0 o tamanho da variável de memória está satisfatório, caso valor>0 significa que as tabelas estão sendo criadas em HD, deixando as consultas mais lentas.

No meu caso valor=6 porque eu havia instalado o MySQL antes de entrar na alura e estava fazendo um curso de SQL onde fiz várias consultas. Dias depois entrei na alura e elas continuam lá, indicando que tais tabelas não são apagadas ao encerrar a sessão, ou seja, não são temporárias.

SHOW GLOBAL STATUS LIKE 'Created_tmp_disk_tables';

Já este comando é utilizado para verificar o tamanho da variável de ambiente que foi definida no arquivo my.ini, a variável tmp_table_size.

SHOW GLOBAL VARIABLES LIKE 'tmp_table_size';

Depois com este comando ele mostrou que podemos aumentar a quantidade de memória para que nossas queries criem tabelas em memória e não em disco.

SET GLOBAL tmp_table_size = valor_inteiro_em_bytes;

O que ele não mostrou nem comentou a respeito, fruto da minha dúvida, foi como podemos apagar essas tabelas que foram criadas em disco. Também não falou se elas são apagadas do hd ao encerrar a sessão ou não.

Sobre a importação e backup

Está tudo certo e já consegui resolver, como havia dito, eu estava tentando fazer algo que ele nem havia explicando ainda e após a aula sobre backup eu pude entender e consegui fazer os backups.

O problema foi que ele mostrou como importar uma base e nessa mesma aula eu estava testando fazer o efeito contrário, exportar uma base (backup). Após a aula entendi todas as diferenças e como proceder em cada uma delas.

Agora só preciso saber como apagar tais tabelas que foram criadas em disco e não em memória. Se você souber agradeço se compartilhar. Caso eu descubra antes aviso aqui também.

Obrigado pela ajuda.

Entendi Danilo, então, mesmo depois de executar o comando:

SET GLOBAL tmp_table_size = valor_maior_do_que_o_que_esta_configurado;

As tabelas continuam em disco é isso? Você tentou parar o serviço do MySQL e inicializar novamente, e depois verificar se o valor dessa variável foi realmente alterado e também se as tabelas temporárias em disco ainda existem.

E fala pra gente aqui!