Angel Rene Espinoza Quezada 5190-19-9245 Base de datos II Introducción: La presente investigación abarcará los temas de solución a los problemas de concurrencia utilizando bloqueo y Optimización de consultas SQL, partiendo desde que los tres problemas más comunes son: El problema de la Actualización Perdida. El problema de la Dependencia No Confirmada. El problema del Análisis Inconsistente. En ciencias de la computación, concurrencia se refiere a la habilidad de distintas partes de un programa, algoritmo, o problema de ser ejecutado en desorden o en orden parcial, sin afectar el resultado final. Y la optimización de búsquedas SQL cuando realizamos trabajos sobre optimización de un entorno de base de datos en general, se suele revisar los parámetros de la base de datos, las esperas, índices, etc. Este tipo de cuestiones es importante, pero cobra más importancia en algunos casos, la revisión de las consultas. Angel Rene Espinoza Quezada 5190-19-9245 Base de datos II Solución al problema de concurrencia utilizando bloqueo Ocurre que cuando dos o mas procesos colapsan, se le considera a la Base de Datos como inconsistente. El control de concurrencia es el proceso por medio del cual le damos un estado de consistencia a cualquier Base de Datos [Mhatre, 2014]. Qasim et al, definen una transacción en un SGBD como una secuencia de operaciones de escritura y lectura. Existen cuatro propiedades para las transacciones y se definen como ACID, por sus siglas en inglés, (Atomicity, Consistency, Isolation and Durability), atomicidad, consistencia, aislamiento y durabilidad [Qasim, 2016]. Existen distintos tipos de bloqueos: Readlock: La transacción bloquea la entidad en modo colaborativo o compartido. Cualquier otra transacción en espera de leer la misma entidad también obtiene un bloqueo de lectura [Mandeep, 2013]. • Writelock: El bloqueo de una entidad se hace en modo exclusivo. Si alguna transacción desea escribir en una entidad, ninguna otra puede obtener un bloqueo de lectura o escritura [Mandeep, 2013]. Existen distintas maneras de poder abordar el tema de Control de Concurrencia en las Bases de Datos, quizá la mas usada de estas es es el uso de multi-versiones de la BD, combinado con estampas de tiempo; sin embargo, dependerá de las necesidades y recursos del administrador de la BD, el enfoque que empleará para darle solución al problema. Optimización de consultas SQL Existen distintas cuestiones que pueden hacer variar una consulta SQL 1) Las consultas SQL se vuelven más rápidas si usa nombres de columnas reales en lugar de "*" en la declaración SELECT. Angel Rene Espinoza Quezada 5190-19-9245 Base de datos II 2) La cláusula HAVING se usa para filtrar filas después de seleccionar todas las filas. Es como un filtro. No utilice los términos HAVING para ningún otro propósito. 3) A veces puede haber varias subconsultas en la consulta principal. Minimice el número de bloques de subconsulta en la consulta. 4) Use EXISTS, IN y combinaciones de tablas en sus consultas según corresponda. a) IN suele tener el rendimiento más lento. b) IN verdadero cuando la mayoría de las condiciones de filtro están en la subconsulta. c) EXISTS es importante cuando la mayoría de las condiciones de filtro están en la consulta principal. 5) Cuando use uniones, use EXISTS en lugar de DISTINCT, lo que significa que las tablas tienen una relación de uno a muchos. 6) Pruebe UNION ALL en lugar de UNION. 7) Tenga cuidado al usar condiciones en la cláusula WHERE. 8) Utilice la opción DECODE para evitar escanear las mismas filas varias veces o vincular a la misma tabla. DECODE también se puede utilizar en lugar de una cláusula GROUP BY u ORDER BY. Angel Rene Espinoza Quezada 5190-19-9245 Base de datos II Conclusión Tenemos al alcance muchos tips que podemos seguir para optimizar consultas en SQL, y todo tiene que ver con la variedad de escenarios distintos que podemos tener, Pero dentro de cada caso lo mejor que podemos hacer es seguir pasos muy concretos que son; medir y conocer las formas alternas que tenemos para llegar a un resultado, Es importante siempre invertir el mayor tiempo en optimización , se debe concentrar en los problemas cuya solución traiga el mayor impacto y los mejores resultados. Referencias bibliográficas Mhatre A, Shedge R. (2014). Comparative Study of Concurrency Control Techniques in Distributed Databases. Fourth Int Conf Commun Syst Netw Technol. 2014:378-382. doi:10.1109/CSNT.2014.81. Qasim, A., Hammand S., Imran A., Sridevi T. (2016). Concurrency Control in Distributed Database System. Int Conf Comp Commun Infor (ICCCI - 2016), Jan. 07/09. Mandeep Kaur and Kaur, H. (2013). “Concurrency Control in Distributed Database System”. International Journal of Advanced Researchin Computer Science and Software Engineering, 3(7), 1443-1447.