Download Laminas_PostgreSQL_DEF - ABD-UCV

Document related concepts

PostgreSQL wikipedia , lookup

Multiversion concurrency control wikipedia , lookup

GiST wikipedia , lookup

Mecanismos de almacenamiento (MySQL) wikipedia , lookup

Zope Object Database wikipedia , lookup

Transcript
PostgreSQL: Parte 1
Integrantes:
Álvaro Marciales
Claudio Torrez
1
Puntos a Tratar
• Introducción a PostgreSQL
• Arquitectura del SMBD
• Arquitectura Básica
• Arquitectura Avanzada
• Manejo de memoria
• Storage Manager
• Operación Vacuum
• Como configurar el uso de la memoria
• Índices
• Tipos de índices.
• Creación de índices en PostgreSQL.
• Concurrencia
• MVCC: Multiversion Concurrency Control
• Recuperación
• Backups de Bases de datos y de logs
2
3
4
Arquitectura Básica del SMBD
• PostgreSQL está basado en una arquitectura cliente-servidor.
• El programa servidor: postgres. Clientes: pgaccess y psql.
• Storage
Manager:
gestiona
transacciones,
memoria,
concurrencia, es el responsable de la administración general
de almacenamiento de datos y controla la consistencia de la
información.
5
Almacenamiento y organización de
datos
• Almacena los datos en bloques del disco llamados "páginas"
• Mínimo 8 KB
Páginas
• Máximo 32 KB
6
Almacenamiento en PostgreSQL
7
Estructura de una página
• PostgreSQL: Para las operaciones de L/E primero se
consulta al Buffer Manager (memoria RAM) si contiene la
página, sino se hace la búsqueda en memoria secundaria.
8
TIPO DE ORGANIZACIÓN DE ARCHIVOS EN
POSTGRESQL

Utiliza los índices para reducir los tiempos de
ejecución de las consultas que recibe, pero
internamente implementa distintos métodos, en
caso de que no exista un índice, utilizará una
búsqueda secuencial en las tuplas que cumplen
con la condición y si existe el sistema lo utiliza.

En conclusión se puede decir que el SMBD utiliza
ambos tipos de acceso, tanto indexado secuencial
como aleatorio.
9
Índices
• Los índices se utilizan, principalmente, para mejorar
el perfomance de una base de datos.
• Se definen sobre las columnas de la tabla que se
utilicen en consultas repetidamente.
• Su uso inapropiado resultará en un funcionamiento
más lento, ya que los tiempos de actualización e
inserción incrementaran razonablemente.
10
Índices en PostgreSQL
• Postgres provee accesos de tipo btree (árbol-b), rtree (árbol-
r) y hash para índices secundarios.
• Btree: el atributo indexado esta vinculado con uno de los
siguientes operadores: <, <=, =, >=, >.
• Rtree :el atributo indexado esta vinculado con uno de los
siguientes operadores: <<, &<, &>, >>, @, ~=, &&.
• Hash: el atributo indexado esta vinculado con el
operador =.
11
Índices: B-tree
B-tree
12
Índices: Hash
13
ÍNDICES: R-TREE
15
Índices: Creación
• En postgres podemos crear manualmente un índice haciendo
uso de la sentencia:
• También se declaran índices automáticamente al crear claves
sobre tablas.
14
Manejo de memoria
Correspondiente con el manejo de memoria se
encuentra el Storage Manager (Manejador de
almacenamiento) que contiene cinco módulos los cuales
proveen la administración de transacciones y el acceso
a la BD.
Los módulos que componen el Storage Manager son:
-Sistema de transacciones
-Almacenamiento Relacional
-Gestión del Tiempo
-Control de concurrencia y gestión de fecha
y hora
16
Memoria: Operación Vacuum
• Necesaria ejecutarla periódicamente
17
Memoria: Configuración
• La configuración PostgreSQL puede ser manipulada
fácilmente a través del archivo de configuración
postgresql.conf
• Algunos parámetros de manejo de memoria son:
• Shared_Buffers:
• Maintenance_work_mem:
• Effective_cache_size:
18
Concurrencia
A diferencia de la mayoría de otros
sistemas de bases de datos que usan
bloqueos para el control de concurrencia,
PostgreSQL mantiene la consistencia de los
datos con un modelo multiversión llamado:

MVCC (Multi-Version Concurrency Control).
19
Concurrencia: MVCC

Que es MVCC?

Como funciona?

Ejemplos.

Casos Conflictivos.
20
MVCC





Es una técnica de concurrencia optimista en donde ninguna
tarea o hilo es bloqueado mientras se realiza una operación en la
tabla.
Las transacciones ven una imagen de la data, correspondiente
al ultimo commit recibido, al momento de iniciarla.
MVCC nunca modifica ó elimina los datos, en su lugar nuevas
filas de información se van añadiendo conforme se crea o
actualiza la data y se marcan los datos anteriores como “no
visible”.
La data nunca es “visible” por otras transacciones hasta que no
haya hecho “commit”.
Las operaciones de lectura nunca bloquean a las de escritura y
viceversa.
21
MVCC: casos conflictivos
• En el caso en el que se realicen 2 updates concurrentemente,
es posible asignar el nivel de aislamiento (isolation) de las
transacciones por medio de la instrucción:
• READ COMMITTED: lee el registro luego que la primera
transacción haya terminado y luego completa su operación.
• SERIALIZABLE: recomienza la transacción que encuentra un
conflicto de este estilo.
22
MVCC: Ejemplo
23
Recuperación
• Enfoques fundamentales para la copia de seguridad de datos
en PostgreSQL:
• SQL dump
• Backup completo
• Backup a nivel de Ficheros
24
Recuperación: Sql Dump
La forma más sencilla de hacer un backup de una
base de datos completa es la siguiente:
•
pg_dump basededatos > fichero.sql
Y puede ser restaurada usando:
• psql basededatos < fichero.sql
25
Recuperación: Sql Dump
Otras técnicas para el manejo de bases de datos más grandes:
Dumps comprimidos:
Backup con:
• pg_dump nombrebd | gzip > nombreArchComprimido.gz
Restauración con:
> gunzip -c nombreArchComprimido.gz | psql nombrebd
26
Recuperación: Backup Completo
• También existe un comando para guardar todas las
bases de datos del sistema y las variables globales
también:
pg_dumpall > ArchivoSalida
Ejemplo:
Backup con:
• pg_dumpall > data.dump
Recuperación con:
• psql -f data.dump template1
27
Recuperación: Backup a Nivel de
Ficheros
• Este método implica copiar directamente los ficheros de la
base de datos
Ejemplo:
Suponiendo que se encuentra en /var/pgsql/data sería así:
tar -czvf backup.tar.gz /var/pgsql/data
Restauración:
Mover los ficheros a su ruta y levantarlo de nuevo
28
Archivado Continuo y Logfiles
• En la documentación de PostgreSQL recomiendan combinar
estos sistema con el de copiado a nivel físico para una
estrategia compleja de Copias de Seguridad.
• Los archivos de log o log files de Postgres se almacenan
automáticamente y por defecto en la carpeta de postgres
• Es necesario guardar los logfiles generados en otro lugar
además del default
• Los logfiles al almacenar indefinidamente el estado del servidor
llegan a ser muy voluminosos
29
Log files: Rotación
• Si cambiamos el parámetro Logging_collector a true en el
archivo “Postgresql.conf” activamos el rotador de logfiles por
defecto de postgres.
• Si deseamos hacer uso de un programa rotador de log files
externo, es necesario redireccionar la salida estándar del
servidor al programa deseado.
30
Conclusión
PostgreSQL cuenta con una serie de características atractivas
como:
• Su portabilidad por estar basado en lenguaje de consultas SQL.
• Su amplia variedad de índices
• Soporta base de datos de gran tamaño
• Integrado totalmente bajo el esquema ACID
• Alta concurrencia
Desventaja
• Consume muchos recursos, en parte por el intenso trabajo de
E/S al buscar y copiar datos en disco.
31