Deshabilitar el registro en ciertas tablas


9

Estoy usando SQL Server 2005. Tengo dos tablas que contienen información agregada. La información se actualiza constantemente, generando casi 5 GB de datos de registro al día. (¡Eso es más grande que toda la base de datos!) Me gustaría deshabilitar el registro en estas tablas, ya que no es realmente necesario retroceder. Sin embargo, me gustaría seguir iniciando sesión en las otras tablas de la base de datos.

¿Es posible deshabilitar el registro en ciertas tablas dentro de la base de datos? Si no es así, ¿puedo colocar las dos tablas en el mismo esquema y luego deshabilitar el registro en el esquema? ¿Es la única opción para mover las dos tablas a una base de datos separada y deshabilitar el registro allí?

Actualización: supongo que explicaré por qué realmente no necesito registrar la actividad en estas tablas.

Las dos tablas están llenas de datos GPS, por lo que se vuelven bastante grandes. La primera tabla está capturando ubicaciones sin procesar de seis tablas de Android en el campo. Los nuevos datos de cada una de las tabletas vienen cada 5-10 segundos. Esa información se agrega como ubicaciónA, ubicaciónB, travelTime. El objetivo es, en última instancia, tener los tiempos de viaje más cortos entre todas las ubicaciones, según los datos de manejo reales. Los datos son solo para una ciudad pequeña y solo tienen una precisión de cuatro decimales, por lo que son manejables. Sin embargo, a medida que ingresan nuevos datos sin procesar, hay tiempos de viaje más lentos que deben actualizarse y otros nuevos que deben insertarse.

Una vez que los datos sin procesar se agregan, se purgan. No vamos hacia atrás a tiempos de viaje más largos, por lo que retroceder no importa tanto en estas tablas.


Respuestas:


8
  • ¿Es posible deshabilitar el registro en ciertas tablas dentro de la base de datos?
  • ¿Puedo colocar las dos tablas en el mismo esquema y luego deshabilitar el registro en el esquema?
  • ¿Es la única opción para mover las dos tablas a una base de datos separada y deshabilitar el registro allí?

El registro de las operaciones del usuario no se puede deshabilitar.

Hay una clase de operaciones denominadas operaciones registradas mínimamente que sólo permite que una transacción se rodó hacia atrás (en oposición a también ser capaz de rodar hacia adelante ). Sin embargo, no parece que lo que esté haciendo cumpla con los criterios para que se aplique, ni creo que esto resuelva el problema de todos modos.

La solución de SQL Server sería aterrizar las tablas de preparación en una nueva base de datos en SIMPLErecuperación, separada de la base de datos de resultados de agregación, que supongo que está en FULLrecuperación. Si bien esto no disminuiría el volumen de registro, eliminaría la necesidad de realizar una copia de respaldo del registro generado por las cargas de datos. (Consulte la publicación de mi blog aquí sobre el registro y algunos de los factores involucrados en la elección del modelo de recuperación de una base de datos).

La separación de las tablas en otra base de datos proporcionaría la flexibilidad para aterrizar el archivo de registro en un subsistema de E / S más rápido, probablemente una pequeña matriz de unidades de estado sólido conectadas localmente.

Además, considere que SQL Server por sí solo puede no ser la mejor solución para resolver el problema. Existen otras soluciones RDBMS que ofrecen la capacidad de deshabilitar completamente el registro de ciertas tablas. Los datos podrían almacenarse y agregarse en otro sistema, y ​​los resultados se fusionarían en la base de datos existente de SQL Server, que está bien protegida por el registro completo y las copias de seguridad.


@dangowans: De nada.
Jon Seigel

3

No, no hay forma de evitar el inicio de sesión en SQL Server, independientemente del esquema, la tabla o el nivel de la base de datos.

De hecho, todas las transacciones que realizan modificaciones o cambios en la base de datos de SQL Server se registran, excepto las transacciones relacionadas con el almacén de versiones que involucran TempDB cuando se utiliza el aislamiento de instantáneas. (iniciar sesión en el registro de transacciones garantiza que la transacción pueda revertirse (para ciertas operaciones puede reducir el registro (se llama operaciones mínimamente registradas) cambiando el modelo de recuperación a BULK Logged --- puede obtener más información al respecto en los Libros en pantalla de SQL Server aquí)


0

La respuesta es, como siempre, depende.
Cuando dijiste:

Tengo dos tablas que contienen información agregada. La información se actualiza constantemente.

¿Qué tipo de agregación es esa?
Intente utilizar una VISTA en su lugar, no es necesario actualizar, y sin iniciar sesión.

Si esa no es una opción, intente usar transacciones más cortas y haga una copia de seguridad del registro entre ellas.

El uso de una base de datos diferente significa gastos generales de administración de seguridad, etc. y tendrá su propio registro de transacciones (incluso con el modelo de recuperación SIMPLE, el registro está escrito, SQL Server simplemente trunca el registro automáticamente, pero no libera espacio en disco), por lo que no recomendaría esa opción .


Actualicé la pregunta con el tipo de agregación que está teniendo lugar.
dangowans

@dangowans Estoy pensando en el modelo de recuperación de registro masivo, ¿su DRP requiere la capacidad de realizar una restauración en un punto en el tiempo? ¿Usas replicación? intente leer sobre los requisitos previos para las operaciones mínimas registradas
Roi Gavish
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.