sql >> Base de Datos >  >> RDS >> Oracle

El laberinto de ajuste de rendimiento

Un día, se despierta y descubre que es un administrador de base de datos de Oracle. ¡Los dioses finalmente han visto la luz a tu verdadero potencial y te han permitido trabajar en el mejor trabajo del mundo! Comienzas tu carrera de DBA con ojos brillantes y cola peluda. Está creando nuevas bases de datos, otorgando privilegios, escribiendo código PL/SQL. La vida es genial. ¡No puede esperar para levantarse por la mañana, servirse la primera taza de café y apuntar su navegador a sus foros favoritos de Oracle, ansioso por absorber el conocimiento de toda una vida antes del almuerzo! Si esos dioses todavía te sonríen, incluso puedes responder algunas preguntas y ser recompensado con puntos increíbles. La vida es buena. La vida es dulce.

Mientras todavía disfruta del brillo de su nueva carrera, alguien se le acerca con un problema. Un problema de rendimiento. Te congelas. Hay un pequeño nudo en la garganta cuando se da cuenta de que no tiene idea de cómo resolver los problemas de rendimiento de la base de datos. Lo que no se dio cuenta ese día es que todos los DBA antes que usted han estado exactamente en la misma situación al principio de sus carreras. Sin embargo, no impide que la otra persona te mire y se pregunte por qué no estás resolviendo el problema de rendimiento de inmediato. Después de todo, usted es el DBA y debe saber cómo hacer estas cosas. Estas cosas mágicas las llaman (cue el canto de los ángeles) Performance Tuning . Porque se ha escrito, si va a ser un DBA y sobrevivir, y hacer bien este trabajo, tendrá que ajustar el rendimiento. Otros nunca sabrán lo que sucede detrás de la cortina mientras haces pociones y lanzas hechizos. Lo único que les importa es que hayas resuelto su problema de rendimiento y puedan continuar con su trabajo diario.

En este punto temprano de su carrera, cada DBA decide que necesita aprender más sobre esto que llaman Ajuste del rendimiento . ¿Qué es? ¿Cómo lo hago? ¿Cómo puedo convertirme en la persona más importante de mi departamento de TI porque descubrí el ingrediente secreto para convertir ese informe de 5 horas en un milagro de 1 minuto?

Oh, éramos tan jóvenes en ese entonces... tan ingenuos. Pensamos que era fácil. Presione algunos botones, encienda algunas herramientas y listo. ¡Se encontró la solución de ajuste de rendimiento y somos maravillosos! La vida parecía tan fácil cuando nos aventuramos por ese camino de baldosas amarillas. Pero en este camino, no hay cuervos asustados. Sin leones. Nada de hombres de hojalata. Ni siquiera algún lindo perrito llamado Toto. No... este camino... este camino Oracle Performance Tuning está lleno de cosas mucho más grandes. En este camino, encontramos utilidades y herramientas. Nos encontramos con Plan Explica. Nos encontramos con tkprof y SQLT. Encontramos vistas maravillosas como V$SGA_TARGET_ADVICE y V$SESSION_WAIT y su gemela V$SESSION_EVENT (no son gemelas idénticas, pero una mirada y sabes que están relacionadas).

Así que ahí estás. Su brillante título de DBA aún se encuentra debajo de su nombre en cada firma de correo electrónico que envía. Y ahora tienes todas estas maravillosas herramientas a tu disposición. Ha adquirido ASH y AWR porque, afortunadamente, su empresa le ha regalado el Paquete de diagnóstico. Su estantería está armada con grandes tomos como este. (Enchufe desvergonzado lo sé). Un gran tipo en los foros, como yo, te dio pistas sobre Lighty. Tienes toda una caja de herramientas a tu disposición. ¡No! No es una caja de herramientas... ¡un cofre de guerra! Pequeños países en otros lugares del mundo no tienen el arsenal que tú tienes a tu disposición. Por qué… Podría tocar ese botón supersecreto en SQL Tuning Advisor y arrasar con uno de esos países, *y* hacer que SQL ID 98byz76pkyql se ejecute más rápido mientras mi café aún tiene vapor... soy tan bueno.

¿Recuerdas ese día que recibiste tu primer número de rendimiento y tenías ese nudo en la garganta? Hay otro día como ese en su carrera de DBA. Es el día en que llegas al Laberinto de ajuste de rendimiento (cue el trueno y el relámpago). Pero esto no es ningún laberinto. Esto es diferente. La mayoría de los laberintos tienen una entrada y una salida, con muchos giros y decisiones en el camino. Este laberinto, bueno, este laberinto es obviamente diferente. Este laberinto tiene muchas, muchas entradas. Y este laberinto tiene muchas, muchas salidas. Cada entrada es una herramienta de ajuste de rendimiento diferente. Y cada salida es una solución , pero no todas las soluciones realmente resuelven el problema de rendimiento. Y este es el dilema al que se enfrentan los especialistas en ajuste del rendimiento de Oracle. Tengo un problema de rendimiento. Sé que al otro lado de este laberinto está mi solución. Pero, ¿qué entrada elijo? Una entrada tiene un plan de explicación escrito encima. Otra entrada tiene escrito V$DB_CACHE_ADVICE. Por qué hay todas estas entradas, una para cada herramienta a mi disposición. Esta es una historia de mi juventud y, con suerte, como Bilbo le escribió a Frodo, esta historia también puede ayudarte en tus aventuras.

Así que elijo una entrada.

Entro en el laberinto.

¿Hice una buena elección?

Bueno, veamos a dónde va esto. Más adelante, la carretera gira a la izquierda. Pero es mi única opción, así que voy con ella. A continuación, llego a una intersección. Puedo ir a la derecha o a la izquierda. Hago un giro a la derecha. Vaya... callejón sin salida. Así que retrocedo y tomo la izquierda en su lugar. Otro callejón sin salida. Dracos. Entré en el laberinto incorrectamente. A veces, las herramientas no te llevan a ninguna solución. Así que vuelvo a las entradas y hago otra elección, elijo una herramienta diferente.

Ahora he entrado en el laberinto por segunda vez. Pero las cosas se ven mucho mejor. Sigo adelante. Sólo unas cuantas vueltas más. Puedo ver la luz, así que sé que me estoy acercando al final. Sí… ahí está, la salida. Finalmente salgo del otro lado del laberinto. Tengo mi solución de ajuste de rendimiento a mano, pero después de implementarla, rápidamente me doy cuenta de que esto no resolvió mi problema de rendimiento en absoluto. A veces, las herramientas pueden llevarlo a soluciones que no tienen nada que ver con su problema específico. Así que es hora de mi tercera entrada al laberinto.

Ahora, siendo un astuto especialista en ajuste de rendimiento, me di cuenta de que todas las entradas que elegí hasta ahora están relacionadas con el rendimiento general de la base de datos, pero lo que realmente busco es el rendimiento relacionado con una instrucción SQL específica. Pero no sé qué declaración SQL necesita ajuste. ¿Cómo puedo saber cuál? Bueno, tres puertas más abajo hay una entrada al laberinto marcado como SQL Trace. Justo al lado hay una puerta marcada como EM Search Sessions. Lanzo una moneda y elijo SQL Trace. Poco después de entrar en el laberinto, llego a una intersección en T. Si voy a la izquierda, me lleva de regreso a la puerta de EM Search Sessions. Si voy a la derecha, es un tiro directo a la salida. Naturalmente voy a la derecha. Pero es en este momento que sé que a veces, dos herramientas diferentes te llevarán a la misma respuesta. Cuando salgo del laberinto, me dan un pase gratis a tkprof porque, después de todo, ¿no todos los caminos de SQL Trace conducen directamente a tkprof? Ahora tengo la instrucción SQL ofensiva. Pero mi problema aún no está resuelto. ¿Qué hacer?

Regreso a la entrada del laberinto. A veces, obtenemos una respuesta de nuestras herramientas de ajuste y tenemos que realizar otro recorrido por el laberinto para profundizar en la respuesta final. Esta vez, entro por la puerta del SQLT. Algunos giros y vueltas, pero este camino de laberinto es bastante fácil, o eso parece. Llego al final, y no solo tengo una respuesta, tengo muchas respuestas. ¡Oh… glorioso día! He encontrado a la madre de todas las herramientas.

Escuché a otros DBA hablar de estas herramientas milagrosas como SQLT y AWR Reports. Qué maravillosos son. Estas herramientas son tan buenas que algunos DBA solo ven las entradas de SQLT y AWR Report. Siempre pensé que esto era cosa de leyendas, pero aquí por fin, yo también encontré la única herramienta para gobernarlos a todos... bueno... uno para cada mano. Tengo todas estas respuestas a mi disposición. Ahora, qué respuesta está directamente relacionada con mi problema de rendimiento. Aquí tengo mi informe SQLT y tengo todas estas respuestas contenidas en él. Cual respuesta es la mia. ¿¡¿¡¿Cuál?!?!? A veces, las herramientas te darán demasiada información. Para mí, que soy nuevo en esto de ajustar el rendimiento, la salida de SQLT también podría estar escrita en Klingon. Pero por suerte, conozco a un colega DBA que se sienta a dos cubos de mí y habla klingon. Le entrego mi salida SQLT. Lo hojea y en 30 segundos, señala una pequeña sección del informe y dice esas palabras mágicas. "Ves... justo ahí... ese es tu problema". Con una mirada burlona en mi rostro, agita su mano sobre el informe y, como por arte de magia, Google Translate ha cambiado algunas palabras en la página y ahora puedo ver claramente que tengo una tabla con estadísticas muy malas. A veces, las herramientas con todas esas respuestas ahorran mucho tiempo a aquellos que saben cómo usarlas. Este DBA que habla klingon se levanta las gafas y revela otra sección del informe SQLT. "Mira aquí, dice... esas malas estadísticas están forzando un FTS" como si se supusiera que supiera qué es un FTS en este momento de mi carrera. Pero no quiero parecer un completo n00b, así que sonrío y asiento con la cabeza.

Ok... Me estoy acercando a resolver mi problema. Sé que tengo malas estadísticas. Regreso a mi escritorio ansioso por ponerme a trabajar para finalmente resolver mi problema. Mientras paso por el enfriador de agua y rodeo a la multitud siempre presente de mis compañeros de trabajo sin nada mejor que hacer en todo el día que conversar, el sol brilla en una puerta del laberinto y capta el rabillo del ojo... solo una puerta. Encima de esa puerta hay un letrero que dice DBA_TABLES. Bueno, como cualquier buen DBA, me digo a mí mismo que no es una mala idea verificar dos veces estas cosas. Comienzo atraído por él, entro por la puerta DBA_TABLES y estoy una vez más en el laberinto. Doy un giro rápido y algo salta hacia mí como para asustarme. Pero me estoy volviendo bueno en esto. No me importa que algún pequeño habitante del laberinto insista en decirme que esta tabla reside en USUARIOS del espacio de tabla. Rápidamente me doy cuenta de que esto no hace ninguna diferencia en mi problema en cuestión. Sigo adelante e ignoro a todos estos pequeños diablillos con su información falsa. Sigo adelante. Y ahí lo tengo... confirmación en la salida del laberinto de que no hay estadísticas en esta mesa. Aquí se aprendió una lección rápida:a veces, las herramientas le darán información que no es relevante para usted ese día .

Puede que sea nuevo en este juego de DBA, pero sé esto. Necesito ver cómo funcionan las cosas ahora, hacer un cambio y medir la mejora del rendimiento, si la hay. Así que me dirijo de nuevo al laberinto. Esta vez, entro por la puerta marcada como SQL Developer Autotrace y ejecuto la instrucción SQL infractora. No solo obtengo el tiempo de ejecución de la instrucción SQL, sino que también puedo ver la cantidad de lecturas y el plan de ejecución. Rápidamente actualizo las estadísticas en la tabla que mi amigo que habla klingon me señaló. (Aparte rápidamente... Solía ​​pensar que era un idiota, pero ahora no es tan malo. Puedo aprender de este tipo. Tal vez algún día yo también pueda hablar klingon). Luego entro de nuevo en la puerta SQL Developer Autotrace. No solo la ejecución de mi consulta pasó de 2 minutos de ejecución a 2 segundos, sino que las lecturas se redujeron significativamente y el plan de explicación mejoró. Ok, esa última parte es un poco exagerada. Todavía soy demasiado joven para saber que el Plan de explicación fue mejor, pero al mirar hacia atrás más adelante en mi carrera, sé que lo fue. Rápidamente aprendo que a veces, las herramientas de ajuste de rendimiento que tengo a mi disposición no solo están allí para ayudar a encontrar la causa raíz del problema, sino también para confirmar que la solución realmente solucionó el problema. Y a veces, las herramientas para confirmar los resultados no son las herramientas que usé para encontrar la causa raíz.

Informé rápidamente a mi usuario final que el problema se resolvió. El usuario se queja de algo que no pude entender y verifica si su vida es realmente mejor. Y ahí es cuando lo recibo. El mejor regalo que un DBA podría recibir. Así es... Recibí la adoración de los usuarios . Hoy, soy un hacedor de milagros o eso piensa el usuario. Mientras estoy parado en el cubículo de este usuario, él grita "ÉL LO ARREGLÓ" y, en el momento justo, la cabeza de todo el departamento aparece sobre las paredes del cubículo como ardillas fuera del suelo. ¡Hurra... ellos animan! Estoy amando la vida tomando el sol en el resplandor. ¿Por qué la jefa incluso se ofrece a llevarnos al pub después del trabajo? La primera ronda corre por cuenta de ella.

Camino de regreso a mi escritorio, ansioso por asumir el próximo desafío. Este trabajo no podría ser más dulce.

Recuerdo mis primeros encuentros con este Performance Tuning Maze como si fuera ayer. Cuando estábamos bromeando con pintas en el pub esa noche, no me atreví a hablar de algunas de las cosas que vi en ese laberinto. Mis compañeros de trabajo no lo entenderían de todos modos. Nunca le cuento a nadie mis peleas con los dragones de MOS. Me han quemado demasiadas veces. Nunca le digo a nadie lo aburrido que es ejecutar una consulta, esperar una hora para obtener un resultado, intentarlo de nuevo, esperar una hora, intentarlo de nuevo, esperar una hora... Ups... Me quedé dormido allí. Las pruebas y tribulaciones de mi juventud se guardan mejor para otro momento. Quizás escriba otro libro.

Pero aprendí mucho en esos días. Con el tiempo, fui mejorando y eligiendo la mejor entrada al laberinto para el problema en cuestión. Después de todo, solo con la experiencia se puede mejorar con estos mágicos elixires de ajuste de rendimiento. También aprendí que, a veces, una herramienta parece ser la correcta para el trabajo solo para descubrir, a mitad del esfuerzo de ajuste, que otra herramienta es más adecuada.

También aprendí que solo trabajando con las herramientas y aprendiendo en qué son buenas y, por el contrario, en qué no son buenas, puedo elegir mejor la herramienta adecuada para el trabajo. En el pasado, If a menudo se sentía como si estuviera tratando de golpear un tornillo con un martillo. Ahora veo un tornillo y sé que la mejor herramienta es un destornillador.

Con el tiempo, he aumentado el número de entradas a mi laberinto de ajuste de rendimiento. Todavía atravieso las puertas probadas y verdaderas como una con solo un número arriba, 10046. En el pasado, me hablaron de puertas mágicas que conducían a arcoíris y unicornios solo para descubrir otro troll viejo gruñón debajo de un puente. Al principio, era escéptico acerca de que Lighty fuera una herramienta tan mágica, pero me equivoqué al respecto.

Oh, las historias que podría contarles, pero esta historia es realmente sobre ese Performance Tuning Maze. Siempre se reduce a ese laberinto. Elige la mejor puerta posible, pero solo la experiencia puede decirte cuál es la mejor. Eso le permitirá llegar a su solución más rápido. Hacer un giro equivocado y empezar de nuevo. No tengas miedo de entrar en el laberinto varias veces. Cuando creas que tienes la solución, recorre el laberinto para verificar. Este laberinto mágico de ajuste de rendimiento con todas esas maravillosas utilidades y herramientas de ajuste de rendimiento de Oracle se ha convertido en uno de mis lugares favoritos para pasar el rato. Me gusta agregar más entradas todo el tiempo, con la esperanza de que cada nueva herramienta me lleve al final del laberinto mucho más rápido. A veces lo hacen y a veces no.

Todavía recuerdo los días en que solía pasar el rato en el viejo laberinto de "ajuste basado en proporciones", pero he pasado a pastos más verdes. Todavía me río cuando veo un nuevo DBA parado frente a ese viejo laberinto, cubierto de telarañas y simplemente no pueden entender la indirecta. Y luego me pongo de mal humor cuando les grito que se olviden de ese laberinto y vengan aquí donde todos los demás están pasando el rato, solo para ser rechazado por alguien que cree que sabe más. Bueno, si alguna vez los volvemos a ver, podemos decir "Te lo dije" y reírnos mucho.

A menudo trabajo con personas que me ven usando algunas de estas brillantes herramientas. Me ven entrar en el laberinto y salir por el otro lado con la respuesta. Entonces, su siguiente pregunta obvia es "¿puedo entrar por esa puerta también?" Me río. “Claro… adelante”, les digo. Armados con esta genial herramienta de ajuste, pero sin conocimientos sobre cómo ajustar Oracle, hacen un intento bastante bueno, pero débil. Me llaman al laberinto y me piden que les ayude a resolver el problema. Así que encendemos la herramienta y la miramos. Reconozco instantáneamente la causa raíz del problema, pero las brillantes campanas y silbatos de la herramienta confunden al neófito. En este punto, ahora estoy hablando klingon. En cuestión de segundos digo "Mira... justo ahí... ese es tu problema". y vuelvo a tener la misma mirada burlona que le di a mi mentor DBA hace tantos años. Estos novatos siempre quieren acceder a las herramientas y creen que pueden manejarlas como un maestro. No tienen idea de lo que hay en el laberinto ni idea de cómo navegar por él. Demasiadas personas piensan que las herramientas son la salsa secreta cuando en realidad es la persona que maneja la herramienta. Lamentablemente, algunas personas con acceso a las herramientas solo quieren una respuesta rápida y sencilla. No quieren dedicar tiempo como muchos de nosotros.

Hora, hora de seguir a los maestros. Todos tenemos nuestra versión del Monte Rushmore. Tallado en piedra. Gente como Millsap, Lewis y Shallahammer, por nombrar algunos. Su Mt Rushmore puede tener otros nombres o incluso similares. Otros que ven nuestro Mt Rushmore, todo grabado en piedra, no se dan cuenta de que estas excelentes personas fueron nuestros guías en el laberinto. Nos mostraron cómo navegar por el laberinto. Nos mostraron cómo usar las herramientas y qué herramientas usar y cuándo. Aquellos de nosotros que aprendimos de los maestros hacemos nuestro mejor esfuerzo para pagar y enseñar a otros, aunque es posible que nunca alcancemos alturas tan elevadas, y eso está bien.

La moraleja de la historia es aprender estas herramientas, aprender lo que hacen y lo que no hacen. Conozca qué problemas ayudan a abordar. Aproveche las herramientas, pero tenga en cuenta que necesita aprender todo lo que pueda para poder recorrer el laberinto con confianza. Lamentablemente, tengo que terminar mi historia aquí. Alguien acaba de llegar a mi oficina con otro problema de ajuste de rendimiento. Es hora de volver a entrar en el laberinto. ¿Ahora qué puerta tomo?


No