Ver Mensaje Individual
  #4  
Antiguo 23-06-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.067
Reputación: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Vlady Ver Mensaje
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
//  inherited;
    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
Responder Con Cita