Disabilitazione della registrazione su determinate tabelle


9

Sto usando SQL Server 2005. Ho due tabelle che contengono informazioni aggregate. Le informazioni vengono costantemente aggiornate, generando quasi 5 GB di dati di registro al giorno. (È più grande dell'intero database!) Vorrei disabilitare la registrazione su queste tabelle, poiché il rollback non è realmente necessario. Vorrei tuttavia continuare ad accedere alle altre tabelle nel database.

È possibile disabilitare la registrazione su alcune tabelle all'interno del database? In caso contrario, posso posizionare le due tabelle nello stesso schema, quindi disabilitare la registrazione sullo schema? È l'unica opzione per spostare le due tabelle in un database separato e disabilitare la registrazione lì?

Aggiornamento: immagino che spiegherò perché non ho davvero bisogno di registrare l'attività su queste tabelle.

Le due tabelle sono piene di dati GPS, quindi diventano piuttosto grandi. La prima tabella sta acquisendo posizioni non elaborate da sei tabelle Android sul campo. Nuovi dati da ciascuna delle compresse arrivano ogni 5-10 secondi. Tali informazioni vengono quindi aggregate come locationA, locationB, travelTime. L'obiettivo è in definitiva avere i tempi di percorrenza più brevi tra tutte le località, in base ai dati di guida effettivi. I dati sono solo per una piccola città e sono precisi solo con quattro cifre decimali, quindi sono gestibili. Tuttavia, con l'arrivo di nuovi dati non elaborati, ci sono tempi di percorrenza più lenti che devono essere aggiornati e nuovi che devono essere inseriti.

Una volta che i dati non elaborati vengono aggregati, vengono eliminati. Non stiamo andando indietro per tempi di percorrenza più lunghi, quindi è per questo che il rollback non conta molto in queste tabelle.


Risposte:


8
  • È possibile disabilitare la registrazione su alcune tabelle all'interno del database?
  • Posso posizionare le due tabelle nello stesso schema, quindi disabilitare la registrazione sullo schema?
  • È l'unica opzione per spostare le due tabelle in un database separato e disabilitare la registrazione lì?

La registrazione delle operazioni dell'utente non può essere disabilitata.

C'è una classe di operazioni denominate operazioni minimamente registrati che consente solo una transazione per essere rotolato indietro (al contrario di essere anche in grado di rotolare in avanti ). Tuttavia, non sembra che ciò che stai facendo soddisfi i criteri per l'applicazione, né penso che ciò risolva comunque il problema.

La soluzione di SQL Server sarebbe di SIMPLEripristinare le tabelle di gestione temporanea in un nuovo database in ripristino, separato dal database dei risultati di aggregazione, che presumo sia in fase di FULLripristino. Sebbene ciò non riduca il volume della registrazione, eliminerebbe la necessità di eseguire il backup del registro generato dai carichi di dati. (Vedi il mio post sul blog qui sulla registrazione e alcuni dei fattori coinvolti nella scelta del modello di recupero di un database.)

La separazione delle tabelle in un altro database fornirebbe la flessibilità necessaria per far atterrare il file di registro su un sottosistema I / O più veloce, probabilmente un piccolo array di unità a stato solido collegate localmente.

Inoltre, considerare che SQL Server da solo potrebbe non essere la soluzione migliore per risolvere il problema. Esistono altre soluzioni RDBMS che offrono la possibilità di disabilitare completamente la registrazione per determinate tabelle. I dati potrebbero essere organizzati e aggregati in un altro sistema e i risultati si sarebbero uniti nel database esistente di SQL Server, che è ben protetto da backup e registrazione completi.


@dangowans: Prego.
Jon Seigel,

3

No, non è possibile impedire la registrazione in SQL Server indipendentemente dallo schema, dalla tabella o dal livello del database.

Di fatto, ogni transazione che esegue modifiche o cambiamenti nel database di SQL Server viene registrata tranne le transazioni relative all'archivio versioni che coinvolgono TempDB quando viene utilizzato l'isolamento dello snapshot. (l'accesso al registro delle transazioni garantisce che è possibile eseguire il rollback della transazione (per alcune operazioni è possibile ridurre la registrazione (si chiama operazioni con registrazione minima) modificando il modello di recupero in BULK Logged --- è possibile saperne di più nella documentazione online di SQL Server qui


0

La risposta è, come sempre, dipende.
Quando hai detto:

Ho due tabelle che contengono informazioni aggregate. Le informazioni vengono costantemente aggiornate

Che tipo di aggregazione è quella?
Prova invece a utilizzare una VISUALIZZA, non è necessario aggiornare né registrare.

Se questa non è un'opzione, provare a utilizzare transazioni più brevi e eseguire il backup del registro tra di loro.

L'uso di un database diverso significa sovraccarico dell'amministrazione della sicurezza ecc. E avrà il proprio registro delle transazioni (anche con il modello di recupero SEMPLICE il registro è scritto, SQL Server tronca automaticamente il registro, ma non rilascia spazio su disco) quindi non consiglierei quell'opzione .


Ho aggiornato la domanda con il tipo di aggregazione in corso.
dangowans,

@dangowans Sto pensando al modello di recupero registrato in blocco, il tuo DRP richiede la capacità di eseguire un ripristino al punto nel tempo? Usi la replica? prova a leggere i prerequisiti per le operazioni minime registrate
Roi Gavish,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.