Cita:
Empezado por Vlady
cual de las soluciones es la mas conveniente
|
Si lo haces por eliminar espacio... ninguna !!!
Como te comenté antes, el aumento del tamaño de la base de datos es normal porque trabaja con transacciones, estas se quedan almacenadas aunque ya se hayan realizado. La única forma de "limpiarla" es haciendo un backup/restore.
Pero, realmente no hace falta, da igual si la BD ocupa más, no afecta para nada su rendimiento. Las BD de mis clientes (donde trabajo) superan todas los 500 Mb, el tamaño medio está por encima de 1 Gb, y algunos han sobrepasado ya los 20 Gb. Hacen backup todos los días automáticamente y una vez por semana (los fines de semana) hacen un backup/restore. Todo automáticamente. Ninguno se queja del rendimiento.
Cita:
Empezado por Vlady
1. Desactivar los indices y volver a activarlos (como se hace desde delphi).
2. Recalculando sus estadisticas (como se hace desde delphi).
|
Para recalcular las estadísticas (index selectivity) para los planes, que no tiene nada que ver con el tamaño de la BD, algo así:
Código Delphi
[-]
procedure TfrmRecalcularPlanes.btAceptarClick(Sender: TObject);
begin
if caiMensajeConfirmacion('¿Desea recalcular las estadísticas de uso de índices?' ) <> mrYes then
exit;
btAceptar.Enabled := false;
btCancelar.Enabled := false;
try
with qrConsulta do
begin
Close;
SelectSQL.Text := 'Select * from RDB$INDICES where RDB$STATISTICS is not null';
Open;
Last;
pbProgreso.Max := qrConsulta.RecordCount;
First;
end;
while not qrConsulta.Eof do
begin
qrSql.Close;
qrSql.Sql.Text := 'Set statistics index '+qrConsulta.FieldByName('RDB$INDEX_NAME').AsString;
qrSql.ExecQuery;
qrConsulta.Next;
pbProgreso.StepIt;
end;
finally
pbProgreso.Position := 0;
btCancelar.Enabled := true;
end;
caiMensajeInformacion('Proceso concluido');
close;
end;
Para activar o desactivar todos los índices, algo así:
Código:
Para desactivar todos los índices:
UPDATE rdb$indices
SET rdb$index_inactive = 1
Para activar todos los índices:
UPDATE rdb$indices
SET rdb$index_inactive = 0