En db2 una consulta con una cláusula 'with ur' permite que la consulta sea una lectura no confirmada y también la cláusula 'with nolock' en mysql. ¿Existe tal opción en Oracle también? Si no, ¿por qué?¿Oracle permite la opción de lectura no confirmada?
Respuesta
Tom proporciona una gran respuesta a esto: On Transaction Isolation Levels
Dice:
La lectura no comprometida nivel de aislamiento permite lecturas sucias. Oracle Database no usa lecturas sucias de , ni siquiera las permite. El objetivo básico de un nivel de aislamiento READ UNCOMMITTED es proporcionar una definición basada en estándares que permite para lecturas sin bloqueo.
...
Ahora, una base de datos que permitió una sucia lectura ... No sólo devolver el respuesta equivocada, sino que también se vuelve ... [una respuesta]. .. que nunca existió en la mesa. En una base de datos multiusuario, una lectura sucia puede ser una característica peligrosa. Personalmente, nunca he visto la utilidad de que ...
El punto aquí es que la lectura sucia es no es una característica; más bien, es una responsabilidad . En Oracle Database, es simplemente no es necesario. Obtiene todas las ventajas de de una lectura sucia-no bloqueo-sin ninguno de los resultados incorrectos .
La respuesta de Tom Kyte es correcta WRT oracle, no existe una lectura sucia debido a su arquitectura de Control de Concurrencia Múltiple (MVCC).
Desde la perspectiva de la funcionalidad de la aplicación, estoy completamente de acuerdo con Tom; no hay una buena razón o lecturas sucias.
¿Por qué usarlo fuera de Oracle? Donde no hay MVCC (por ejemplo, MySQL, Ingres) es un truco para evitar problemas de bloqueo que pueden ralentizar el rendimiento o hacer que el sistema de bloqueo se "quede sin bloqueos" si no se sintoniza correctamente. De la misma manera que necesita ajustar la reversión/deshacer en Oracle, debe administrar el sistema de bloqueo en bases de datos que no sean de MVCC.
Entonces, ¿por qué podría ser útil con Oracle? Como un aumento de rendimiento para funciones de solo lectura donde "datos incorrectos" es altamente improbable y altamente inconsecuente. En MySQL/DB2/Ingres/Informix (no estoy seguro acerca de SQL Server/Sybase) se puede usar para omitir la facilidad de administración de bloqueos para el rendimiento.
He aquí un ejemplo de una situación en la que se lee hacer no necesita consistencia:
- Lista de todos los productos
He aquí un ejemplo de una situación en la que se lee necesidad consistencia:
- Lista de productos en inventario
Oracle simplemente no concibe las lecturas sucias, ni podría "agregarse como una característica" sin perder realmente el beneficio del rendimiento (es decir se necesitarían demasiados trucos para obtener los datos sucios en la verdadera arquitectura MVCC de Oracle).
yeh, pero ¿por qué obligar a la gente a leer sus publicaciones con wikipedia? Simplemente escriba el término completo una vez y luego puede usar la abreviatura –
Las lecturas sucias son útiles cuando dentro de un procedimiento almacenado inserta registros en una tabla de registro para la depuración o verificación de rendimiento, o para verificar los pasos que su proceso de larga ejecución ha logrado. ¿Cómo leo estos registros con Oracle (como hago en SQL Server con la pista "nolock")? – alexbrina
Si bien las respuestas anteriores son realmente correcta, puede echar un vistazo a transacciones autónomas pero tenga en cuenta que no se recomienda y se puede echar un vistazo a aquí Autonomous Transactions y las desventajas aquí Autonomous Transactions a Poor Mis-Understood Feature .
más adecuado como comentario. – jjj
Sí. Tienes razón, pero como no tengo 50 rep no puedo comentar. Es por eso que la publicación. –
WITH UR rationale: Cuando se trata de una consulta SELECT SOLAMENTE (informe), no tiene sentido esperar a una confirmación. Si está informando sobre una tabla que se está actualizando, ya sea que obtenga esa actualización o no es inconsecuente. La lectura sucia es tan válida como los datos después de la confirmación. Considere si la consulta hubiera golpeado ese registro bloqueado un segundo antes.
Si ejecuta una consulta en una tabla cambiante, no obtendrá ningún punto establecido a tiempo. Los datos a los que se accede al principio de la consulta se encuentran en un momento anterior y luego se accede a los datos al final de la consulta. Puede haber numerosas actualizaciones en la tabla que pueden o no estar incluidas en los resultados de la consulta.
El uso de WITH UR y otros equivalentes de DBMS, proporciona una ganancia de rendimiento ya que las consultas no esperan las confirmaciones y no presenta ninguna pérdida en la integridad de los datos.
(Sal. Sólo tienes que configurar mi cuenta de lo que no estoy en condiciones de comentar otras respuestas.)
- 1. C# TextWriter, permite la lectura de archivos:
- 2. lectura: Ilegal opción -d
- 3. problemas de lectura de Oracle
- 4. Estado exacto de la memoria confirmada en java
- 5. Crear usuario con la opción Comando de administración de Oracle 11g no trabajar
- 6. Causa de la "respuesta ya confirmada" del servlet
- 7. ¿Es seguro establecer el aislamiento de MySQL en "Lectura no confirmada" (lecturas sucias) para el uso típico de la web? Incluso con la replicación?
- 8. ¿Por qué ORACLE no permite caracteres consecutivos de nueva línea en los comandos?
- 9. sqlbulkcopy - no permite DBNull.Value.?
- 10. No se enfoca, pero ¿permite la interacción?
- 11. La tabla Oracle dba_data_files no existe
- 12. ¿Cómo crear ButtonGroup de JToggleButton's que permite deseleccionar la opción actual?
- 13. ¿Qué sucede con una transacción no confirmada cuando se cierra la conexión?
- 14. Oracle SYS_GUID no cambia
- 15. Oracle: cómo crear un usuario de solo lectura
- 16. robots.txt permite solo root, no permite todo lo demás?
- 17. TimePicker no permite "24:00"?
- 18. ¿Por qué se permite la cadena de caracteres y el compilador no permite int int?
- 19. Redis no permite ninguna operación
- 20. IIS 7.0 no permite la descarga de videos MP4
- 21. ¿Por qué Java no permite la creación de matrices genéricas?
- 22. Autocompletar ¿no permite la entrada de texto libre?
- 23. iTunes connect no permite ingresar la descripción de línea múltiple
- 24. Scala restricciones de tipo no permite nulos
- 25. Oracle Deadlock cuando la aplicación Hibernate carga datos para uso de solo lectura
- 26. Oracle MERGE no inserta
- 27. No se puede establecer el encabezado en JSP. Respuesta ya confirmada
- 28. Configuración de Informatica repositorio con Oracle 10g [Oracle no conecta]
- 29. ¿Por qué una propiedad de solo lectura todavía permite escribir con KVC
- 30. La elevación del UAC no permite arrastrar y soltar
Resumen Ejecutivo: que no lo necesita, ya que Oracle ya hace lo correcto. –