Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tema: Rendimiento
Gestor: PostgreSQL
Integrantes:
Paredes Flores Luis Adolfo
Mori Vilcachagua Jeorge Michael
Ruby Carrasco Lopez
ÍNDICE
RENDIMIENTO
7.1.-Control de concurrencia. ....................................................................................................... 3
7.2.- Optimización de consultas, Heurística, Creación de índices, Plan de
Ejecución de Consultas ................................................................................................................ 5
7.3.- Estimación de costos de Procesamiento de consultas. ......................................................... 7
7.4.- Balanceo de Carga................................................................................................................ 7
7.5.- Demostración de rendimiento en el gestor. .......................................................................... 8
Bibliografía ................................................................................................................................. 11
2
7.1.-Control de concurrencia.
Según Guerrero (2019), el término concurrencia se refiere al hecho de que los DBMS
(Sistemas de Administración de Bases de Datos) permiten que muchas transacciones
accedan a una misma base de datos a la vez. Como bien es sabido, en un sistema de
éstos se necesita algún tipo de mecanismo de control de concurrencia para asegurar
que las transacciones concurrentes no interfieran entre sí El control de accesos
concurrentes y específicamente de transacciones concurrentes es manejado por un
módulo del DBMS llamado "Schedule". Es importante recordar que muchos de los datos
de la base no se encuentran nada más en disco, sino también en los buffers de memoria,
de ahí que el Schedule interactúa con ellos y en su defecto solicita la lectura de los datos
del disco.
3
Marcas de Tiempo Una marca de tiempo es un identificador único que el SGBD crea
identifica una transacción por lo regular los valores de marca de tiempo se asigna en el
orden en que las transacciones se introducen en el sistema porque lo una marca de
tiempo puede considerarse como el tiempo de inicio de una transacción nos referimos
a la marce de tiempo de una transacción T como MT (T) las técnicas para el control de
concurrencia basadas en marcas de tiempo no usan bloqueos, por tanto no puede haber
bloqueos mortales. Las marcas de tiempo se pueden generar de diversas maneras una
posibilidad consiste en usar un cantador que se incremente cada vez que su valor se
asigna a una transacción las marcas de tiempo de las transacciones están numeradas
1,2,3…. Un cantador de computador tiene un valor máximo finito por lo que el sistema
deberá restablecer periódicamente a cero el contador cuando haya un lapso corto en el
que ninguna transacción se esté ejecutando otra forma de implementar las marcas de
tiempo consiste en emplear el valor actual.
del reloj del sistema y asegurar que no se generen dos valores de marca de tiempo
antes de que el reloj cambie En lugar de determinar el orden entre las transacciones en
conflicto en función del momento del acceso a los elementos, determinan por adelantado
una ordenación de las transacciones. El interbloqueo es imposible. Una marca de tiempo
es un identificador único asociado a cada transacción. Las actualizaciones físicas se
retrasan hasta la confirmación de las transacciones. No se puede actualizar ningún
elemento actualizado por otra transacción más reciente
4
en una transacción no se aplican directamente a los elementos de la base datos sino
hasta que la transacción llega a su fin mientras se ejecuta la transacción todas las
actualizaciones se aplican a copias locales de los elementos que se mantienen para la
transacción al final de la ejecución una fase de validación comprueba si cualquiera de
las actualizaciones viola la serialidad el sistema debe mantener cierta información que
necesita para la fase de validación sin o se viola la serialidad la transacción se confirma
y la base de datos se actualiza a partir de la copias locales en caso contrario la
transacción aborta y se reinicia posteriormente. El protocolo de control de concurrencia
comprende tres fases:
Optimización de consultas
Es el proceso de selección del plan de evaluación de las consultas más eficiente entre
las estrategias disponibles para el procesamiento de una consulta dada. A través del
álgebra relacional intenta hallar una expresión equivalente a la expresión dada Elección
de una estrategia detallada para el procesamiento de la consulta.
Selección del algoritmo que se usará para ejecutar una operación.
Selección de los índices concretos que se van a emplear.
5
Optimización Heurística
Aplicación de reglas de transformación y heurísticas para modificar la representación
interna de una consulta (Algebra Relacional o Árbol de consulta) a fin de mejorar su
rendimiento. • Varias expresiones del Álgebra Relacional pueden corresponder a la
misma consulta. • Lenguajes de consulta, como SQL permiten expresar una misma
consulta de muchas formas diferentes, pero el rendimiento no debe depender de cómo
sea expresada la consulta.
Creación de índices.
Un índice de la base de datos es una estructura de datos que mejora la velocidad de las
operaciones en una tabla.
Cada vez que la aplicación ejecute una consulta de base de datos, la base de datos
buscará todas las filas de su tabla para encontrar las que coincidan con la solicitud. A
medida que crecen las tablas de la base de datos, es necesario inspeccionar cada vez
un número mayor de filas que a la vez, disminuye el rendimiento general de la base de
datos y, respectivamente, la aplicación.
Los índices resuelven este problema tomando datos de una columna en su tabla y
almacenándolos alfabéticamente en una ubicación separada llamada índice.
Plan de Ejecución de Consultas.
Según SqlShack (2015), en Planes de ejecución de consultas SQL, describimos los
planes de ejecución de consultas en SQL Server y por qué son importantes para el
análisis de desempeño
Un plan de ejecución real es el plan de consultas SQL que es generado después de que
una consulta fuera ejecutada. Es más confiable, y está basado en la ejecución real, no
estimados. También provee más información y estadísticas, por lo que es mucho más
útil al resolver problemas.
6
7.3.- Estimación de costos de Procesamiento de consultas.
Según va de bits (2018), los tipos de balanceo para operaciones de consultas son:
Solo Lectura: este es el balanceo más sencillo dado que podemos disponer de
múltiples bases de datos de lectura de una manera sencilla y balancear nuestras
consultas sin demasiada dificultad, incluso si necesitamos hacerlo en diversas
localizaciones geográficas.
Escritura / Lectura: implica diferenciar entre consultas de escritura y de lectura,
enviando dichas consultas al servidor apropiado (master o slave respectivamente). Si
no necesitamos disponer de varios servidores master, este balanceo no resulta
demasiado complicado, ahora bien, si necesitamos realizar esto en diversas
localizaciones geográficas o con varios servidores master la cosa se complica.
Solo Escritura: este balanceo es más difícil de conseguir y su implementación puede
resultar compleja puesto que implica múltiples servidores maestros, y muy cara si
utilizamos soluciones comerciales (aunque obtendríamos funcionalidad adicional que
conviene tener en cuenta). En realidad, no tendría mucho sentido balancear solo las
operaciones de escritura (aunque imagino que habrá casos en los que una parte de una
aplicación o micro servicio solo escriba datos) y dado que nos vamos a complicar la vida
mejor hacerlo para lectura y escritura.
Las diversas soluciones de las que disponemos se pueden aplicar a todos los casos
mencionados, aunque hay que tener en cuenta que cada una de ellas tiene sus propios
beneficios y limitaciones. Como ya he dicho, todo depende de lo que tu aplicación
necesite y, como no, del dinero que tu o tu empresa esté dispuesta a gastarse puesto
7
que tenemos desde soluciones gratuitas, a soluciones empresariales que nos ofrecen
SLAs (Service Level Agreements) para solucionar nuestros problemas en tiempo récord.
8
Información básica del equipo:
Consulta a ejecutar:
SELECT V.CodEmpleado,E.Descripcion AS Empleado, P.Descripcion AS
Producto,
DV.Cantidad, DV.Precio, DV.SubTotal
FROM Ventas V, Empleado E, DetalleVentas DV, Producto P
WHERE (V.TransVenta = DV.TransVenta) AND
(DV.CodProducto = P.CodProducto) AND
(V.CodEmpleado = E.CodEmpleado) AND
(V.FechaVenta>'01/01/2014') AND
(V.CodAlmacen IN ('001','002'))
Al ejecutar la consulta sin ningún tipo de índice podemos observar que el
tiempo de procesamiento fue de 39 segundos.
9
create index idx_detalleventas_cantidadpreciosubtotal on
detalleventas(cantidad, precio, subtotal);
create index idx_producto_descripcion on producto(descripcion);
Volvemos a ejecutar la respectiva consulta con los índices ya creados y
observamos que el tiempo de procesamiento mejoró a 16 segundos:
10
Bibliografía
Control de concurrencia (2019) Obtenido de blogspot Guerrero.
http://guerrero-guerreros.blogspot.com/
http://chavez-atienzo-2013.blogspot.com/2013/04/rendimiento-de-una-base-de-
datos.html
https://es.wikipedia.org/wiki/Optimizaci%C3%B3n_de_consultas
https://www.siteground.es/kb/optimizacion-mysql-usando-indexes/
https://www.sqlshack.com/es/planes-de-ejecucion-de-consultas-sql-server-viendo-los-
planes/
https://www.vadebits.com/mysql-balanceo-de-bases-de-datos/
11