14 Dic

Monitorización y Rendimiento en Bases de Datos

Monitorización

¿Hay algún fichero de configuración que podamos modificar para monitorizar? El fichero my.cnf permite activar el log «slow query» para monitorizar consultas lentas.

¿Puedes dar algún ejemplo de parámetros y aspectos que se deben monitorizar y controlar?

  • Las conexiones a la base de datos deben ser lo más cortas posible.
  • Se debe controlar que cada conexión es cerrada correctamente, evitando conexiones abiertas sin uso.
  • Se deben evitar las llamadas a otras funciones que tengan accesos a la base de datos durante la propia conexión.
  • En caso de que se necesiten datos de un registro o varios registros de la base de datos en diferentes partes de la aplicación, se pueden obtener los datos desde el inicio.
  • Se debe revisar continuamente los recursos que se usan en las funciones.
  • Hacer pruebas de carga.
  • Analizar con un monitor el rendimiento de la base de datos.

¿Puedes dar el nombre de alguna herramienta de monitorización?

  • MySQL Monitor: herramienta original de MySQL.
  • AjaxMyTop: monitor de MySQL en Ajax que muestra periódicamente el estado actual de todas las conexiones a una base de datos.
  • MySQL Query Proxy: utiliza un proxy entre cliente y servidor para monitorizar.

Rendimiento

¿Sabes definir rendimiento? El rendimiento hace referencia al resultado deseado efectivamente obtenido por cada unidad que realiza la actividad. Con el rendimiento se busca conseguir:

  • Rentabilidad
  • Eficiencia
  • Eficacia

¿Sabes qué es la monitorización? (Definición, tipos y clasificación de sistemas) La monitorización consiste en la vigilancia de todos los servicios activos de una aplicación. Es el proceso por medio del cual, nos aseguramos de que el proceder de la aplicación está encaminado adecuada y eficazmente hacia un resultado final, evitando posibles errores.

La monitorización puede ser tanto interna como externa:

  • Interna: la vigilancia se realiza desde la misma red donde está instalado el servidor.
  • Externa: se utiliza una plataforma de un proveedor de servicios que se encuentra fuera de nuestra red. Es mucho más fiable, puesto que es independiente de los problemas que puede haber dentro de la red donde se encuentra el equipo a vigilar.

Los sistemas de monitorización permiten hacer un seguimiento de los valores recopilados por todos los sensores que forman la red, con un interfaz para visualizar los datos capturados. Los sistemas de control permiten, una vez recopilada y analizada la información del entorno, la puesta en funcionamiento de las acciones más adecuadas.

¿Sabes qué se busca con el rendimiento? (rentabilidad, eficiencia y eficacia)

  • Rentabilidad: referida por lo general a obtener más ganancias que pérdidas, ya sea de manera económica (beneficio) o de manera social (utilidad).
  • Eficiencia: capacidad de disponer de alguien o de algo para conseguir un efecto determinado, es decir, hacer las cosas bien, con los mejores y menores métodos posibles para lograr el objetivo.
  • Eficacia: capacidad de lograr el efecto que se desea o se espera.

¿Sabes sobre qué posibles campos dan recomendaciones los scripts de monitorización?

  • Slow Query Log
  • Max Connections
  • Worker Threads
  • Key Buffer
  • Query Cache
  • Sort Buffer
  • Joins
  • Temp Tables
  • Table (Open & Definition) Cache
  • Table Locking
  • Table Scans (read_buffer)
  • Innodb Status

¿Se debe mantener un seguimiento y comprobar la mejora del rendimiento tras una actuación? Lo más importante es mantener un seguimiento del gestor y comprobar si se mejora el rendimiento al cambiar estos valores. Lo mejor es ir subiendo poco a poco e ir validando si obtenemos mejoras de rendimiento.

Optimización de Consultas y Bases de Datos

Optimización de Consultas

¿En MySQL es posible comprobar el tiempo gastado de una sentencia y obtener una explicación de su ejecución? Con la función BENCHMARK() (número_iteraciones, expresión_a_evaluar), el valor devuelto siempre es cero, pero MySQL muestra cuánto tardó en ejecutarse la sentencia.

¿Las longitudes fijas de columna mejoran el rendimiento? El rendimiento mejora si los registros de la tabla tienen longitud fija.

¿Los índices mejoran la velocidad y funcionan como en un libro? El índice de una base de datos es una estructura de datos que mejora la velocidad de las operaciones, permitiendo un rápido acceso a los registros de una tabla. Se suelen usar sobre aquellos campos sobre los cuales se hacen frecuentes búsquedas. El índice tiene un funcionamiento similar al índice de un libro.

¿Para eliminar un índice se puede hacer directamente y modificando la tabla? Para borrar un índice en una tabla ya existente (dos maneras):

DROP INDEX indice ON tabla; 
ALTER TABLE tabla DROP INDEX indice;

¿Pocos índices pero bien construidos y datos pequeños mejoran el rendimiento? Disminuye el consumo de memoria: el índice es más pequeño.

Optimización de Bases de Datos

¿Sabes los diferentes métodos de optimización en BD? En cuanto a lo referente a la base de datos, podemos encontrar tres métodos para optimizar el rendimiento del sistema:

  • Mejorar la estructura de las tablas.
  • Mejorar las consultas (pero depende de cada aplicación).
  • Mejorar la configuración del servidor MySQL.

Las consultas por columnas que pueden contener valores NULL son más lentas. También se puede desfragmentar tablas para ganar espacio y velocidad:

OPTIMIZE TABLE tabla;

¿Sabes qué es la optimización? La optimización es una tarea compleja, porque requiere un conocimiento de todo el sistema a optimizar. Se podría optimizar solo algunos aspectos teniendo poco conocimiento del sistema o aplicación, pero cuanto más óptimo se quiera el sistema, más se tiene que conocer acerca del mismo. Siempre existen vías de hacer más rápido el sistema, aunque pudieran requerir un incremento de esfuerzos o medios.

¿Sabes qué posibles cuellos de botella hay? En la mayoría de casos los cuellos de botella nacen de los siguientes factores:

  • Búsqueda en disco: La manera de optimizar el tiempo de búsqueda es distribuir los datos dentro de más de un disco.
  • Lectura y escritura en disco: La velocidad de transferencia aumenta con la evolución de los discos, pero siempre podemos leer en paralelo desde múltiples discos.
  • Ciclos de CPU: Se gasta tiempo de proceso en la lectura de las tablas, por lo que cuando son pequeñas son más rápidas de acceder.
  • Ancho de banda de memoria: Se puede convertir en un cuello de botella si se necesitan más datos de los que se pueden almacenar en la caché.

¿Se puede crear un índice tanto directamente como al crear la tabla y modificándola? Para crear un índice en una tabla ya existente existen dos maneras:

CREATE [UNIQUE] INDEX indice ON tabla (columna(longitud),...);
ALTER TABLE tabla ADD INDEX indice (columna(longitud),...);

¿Tener las tablas ordenadas tiene coste añadido? Es menos costoso insertar, modificar y eliminar en un índice que hacerlo en toda una tabla ordenada.

Bloque 4: Bases de Datos Distribuidas y Replicadas

Bases de Datos Replicadas

¿Conoces el esquema en que se basan las bases replicadas?

  • Incremental: la información que se envía desde la copia principal a las secundarias son las variaciones en los datos.
  • Total: se envía toda la copia principal completa.

Transacciones

¿Conoces las reglas ACID?

  • Atomicidad: todas las operaciones de la transacción se realizan o ninguna de ellas se lleva a cabo. Si una transacción se interrumpe sus resultados parciales deben ser desechados.
  • Consistencia: la transacción lleva al sistema desde un estado correcto a otro sin violar las restricciones de integridad existentes.
  • Aislamiento: una transacción en ejecución no revela los resultados obtenidos hasta que se completa la transacción con éxito.
  • Durabilidad: los resultados de una transacción son permanentes una vez ha terminado con éxito.

Bases de Datos Distribuidas

¿Conoces los factores que definen la arquitectura de un sistema distribuido?

  • Hay múltiples computadores, donde se ubican los datos. Se les llama sitios o nodos.
  • Estos sitios deben de estar comunicados por medio de algún tipo de red de comunicaciones, normalmente de alta velocidad, para transmitir datos y órdenes entre los sitios.
  • Los datos son compartidos por usuarios y múltiples máquinas.

¿Diferencias entre BD distribuidas, paralelas, replicadas, etc.?

  • BD Distribuida: varios servidores de BD usados por la misma aplicación. En una transacción están involucrados más servidores.
  • BD Paralelas: varias unidades de almacenamiento de datos y procesadores operan en paralelo para incrementar el rendimiento.
  • BD Replicadas: datos lógicamente representando la misma información están almacenados físicamente en diferentes servidores.
  • BD para la Web: son variantes del paradigma general cliente-servidor.
  • Cliente-servidor: Separación del servidor de BD del cliente.

¿Diferencias entre serializar y calendarizar?

  • Serializadas: Permite el procesamiento de transacciones en forma secuencial o serializado y consiste en asignarle una secuencia a cada transacción, este proceso reduce el rendimiento del sistema.
  • Calendarizadas: Permite el proceso de transacciones asignándole tiempos de procesamiento el cual permite incrementar el rendimiento del sistema ya que se ejecuta un máximo de procesos en forma concurrente y no a través de una serie.

¿La fragmentación debe completa y restaurable? La fragmentación es correcta si es:

  • Completa: cada elemento de datos original está presente en uno de sus fragmentos.
  • Restaurable: el contenido del original puede ser regenerado a partir de sus fragmentos.

¿La fragmentación puede ser horizontal, vertical y mixta? La fragmentación puede ser horizontal (filas con trozos en distintos nodos), vertical (columnas completas en distintos nodos) y mixta.

¿Las características de las BDD se refieren a nodos, comunicaciones y datos? Sí, (donde se ubican los datos que se denominan nodos, medio de red que los comunica y los datos son compartidos por usuarios y máquinas).

¿Puedes dar alguna de las reglas DATE?

  1. Autonomía local
  2. No es necesario la existencia de un nodo central. Todos los sitios deben ser tratados como iguales.
  3. Operación continua
  4. Independencia de localización
  5. Independencia de fragmentación
  6. Independencia de replicación
  7. Procesamiento de consultas distribuidas
  8. Procesamiento de transacciones distribuidas
  9. Independencia del hardware
  10. Independencia del SO
  11. Independencia de la red
  12. Independencia de la BD

¿Sabes dar alguna ventaja y desventaja de las BDD?

Ventajas de BDD:

  • Es posible compartir datos al poder acceder a los datos de cualquier nodo.
  • Responde mejor a las necesidades de las aplicaciones. Muchas empresas son estructuralmente distribuidas y la gestión y control de sus datos también.
  • Mayor flexibilidad y modularidad. Los sistemas distribuidos pueden ser configurados para la adición progresiva y modificación de componentes.
  • Autonomía: cada sitio tiene el control de su información.
  • Mayor resistencia a fallos. Aunque son más vulnerables a los fallos debido a su mayor complejidad estructural, soportan la degradación suave, es decir, responden a los fallos con una reducción del rendimiento pero no con un fallo total al estar los datos replicados en varios lugares.

Desventajas de BDD:

  • Mayor coste de desarrollo del software (complejidad inherente a garantizar la coordinación entre nodos).
  • Mayor posibilidad de errores al ser más complejo.
  • Mayor sobrecarga de procesamiento.
  • Más vulnerable como ya se ha indicado.

¿Sabes la diferencia entre BD Federadas y Multibase?

  • Base de datos Federada: cuando una base de datos distribuida tiene mucha autonomía local se dice que es federada.
  • Multibase de datos distribuida: cuando una base de datos distribuida es muy homogénea se dice que es multibase de datos distribuida. Además, en este caso, cada nodo tiene una autonomía casi plena.

¿Sabes la diferencia entre consultas en sistemas centralizados y distribuidos? En que en los sistemas de datos distribuidos se realiza una reformulación interna.

¿Sabes la diferencia entre sistemas homogéneos y heterogéneos?

  • Homogéneos: si todos los servidores utilizan el mismo SGBD.
  • Heterogéneos: si los servidores no utilizan el mismo SGBD.

¿Sabes qué es la colocación de datos y de qué depende?

  • Colocación centralizada de los datos: toda la base de datos se guarda en un sitio.
  • Colocación particionada de los datos: la base de datos se divide en varias partes desarticuladas (fragmentos) y se guardan en varios sitios.
  • Colocación replicada de los datos: se guardan copias de uno o más fragmentos de la base de datos en varios sitios.

¿Sabes qué son el gestor de transacciones, el coordinador y por qué es importante el asignador de nombres?

Gestor de transacciones: encargado local de la transacción. El gestor de transacciones preserva la autonomía de cada localidad (una transacción es gestionada en cada localidad por el gestor de la misma).

Coordinador de transacciones: coordina la ejecución de la transacción localmente. Actúa como centro durante la vida de la transacción. Divide la transacción en subtransacciones para su ejecución y coordina la terminación de la transacción entre todas las localizaciones participantes.

¿Sabes qué son las bases de datos replicadas y las formas de propagación de cambios? En bases de datos replicadas. En general, existe una copia principal y varias copias secundarias, a las cuales se propagan las modificaciones de forma asíncrona. Existen dos tipos de propagación de modificaciones:

  • Incremental: la información que se envía desde la copia principal a las secundarias son las variaciones en los datos.
  • Total: se envía toda la copia principal completa.

Deja un comentario