Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

xanburzum

manutenção em suas tabelas MySQL

Recommended Posts

Com esta função é possível executar alguns comandos de manutenção em suas tabelas , como os comandos ANALYZE,CHECK,OPTIMIZE,REPAIR, para saber mais sobre este comandos acesse o manual do MySQL.

 

ANALYZE TABLE

ANALYZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name[,tbl_name...]

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.

Isto seria equivalente a executar myisamchk -a na tabela.

O MySQL utiliza a distribuição de chaves armazenadas para decidir em que ordem tabelas devem ser unidas quando alguém faz um join em alguma coisa diferente de uma constante.

 

OPTIMIZE TABLE

OPTIMIZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name[,tbl_name]...

OPTIMIZE TABLE 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. Você pode utilizar OPTIMIZE TABLE para reclamar o espaço inutilizado e para desfragmentar o arquivo de dados.

Na maioria da configurações você não tem que 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 e apenas em determinadas tabelas.

No momento OPTIMIZE TABLE só funciona em tabelas MyISAM e BDB. Para tabelas BDB, OPTIMIZE TABLE é atualmente mapeado para ANALIZE TABLE. See Secção 4.6.2, “Sintaxe de ANALYZE TABLE”.

Você pode ter a otimização de tabelas trabalhando em outros tipos de tabelas iniciando o mysqld com --skip-new ou --safe-mode, mas neste caso, OPTIMIZE TABLE é mapeado apenas para ALTER TABLE.

 

CHECK TABLE

CHECK TABLE nome_tabela[,nome_tabela...] [opção [opção...]]

opção = QUICK | FAST | MEDIUM | EXTENDED | CHANGED

CHECK TABLE funciona somente em tabelas MyISAM. Em tabelas MyISAM é a mesma coisa que executar myisamchk --medium-check nome_tabela na tabela.

 

Se você não especificar nenhuma opção, MEDIUM é usado.

 

Verifica se existem erros na(s) tabela(s). Para as tabelas MyISAM as estatísticas das chaves são atualizadas.

 

REPAIR TABLE

REPAIR [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name[,tbl_name...] [QUICK] [EXTENDED] [uSE_FRM]

REPAIR TABLE funciona somente em tabelas MyISAM e é a mesma coisa que executar myisamchk -r nome_tabela na tabela.

 

Normalmente você nunca deve executar este comando, mas se um disastre ocorrer você vai precisar recuperar seus dados de uma tabela MyISAM utilizando REPAIR TABLE. Se as suas tabelas estiverem muito corrompidas, você deve encontrar a razão, para eleiminar a necessidade de se usar REPAIR TABLE!

 

 

<%
'Funcao para realizar a  manutenção das tabelas de um banco em  mySQL

Cmd: Comando a ser executado. Os comandos podem ser:
'		'ANALYZE'
'		'CHECK'	
'		'OPTIMIZE' 
'		'REPAIR'

Function ManutencaoTabelas(ByVal Cmd)
	'Declarações
	Dim strRetorno
	Dim strSQL
	Dim objRS
	Dim objRS2
	Dim objConexao
	Dim strConexao
		
	'Inicialização
	Set objConexao	= Server.CreateObject("ADODB.Connection")
	Set objRS		= Server.CreateObject("ADODB.RecordSet")
	Set objRS2		= Server.CreateObject("ADODB.RecordSet")
	strRetorno		= ""
	strConexao		= "SUA CONEXAO COM O BANCO MYSQL"
		
	'Lista das tabelas
	objConexao.Open strConexao
	Set objRS = objConexao.Execute("SHOW TABLES")
	strRetorno = "<table border=1>"
	strRetorno = strRetorno & "<tr>"
	strRetorno = strRetorno & "	<th>Tabela</th>"
	strRetorno = strRetorno & "	<th>Operação</th>"
	strRetorno = strRetorno & "	<th>Tipo</th>"
	strRetorno = strRetorno & "	<th>Mensagem</th>"
	strRetorno = strRetorno & "</tr>"
	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 & "<tr>"
				strRetorno = strRetorno & "	<td>" & objRS2("TABLE")		& "</td>"
				strRetorno = strRetorno & "	<td>" & objRS2("OP")		& "</td>"
				strRetorno = strRetorno & "	<td>" & objRS2("MSG_TYPE")	& "</td>"
				strRetorno = strRetorno & "	<td>" & objRS2("MSG_TEXT")	& "</td>"
				strRetorno = strRetorno & "</tr>"
			End If
			objRS2.Close
			objRS.MoveNext
		Loop
	Else
		strRetorno = strRetorno & "<tr><td colspan=4>Não foram encontrads tabelas</td></tr>"
	End If
	strRetorno = strRetorno & "</table>"
	objRS.Close

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.