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.
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.
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.
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 GarryRandom links: Mazara del Vallo | Llywelyn dura | Kumara Vyasa | Swartruggens, del noroeste | High School secundaria de obispo Dwenger