Red de conocimiento informático - Material del sitio web - ¿Cómo solucionar el problema del mensaje de advertencia SQL2314W que aparece cuando DB2 realiza la operación RUNSTATS?

¿Cómo solucionar el problema del mensaje de advertencia SQL2314W que aparece cuando DB2 realiza la operación RUNSTATS?

Producto: Multiplataforma

Versiones: V8, V9 Problema: Cuando se actualiza una tabla, se puede ejecutar RUNSTATS en ella para recopilar estadísticas de datos de índice y tabla, pero Dependiendo de el nivel de la operación de actualización, las estadísticas resultantes pueden ser inconsistentes. Puede encontrar el siguiente mensaje de error:

SQL2314W Algunas estadísticas están en un estado inconsistente. Las "" estadísticas recopiladas más recientemente no coinciden con las "" estadísticas existentes.

Resolver información estadística inconsistente puede generar planes de consulta subóptimos. SQL2314W es un mensaje de advertencia que genera esta posibilidad. Debe intentar ejecutar el comando RUNSTATS con el nivel de acceso de la aplicación a la tabla lo más bajo posible (o, si es posible, sin operación). Por ejemplo, intente evitar realizar operaciones RUNSTATS en presencia de operaciones de actualización.

Además, el comando RUNSTATS usa la opción "ALLOW WRITE ACCESS" de forma predeterminada. También puede usar la opción "ALLOW READ ACCESS" para ejecutar RUNSTATS. De esta manera, no se pueden cambiar otras operaciones cuando RUNSTATS. se ejecuta la tabla. Sin embargo, esta opción tendrá un impacto en el paralelismo de la aplicación, porque cualquier operación que quiera cambiar la tabla estará en estado de espera. Para reducir el tiempo que RUNSTATS bloquea una tabla con la opción ALLOW READ ACCESS, puede considerar usar la opción TABLESAMPLE, que hace que RUNSTATS recopile estadísticas sobre parte de la tabla en lugar de todos los datos. Una elección razonable del tamaño de los datos muestreados puede acelerar RUNSTATS y al mismo tiempo garantizar la coherencia de la información estadística.

Si ninguna de las sugerencias anteriores puede evitar que aparezca el mensaje de advertencia SQL2314W, y al verificar el plan de acceso de la aplicación que accede a la tabla, se encuentra que el optimizador no pudo seleccionar automáticamente el plan de acceso óptimo. Debería considerar volver a ejecutar RUNSTATS cuando intente garantizar que RUNSTATS pueda obtener mayores derechos de acceso para que el optimizador pueda regenerar el plan de acceso óptimo. Sin embargo, para los planes de acceso no óptimos causados ​​​​por encontrar SQL2314W, se debe seleccionar el escaneo de índice, pero el optimizador selecciona el escaneo de la tabla, también puede considerar usar la instrucción ALTER TABLE para marcar la tabla como "volátil", para alentar al optimizador. para elegir escaneos de índice en lugar de escaneos de tablas.