El optimizador de la pregunta del es el componente de un sistema de gestión de la base de datos que las tentativas de determinar la mayoría del modo eficaz de ejecutar una pregunta . El optimizador considera los planes posibles de la pregunta para una pregunta dada de la entrada, e intenta determinar cuáles de esos planes serán los más eficientes. los optimizadores Coste-basados de la pregunta asignan un " estimado; cost" a cada plan posible de la pregunta, y elegir el plan con el coste más pequeño. Los costes se utilizan para estimar el coste runtime de evaluar la pregunta, en términos de número de operaciones de la entrada-salida requeridas, de los requisitos de la CPU, y de otros factores. El sistema de planes de la pregunta examinados es formado examinando los caminos de acceso posibles (e. exploración del índice, exploración secuencial) y el ensambla los algoritmos (e. la clasificación/intercalación ensambla, picadillo ensambla, lazos jerarquizados ). El espacio de búsqueda puede llegar a ser absolutamente grande dependiendo de la complejidad de la pregunta del SQL.

El optimizador de la pregunta no se puede alcanzar directo por los usuarios. En lugar, las preguntas se someten una vez al servidor de base de datos, y analizado por el programa de análisis, entonces se pasan al optimizador de la pregunta donde ocurre la optimización.

Puesta en práctica

La mayoría de los optimizadores de la pregunta representan planes de la pregunta como árbol del " nodes" del plan;. Un nodo del plan encapsula una sola operación que se requiera ejecutar la pregunta. Los nodos se arreglan como árbol, en el cual los resultados intermedios fluyen de la parte inferior del árbol a la tapa. Cada nodo tiene cero o más nodo de niño -- ésos son los nodos cuya salida se alimenta como entrada al nodo del padre. Por ejemplo, un nodo del unido tendrá dos nodos de niño, que representan los dos ensamblan operandos, mientras que un nodo de la clase tendría un solo nodo de niño (la entrada que se clasificará). Las hojas del árbol son los nodos que producen resultados explorando el disco, por ejemplo realizando una exploración del índice o una exploración secuencial.

Ensamblar ordenar

El funcionamiento de un plan de la pregunta es determinado en gran parte por la orden en la cual se ensamblan las tablas. Por ejemplo, al ensamblar 3 tablas A, B, C de las filas del tamaño 10, 1.000 filas, respectivamente, un plan de la pregunta que ensambla B y C primero puede tomar a varios orden-de-magnitud más hora de ejecutar que una que ensambla A y C primero. La mayoría de los optimizadores de la pregunta determinan el ensamblan orden de vía un algoritmo de la programación dinámica iniciado por proyecto de la base de datos del sistema R del de IBM. Este algoritmo trabaja en dos etapas: Se computa el

primero, todas las maneras de tener acceso a cada relación en la pregunta. Cada relación en la pregunta se puede alcanzar vía una exploración secuencial. Si hay un índice en una relación que se pueda utilizar para contestar a un predicado en la pregunta, una exploración del índice puede también ser utilizada. Para cada relación, el optimizador registra la manera más barata de explorar la relación, así como la manera más barata de explorar la relación que produce expedientes en una orden clasificada particular.

  • El optimizador entonces considera combinar cada par de relaciones para las cuales una condición del unido exista. Para cada par, el optimizador considerará el disponible ensambla los algoritmos ejecutados por el DBMS . Preservará la manera más barata de ensamblar cada par de relaciones, además de la manera más barata de ensamblar cada par de relaciones que produzca su salida según una orden particular de la clase.
  • Entonces todos los planes de la pregunta de la tres-relación son computados, ensamblando cada plan de la dos-relación producido por la fase anterior con las relaciones restantes en la pregunta.

    De este modo, un plan de la pregunta se produce eventual que ensambla todas las preguntas en la relación. Observar que el algoritmo no pierde de vista la orden de la clase del sistema del resultado producido por un plan de la pregunta, también llamado un la orden interesante . Durante la programación dinámica, un plan de la pregunta se considera batir otro plan de la pregunta que produzca el mismo resultado, sólo si producen la misma orden de la clase. Esto se hace por dos razones. Primero, una orden particular de la clase puede evitar una operación de clase redundante más tarde en el proceso de la pregunta. En segundo lugar, una orden particular de la clase puede acelerar un subsecuente ensambla porque arracima los datos de una manera particular.

    Históricamente, los optimizadores derivados Sistema-r de la pregunta a menudo solamente considerarían el los planes izquierdo-profundos de la pregunta de, que primero ensamblan dos tablas bajas juntas, después ensamblan el resultado intermedio con otra tabla baja, y así sucesivamente. ¡Este heurístico reduce el número de planes que necesiten ser considerados (n! en vez de 4^n), pero puede dar lugar a no considerar el plan óptimo de la pregunta. Este heurístico se extrae de la observación que ensambla algoritmos tales como lazos jerarquizados requiere solamente un solo Tuple (fila del aka) de la relación externa a la vez. Por lo tanto, un plan izquierdo-profundo de la pregunta significa que pocos tuples necesitan ser llevados a cabo en memoria en cualquier momento: la relación externa ensambla plan necesita solamente ser ejecutada hasta que se produzca un solo tuple, y entonces la relación baja interna puede ser explorada (esta técnica se llama " pipelining").

    Los optimizadores subsecuentes de la pregunta han ampliado este espacio del plan para considerar el " bushy" preguntar los planes, donde ambos operandos a un operador del unido podrían ser intermedio que los resultados de otro ensamblan. Tales planes espesos son especialmente importantes en las computadoras paralelas porque permiten que diversas porciones del plan sean evaluadas independiente.

    El planeamiento de la pregunta para el jerarquizó preguntas del SQL

    Una pregunta del SQL a un DBMS emparentado moderno hace más que apenas selecciones y ensambla. Particularmente, el SQL pregunta a menudo la jerarquía varias capas de bloques SPJ (Seleccionar-Proyecto-Ensamblar), por medio de grupo por, existe, y el no existe los operadores de . Tales jerarquizaron en algunos casos preguntas del SQL pueden ser aplanados en una pregunta del seleccionar-proyecto-unido, pero no siempre. Los planes de la pregunta para las preguntas jerarquizadas del SQL se pueden también elegir usar el mismo algoritmo de la programación dinámica que utilizado para ensamblar ordenar, pero esto puede llevar a una escalada enorme en tiempo de la optimización de la pregunta. Tan algunos sistemas de gestión de la base de datos utilizan un acercamiento basado en las reglas alternativo que utilice un modelo de gráfico de la pregunta.

    Valoración del coste

    Uno de los problemas más duros de la optimización de la pregunta es estimar exactamente los costes de planes alternativos de la pregunta. La pregunta del coste de los optimizadores planea usar un modelo matemático de los costes de la ejecución de la pregunta que confíe pesadamente en las estimaciones de la cardinalidad, o del número de tuples, atravesando cada borde en un plan de la pregunta. La valoración de la cardinalidad alternadamente depende de las estimaciones del factor de la selección de predicados en la pregunta. Tradicionalmente, los sistemas de base de datos estiman selectividades con estadísticas bastante detalladas sobre la distribución de valores en cada columna, tal como histogramas . Esta técnica trabaja bien para la valoración de selectividades de predicados individuales. Sin embargo muchas preguntas tienen conjunciones de predicados tales como cuenta del select (*) de R, de S donde R.model='Accord'. Los predicados de la pregunta a menudo se correlacionan alto (por ejemplo, el model='Accord' implica el make='Honda'), y es muy duro estimar la selectividad de la oración conjuntiva en general. Las estimaciones de la cardinalidad y la correlación pobres del uncaught son una de las razones principales por las que los optimizadores de la pregunta escogen planes de la pregunta de los pobres. Ésta es una razón por la que un DBA debe poner al día regularmente las estadísticas de la base de datos, especialmente después de que las cargas importantes/descargan de los datos.
  • Zenithic
  • Ryan Garry
    Random links:Mazara del Vallo | Llywelyn dura | Kumara Vyasa | Swartruggens, del noroeste | High School secundaria de obispo Dwenger

  • © 2007-2008 enciclopediaespana.com; article text available under the terms of GFDL, from en.wikipedia.org
    ="http://pagead2.googlesyndication.com/pagead/show_ads.js">