Categorias

Rotinas de manutenção de tabelas no mySQL

Quem desenvolve aplicações utilizando o mySQL em algum momento precisará realizar rotinas de manutenção das tabelas.
O mySQL por ser um banco de dados simples é necessário periódicamente executar algumas rotinas manualmente.

Com esta função é possível executar alguns comandos de manutenção em suas tabelas diretamente de sua aplicação web.

Os comandos disponíveis para esta função são:
ANALYZE
Analisa e armazena a distribuição de chaves para a tabela. Durante a análise a tabela é bloqueada com uma trava de leitura. Isto funciona em tabelas MyISAM e BDB.

Utilização: Response.Write ManutencaoTabelas(“ANALYZE”)

CHECK
Verifica se existem erros nas tabelas e funciona somente em tabelas do tipo MyISAM.
Utilização: Response.Write ManutencaoTabelas(“CHECK”)

OPTIMIZE
Deve ser usado se você apagou uma grande parte de uma tabela ou se você fez várias alterações à uma tabela com registros de tamanho variável (tabelas que tenham campos do tipo VARCHAR, BLOB ou TEXT).
Registros apagados são mantidos em uma lista de ligações e operações INSERT subsequentes reutilizam posições de registros antigos.
Na maioria da configurações você não precisa executar OPTIMIZE TABLE. Mesmo se você fizer diversas atualizações para registros de tamanhos variáveis não é desejável que você precise fazer isto mais que uma vez por mês/semana.
Utilização: Response.Write ManutencaoTabelas(“OPTIMIZE”)

REPAIR
Repara uma tabela possivelmente corrompida e funciona somente em tabelas do tipo MyISAM.
Normalmente você nunca deve executar este comando, mas se um disastre ocorrer você vai precisar recuperar os dados de suas tabelas.
Utilização: Response.Write ManutencaoTabelas(“REPAIR”)

IMPORTANTE: Para que o código funcione corretamente, será necessário configurar a strings de conexão com o seu banco de dados mySQL através da variávei strConexao.

"
	strRetorno = strRetorno & ""
	strRetorno = strRetorno & "	Tabela"
	strRetorno = strRetorno & "	Operação"
	strRetorno = strRetorno & "	Tipo"
	strRetorno = strRetorno & "	Mensagem"
	strRetorno = strRetorno & ""
	If Not objRS.EOF Then
		Do While Not objRS.EOF
			strSQL = Cmd & " TABLE " & objRS.Fields(0).Value & ""
			Set objRS2 = objConexao.Execute(strSQL)
			If Not objRS2.EOF Then
				strRetorno = strRetorno & ""
				strRetorno = strRetorno & "	" & objRS2("TABLE")		& ""
				strRetorno = strRetorno & "	" & objRS2("OP")		& ""
				strRetorno = strRetorno & "	" & objRS2("MSG_TYPE")	& ""
				strRetorno = strRetorno & "	" & objRS2("MSG_TEXT")	& ""
				strRetorno = strRetorno & ""
			End If
			objRS2.Close
			objRS.MoveNext
		Loop
	Else
		strRetorno = strRetorno & "Não foram encontrads tabelas"
	End If
	strRetorno = strRetorno & ""
	objRS.Close

	'Retornando a função
	ManutencaoTabelas = strRetorno
		
	'Destruição
	Set objRS2		= Nothing
	Set objRS		= Nothing
	Set objConexao	= Nothing	
End Function
%>