¿Hay diferencias significativas con más de 500 millones de tablas de filas en Oracle?

8

Estoy en un diseñador de bases de datos en un entorno de almacén de datos. Estoy acostumbrado a tratar con tablas con un máximo de 1 millón de filas y ahora me enfrento a tablas con más de medio billón de filas. ¿Hay diferencias significativas con las herramientas en la "caja de herramientas de eficiencia"? ¿Puedo confiar en mi conocimiento previo de índices, particiones y similares, o algunas de estas herramientas específicas son más un obstáculo que una ayuda con datos tan grandes? ¿Algún otro consejo para lidiar con las mesas?

(Ya encontré una excelente publicación sobre la actualización de 700 millones de filas al mismo valor )

JHFB
fuente

Respuestas:

7

Los fundamentos de la indexación, etc., funcionan exactamente de la misma manera, por lo que, estrictamente hablando, ¡la única diferencia es el costo de equivocarse!

Dicho esto, aquí hay una lista (no necesariamente completa) de cosas que vale la pena tener en cuenta:

  • Es probable que los índices del árbol B tengan un nivel adicional, por lo que el costo de usarlos es ligeramente mayor. Sin embargo, en un DW debería usar índices de mapa de bits (suponiendo que tenga la edición Enterprise)
  • Tomará mucho más tiempo calcular las estadísticas para toda la tabla, hasta el punto en que no sea posible en la ventana normal de la noche a la mañana. Esto puede ser superado por
    • Usando un más pequeño estimate_percentcuando se recopilan estadísticas, se muestrea menos de la tabla.
    • Uso de la recopilación de estadísticas incrementales (sin embargo, solo es relevante si tiene índices globales en tablas particionadas)
  • Los histogramas para índices están limitados a 254 cubos. Es probable que más filas signifiquen valores más distintos, lo que significa que los valores "casi populares" pueden ser un problema mayor para los datos asimétricos.
  • Las posibilidades de que toda la tabla quepa en la memoria caché del búfer se aproximen a cero, lo que significa que es más probable que tenga más lecturas físicas (de disco). Su conjunto de trabajo normal también puede ser demasiado grande para almacenar en caché.
  • Particionar puede ser tu amigo, si lo haces bien. Si generalmente modifica y consulta datos en varias particiones, puede costarle más que tablas simples.
  • Las vistas materializadas pueden ser muy útiles para reducir su conjunto de trabajo. por ejemplo, si tiene más de 10 años de datos, pero la gran mayoría de las consultas de los usuarios son solo en los últimos 2 años, entonces crear un MV limitado solo a estos datos puede ser de gran ayuda.
  • Cuanto más grande sea la base de datos, menos probable es que la empresa (pueda) financiar una base de datos de prueba que sea un duplicado completo del entorno en vivo. Esto dificulta la reproducción de problemas de rendimiento en las pruebas, ya que las consultas lentas pueden deberse a la escala y / o al almacenamiento físico de los datos. No puede contar con poder extrapolar resultados de consultas de una base de datos de prueba mucho más pequeña al rendimiento correspondiente en vivo.

Si aún no está familiarizado con la lectura y la comprensión de los planes de ejecución, pasaré algún tiempo aprendiendo esto: es probable que tenga problemas de rendimiento en algún momento, por lo que saber cómo diagnosticar el problema correctamente será más importante, ya que es más difícil agregar nuevos indexa o realiza cambios de esquema cuando los recuentos de filas son más grandes.

Chris Saxon
fuente
4

La cantidad tiene una calidad propia.

Cuando se trata de tablas de ese tamaño, ayuda no pensar en la tabla de hechos como una tabla, sino en pensarla a nivel de segmento, o como una colección de tablas discretas. (Tener la edad suficiente para recordar la partición de rodar-mi-propio con vistas de partición ayuda)

El papel de Tim Gorman Scaling to Infinity es un recurso invaluable.

Adam Musch
fuente
1
+1 para la referencia. Ha actualizado las diapositivas para 2012 .
Iain Samuel McLean Élder