SlideShare una empresa de Scribd logo
1 de 75
Descargar para leer sin conexión
Administración de PostgreSQL
Jose M. Alarcón Medina (ITI - Formación)
Resumen
● Objetivos
● Plan del curso
● Metodología y Materiales
● Desarrollo del curso
● Próximos pasos
Objetivos
● Proporcionar a los profesionales
responsables de las bases de datos los
conocimientos para la instalación y
administración de una base de datos
PostgreSQL.
● El alumno al finalizar el curso sabrá cómo
instalar PostgreSQL, configurar el entorno
así como administrar los recursos que
proporciona la base de datos.
Plan del curso (I)
● Dia I:
– Presentación e Introducción
– Estructura física y lógica
● Día II:
– Instalación y Desinstalación
– Puesta en marcha
● Día III:
– Seguridad
– Procesamiento de instrucciones y transacciones
Plan del curso (y II)
● Día IV:
– Configuración
– Copias de seguridad y respaldo
– Tareas administrativas
● Día V:
– Rendimiento
– Monitorización
– Afinamiento
– Catálogo del Sistema
– Otros temas
Metodología y Materiales
● Metodología:
– Las clases teórico-prácticas.
– Servidor central al que puedan conectarse los alumnos, así como
instalaciones en sus ordenadores.
– Se proporcionaran ejercicios para realizar las prácticas.
– El alumno al finalizar el curso sabrá cómo instalar PostgreSQL,
configurar el entorno así como administrar los recursos que
proporciona la base de datos.
● Materiales:
– Manual del curso
– Boletines de prácticas con soluciones
– Scripts de ayuda y ejemplo
– http://www.uv.es/alarmedi/iti2007
Desarrollo del Curso
Introducción
● Presentación
● SGBD, Lenguajes
● Historia PostgreSQL
● Uso de las herramientas
● Psql y pgAdmin3
Estructura PostgreSQL (I)
● Arquitectura
– Procesos Postmaster / Postgres (uso del socket
TCP/IP)
– Memoria compartida
– Almacenamiento en Disco
● Concepto: CLUSTER BASE DE DATOS
Estructura PostgreSQL (II)
● Estructura Física
– Zona Memoria Compartida
– Socket de TCP/IP
– Almacenamiento en disco
● INITDB: Creación del cluster
– Ficheros
– Directorios
Estructura PostgreSQL – initdb (III)
● Opciones:
● [-D, --pgdata=]DATADIR ubicación para este cluster de bases de datos
● -E, --encoding=CODIFICACION codificación por omisión para nuevas bases de datos
● --locale=LOCALE inicializar usando esta configuración local
● -A, --auth=METODO método de autentificación por omisión para
conexiones locales
● -U, --username=USUARIO nombre del superusuario del cluster
● -?, --help mostrar esta ayuda y salir
Si el directorio de datos no es especificado, se usa la variable de ambiente PGDATA.
Estructura PostgreSQL (IV)
● Estructura Lógica
– Bases de Datos
– Tablespaces
– Roles de grupo
– Roles de login
● Forman el CLUSTER DE BASE DE DATOS
Estructura Lógica:
Creación bases de datos (V)
$ createdb [OPCIÓN]... [NOMBRE] [DESCRIPCIÓN]
Opciones:
-D, --tablespace=TBLSPC tablespace por omisión de la base de datos
-E, --encoding=CODIFICACIÓN codificación para la base de datos
-O, --owner=DUEÑO usuario que será dueño de la base de datos
-T, --template=PATRÓN base de datos patrón a copiar
-e, --echo mostrar los comandos enviados al servidor
-q, --quiet no desplegar mensajes
--help mostrar esta ayuda y salir
--version mostrar el n·mero de versión y salir
Opciones de conexión:
-h, --host=ANFITRIÓN nombre del servidor o directorio del socket
-p, --port=PUERTO puerto del servidor
-U, --username=USUARIO nombre de usuario para la conexión
-W, --password preguntar la contraseña
Si no se especifica, se creará una base de datos con el mismo nombre que el
usuario actual.
Estructura Lógica:
Creación bases de datos (VI)
Desde SQL:
CREATE DATABASE name
[ [ WITH ] [ OWNER [=] dbowner ]
[ TEMPLATE [=] template ]
[ ENCODING [=] encoding ]
[ TABLESPACE [=] tablespace ]
[ CONNECTION LIMIT [=] connlimit ] ];
Estructura Lógica:
Creación usuarios y roles (VII)
createuser [OPCIÓN]... [ROL]
Opciones:
-s, --superuser el rol será un superusuario
-S, --no-superuser el rol no será un superusuario
-d, --createdb el rol podrá crear bases de datos
-D, --no-createdb el rol no podrá crear bases de datos
-r, --createrole el rol podrá crear otros roles
-R, --no-createrole el rol no podrá crear otros roles
-l, --login el rol podrá conectarse (predeterminado)
-L, --no-login el rol no podrá conectarse
-i, --inherit el rol heredará los privilegios de los roles de
los cuales es miembro (predeterminado)
-I, --no-inherit rol no heredará privilegios
-c, --connection-limit=N límite de conexiones para el rol
(predeterminado: sin límite)
-P, --pwprompt asignar una contraseña al nuevo rol
-E, --encrypted almacenar la constraseña cifrada
-N, --unencrypted almacenar la contraseña sin cifrar
-e, --echo mostrar los comandos a medida que se ejecutan
-q, --quiet no escribir ningún mensaje
--help desplegar esta ayuda y salir
--version desplegar información de versión y salir
Estructura Lógica:
Creación usuarios y roles (VIII)
... Continuación
createuser [OPCIÓN]... [ROL]
Opciones de conexión:
-h, --host=ANFITRIÓN nombre del servidor o directorio del socket
-p, --port=PUERTO puerto del servidor
-U, --username=NOMBRE nombre de usuario con el cual conectarse
(no el usuario a crear)
-W, --password pedir contraseña para conectarse
Si no se especifican -s, -S, -d, -D, -r, -R o el ROL, se preguntará
interactivamente.
Desde SQL:
CREATE ROLE name [ [ WITH ] option [ ... ] ]
SUPERUSER | NOSUPERUSER | CREATEDB | NOCREATEDB
| CREATEROLE | NOCREATEROLE | CREATEUSER | NOCREATEUSER
| INHERIT | NOINHERIT | LOGIN | NOLOGIN
| CONNECTION LIMIT connlimit
| [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'
| VALID UNTIL 'timestamp' | IN ROLE rolename [, ...]
| IN GROUP rolename [, ...] | ROLE rolename [, ...]
| ADMIN rolename [, ...] | USER rolename [, ...] | SYSID uid
Estructura Lógica:
Creación de tablespaces (y IX)
CREATE TABLESPACE tablespacename
[ OWNER username ]
LOCATION 'directory'
Instalación / Desinstalación (I)
● Instalación para Windows
● Instalación para Linux
– Desde paquetes
● Debian (apt-get)
● RedHat – SUSE (rpm)
– Desde ficheros fuente
Instalación / Desinstalación
Desde ficheros fuente (II)
● Instalación
– Decisiones iniciales
– Requerimientos de instalación y hardware
– Configuración del entorno
– Descarga del software
– Compilación y enlazado
– Configuración del usuario propietario
● Instalación de un cliente
● Desinstalación
Instalación / Desinstalación
Migraciones (III)
● Migraciones
– Sin conservar el cluster
– Conservando el cluster
● Instalación de varios PostgreSQL en el
mismo servidor
Instalación / Desinstalación
Más cosas (y IV)
● Configuración:
– Parámetros del Kernel
– Parámetros de funcionamiento
● Instalación de extensiones
Puesta en Marcha (I)
● Puesta en marcha y para del servidor,
existen dos modos:
– postmaster -> postgres
– pg_ctl
● Parada manual (modos)
● Puesta en marcha y parada automática
Puesta en Marcha
postmaster - postgres (II)
postmaster [OPCION]...
Opciones:
-B NBUFFERS número de búfers de memoria compartida
-c VAR=VALOR definir parámetro de ejecución
-d 1-5 nivel de depuración
-D DATADIR directorio de bases de datos
-e usar estilo europeo de fechas (DMY)
-F desactivar fsync
-h NOMBRE nombre de host o dirección IP en que escuchar
-i activar conexiones TCP/IP
-k DIRECTORIO ubicación del socket Unix
-N MAX-CONN número máximo de conexiones permitidas
-o OPCIONES pasar «OPCIONES» a cada proceso servidor (obsoleto)
-p PUERTO número de puerto en el cual escuchar
-s mostrar estadísticas después de cada consulta
-S WORK-MEM mostrar cantidad de memoria para ordenamientos (en kB)
--NOMBRE=VALOR definir parámetro de ejecución
--describe-config
mostrar parámetros de configuración y salir
--help desplegar esta ayuda y salir
--version desplegar número de versión y salir
Puesta en Marcha
postmaster - postgres (III)
postmaster [OPCION]...
Opciones de desarrollador:
-f s|i|n|m|h impedir el uso de algunos tipos de planes
-n no reinicializar memoria compartida después de salida anormal
-O permitir cambios en estructura de tablas de sistema
-P desactivar índices de sistema
-t pa|pl|ex mostrar tiempos después de cada consulta
-T enviar SIGSTOP a todos los backends si uno de ellos muere
-W NÚM espera NÚM segundos para permitir acoplar un depurador
Opciones para modo mono-usuario:
--single selecciona modo mono-usuario (debe ser el primer argumento)
DBNAME nombre de base de datos (el valor por omisión es el nombre de usuario)
-d 0-5 nivel de depuración
-E mostrar las consultas antes de su ejecución
-j no usar saltos de línea como delimitadores de consulta
-r ARCHIVO enviar salida estándar y de error a ARCHIVO
Opciones para modo de inicio (bootstrapping):
--boot selecciona modo de inicio (debe ser el primer argumento)
DBNAME nombre de base de datos (argumento obligatorio en modo de inicio)
-r ARCHIVO enviar salida estándar y de error a ARCHIVO
-x NUM uso interno
Puesta en Marcha
pg_ctl (IV)
Empleo:
pg_ctl start [-w] [-D DATADIR] [-s] [-l ARCHIVO] [-o «OPCIONES»]
pg_ctl stop [-W] [-D DATADIR] [-s] [-m MODO-DETENCIÓN]
pg_ctl restart [-w] [-D DATADIR] [-s] [-m MODO-DETENCIÓN] [-o «OPCIONES»]
pg_ctl reload [-D DATADIR] [-s]
pg_ctl status [-D DATADIR]
pg_ctl kill NOMBRE-SEÑAL ID-DE-PROCESO
Opciones comunes:
-D, --pgdata DATADIR ubicación del área de almacenamiento de datos
-s, --silent mostrar sólo errores, no mensajes de información
-w esperar hasta que la operación se haya completado
-W no esperar hasta que la operación se haya completado
--help mostrar este texto y salir
--version mostrar información sobre versión y salir
(Por omisión se espera para las detenciones, pero no los inicios o reinicios)
Si la opción -D es omitida, se usa la variable de ambiente PGDATA.
Opciones para inicio y reinicio:
-l --log ARCHIVO guardar el registro del servidor en ARCHIVO.
-o OPCIONES parámetros de línea de órdenes a pasar a postgres
(ejecutable del servidor de PostgreSQL)
-p RUTA-A-POSTGRES normalmente no es necesario
Puesta en Marcha
pg_ctl (V)
--- continuación
Empleo:
pg_ctl start [-w] [-D DATADIR] [-s] [-l ARCHIVO] [-o «OPCIONES»]
pg_ctl stop [-W] [-D DATADIR] [-s] [-m MODO-DETENCIÓN]
pg_ctl restart [-w] [-D DATADIR] [-s] [-m MODO-DETENCIÓN] [-o «OPCIONES»]
pg_ctl reload [-D DATADIR] [-s]
pg_ctl status [-D DATADIR]
pg_ctl kill NOMBRE-SEÑAL ID-DE-PROCESO
Opciones para detención y reinicio:
-m MODO-DE-DETENCIÓN puede ser «smart», «fast» o «immediate»
Modos de detención son:
smart salir después que todos los clientes se hayan desconectado
fast salir directamente, con apagado apropiado
immediate salir sin apagado completo; se ejecutará recuperación
en el próximo inicio
Nombres de señales permitidos para kill:
HUP INT QUIT ABRT TERM USR1 USR2
Seguridad en PostgreSQL
● Seguridad en la gestión de ficheros
● Seguridad en el acceso de los clientes
● Seguridad lógica: privilegios
Seguridad: Gestión de ficheros
● Ficheros binarios
● Ficheros $PGDATA (cluster)
● Ficheros de tablespaces
● Ficheros de configuración
● Socket para conexiones locales
Seguridad: Acceso clientes (I)
● Ficheros de configuración:
– pg_hba.conf
– pg_ident.conf
● Fichero pg_hba.conf: configuración de
autenticación
TIPO BASE DATOS USUARIO DIRECCION METODO
LOCAL <base datos> <usuario> <metodo-autenticacion [opción]
HOST <base datos> <usuario> <direccionCIDR> <metodo-autenticacion [opción]
HOSTSSL <base datos> <usuario> <direccionCIDR> <metodo-autenticacion [opción]
HOSTNOSSL <base datos> <usuario> <direccionCIDR> <metodo-autenticacion [opción]
Seguridad: Acceso clientes (II)
● Métodos de autenticación:
– Trust
– Reject
– Password
– Crypt
– MD5
– KRB5
– Ident (sameuser / mapeo usuario -> pg_ident.conf)
– PAM
– LDAP
Seguridad: Nivel lógico
● Creación de roles (superuser, createuser,
createdb)
● GRANT y REVOKE:
– Bases de datos
– Tablespaces
– Lenguajes
– Esquemas
– Tablas y vistas
– Procedimientos y funciones
Procesamiento de Instrucciones (I)
● Ejecución de sentencias (envio, análisis,
preparación, ejecución y recuperación)
● Elementos que intervienen:
– Shared Buffers (lista sucia)
– Discos
– Buffers WAL
– Ficheros WAL
Procesamiento de Instrucciones (y II)
Gestión de transacciones (I)
● Cumplimiento reglas ACID:
– Atomicidad (atomicity)
– Consistencia (consistency)
– Aislamiento (isolatio)
– Persistencia (durability)
Gestión transacciones: Atomicidad (II)
● Todo o nada
● BEGIN / COMMIT / ROLLBACK
– Restricciones inmediatas o diferidas
– Modo autoconfirmación
● SAVEPOINT
BEGIN;
… operaciones1
SAVEPOINT paso2;
… operaciones2
… si error => ROLLBACK paso2;
… operaciones3
COMMIT;
Gestión transacciones: Consistencia (III)
● Reglas de integridad:
– Not null
– Check
– Unique
– Primary Key
– Foreign Key: únicas que son diferibles:
[DEFERRABLE]
[INITIALLY {INMEDIATE | DEFERRED}]
Gestión transacciones: Consistencia (IV)
● Foreign Key:
[DEFERRABLE]
[INITIALLY {INMEDIATE | DEFERRED}]
– Deferrable: el punto de comprobación se puede
cambiar dinámicamente
– Inmediate: se comprueba después de cada
sentencia SQL
– Deferred: la comprobación se realiza al final de
la transacción.
Gestión transacciones: Aislamiento (IV)
● Control de concurrencia:
– No se basa en el uso bloqueos
– Se basa en el uso de MVCC (multiversion
Concurrency Control)
● MVCC: cada transacción ve una
“instantánea” de la BD tal como era al
empezar la transacción.
● Lectores y escritores no necesitan
esperarse.
Gestión transacciones: Aislamiento (V)
● Niveles Aislamiento SQL92:
● Bloqueos sobre tablas
– a nivel de tabla
– a nivel de fila
Nivel Lectura sucia Lectura no repetible Lectura Fantasma Bloqueos
Lectura no confirmada Posible Posible Posible Nunca
Lectura confirmada No Posible Posible Posible Si hay actualizaciones
Lectura repetible No Posible No Posible Posible Si hay consultas
Serializable No Posible No Posible No Posible Siempre (fácil deadlock)
Gestión transacciones: Persistencia (y VI)
● Ficheros WAL (Write-ahead loggin):
ficheros de escritura adelantada.
● Ficheros de 16Mb
● Procesos REDO / UNDO
Configuración entorno de ejecución (I)
● Gestión de recursos del Kernel, parámetros:
– SHMMAX, SHMMIN, SHMALL, SHMSEG,
SHMNI
– SEMMNI, SEMMNS, SEMMSL, SEMMAP,
SEMVMX
Configuración entorno de ejecución (II)
● Fichero postgresql.conf
● Activación de la modificación de valores:
– Con el servidor en marcha (SET)
– Recargando el fichero (pg_ctl reload)
– Reiniciando el servidor (pg_ctl restart)
Configuración entorno - postgresql.conf (III)
● Ubicación de ficheros
● Conexión
– listen_adresses
– Port
– max_connections
– superuser_reserved_connections
– unix_socket_directory
● Seguridad y autenticado
– ssl
Configuración entorno - postgresql.conf (IV)
● Uso de recursos
– shared_buffers
– work_mem
– max_prepared_transaction
– max_fsm_relations
– max_fsm_pages
– max_lock_per_transaction
– Retraso de vacuum
– Proceso de fondo writer
● WAL
– wal_buffers
– checkpoints_segments
– checkpoint_timeout
Configuración entorno - postgresql.conf (V)
● Ajuste de rendimiento de consultas
● Errores / fichero de seguimiento
– Lugar de seguimiento
– Cuándo se efectúa
– Qué se registra
● Estadísticas (recolección)
● Vacuum
● Conexión cliente
– search_path
– default_transaction_isolation
– datestyle
– client_encoding
Configuración entorno - postgresql.conf (y VI)
● Gestión de bloqueos
– deadlock_timeout
–
● Opciones predefinidas
– sólo se pueden cambiar en la instalación
– block_size
– integer_datetime
– lc_collate, lc_ctype
– max_identifier_length
– max_ident_keys
– server_encoding
Internacionalización y localización (I)
● Mensajes en varios idiomas
● Mensajes en varios juegos de caracteres
● Diversos tipos de ordenaciones
● Clasificación de caracteres
● Formatos de monedas, fechas, etc.
<idioma>_<ubicacion>.<cjto_caracteres>@<modificadores>
Codificación: Responsabilidades (II)
● Juego de caracteres en la base de datos =
Administrador de base de datos
● Juego de caracteres en las aplicaciones =
Responsable de las aplicaciones
● En el proceso de migración es posible que
estos dos juegos sean distintos. Ejemplo
estado actual: base de datos en UTF8 y
aplicaciones en ISO-8859-1/15
Codificación: ejemplos problemas (III)
● Error al usar codificaciones distintas:
– España (UTF8) --> España (Latin1)
– Jesús Pérez (Latin1) --> Jes?s P?ez (UTF8)
¿Cuándo se puede dar este problema?:
● Terminales distintas
● Uso de editores incorrectos
● Transmisiones de ficheros: FTP, CVS ...
Copias de seguridad y Recuperación (I)
● Copias de seguridad
● Recuperación de datos
● Migración de versiones
Copias de seguridad(II)
● Copia de seguridad de ficheros del S.O.
– Base de datos parada
– No se pueden recuperar partes
● Volcado SQL
– pg_dump
– pg_dumpall
● Volcado en línea y recuperación PITR
● Conviene automatizar: cron, scripts ...
Copias de seguridad – pg_dump (III)
● Volcar una bd o parte de ella.
● En texto plano:
– Fichero de texto con instrucciones SQL
– Uso de psql para restaurar
– Portable a servidores SQL
● En formato propio de PostgreSQL
– Se usa pg_restore para restaurar
– Más flexible
– Con pg_restore se puede crear archivo SQL.
Copias de seguridad – pg_dump (IV)
Uso: pg_dump [OPCIÓN]... [NOMBREDB]
Opciones generales:
-f, --file=ARCHIVO nombre del archivo de salida
-F, --format=c|t|p Formato del archivo de salida
(personalizado, tar, sólo texto)
-i, --ignore-version procede aún cuando las versiones del servidor
y pg_dump no coinciden
-Z, --compress=0-9 nivel de compresión para formatos comprimidos
Opciones que controlan el contenido de la salida:
-a, --data-only extrae sólo los datos, no el esquema
-b, --blobs incluye objetos grandes en la extracción
-C, --create incluye comandos para crear la base de datos
en la extracción
-d, --inserts extrae los datos usando INSERT, en vez de COPY
-D, --column-inserts extrae los datos usando INSERT con nombres
de columnas
-E, --encoding=CODIFIC extrae los datos con la codificación CODIFIC
-n, --schema=ESQUEMA extrae sólo el esquema nombrado
-N, --exclude-schema=ESQUEMA
NO extrae el o los esquemas listados
-o, --oids incluye OIDs en la extracción
-O, --no-owner en formato de sólo texto, no reestablecer
los dueños de los objetos
-s, --schema-only extrae sólo el esquema, no los datos
-t, --table=TABLE extrae sólo la tabla nombrada
-x, --no-privileges no extrae los privilegios (grant/revoke)
--use-set-session-authorization
usa comandos SESSION AUTHORIZATION en lugar de
comandos OWNER TO
Copias de seguridad – pg_dump (V)
Uso: pg_dump [OPCIÓN]... [NOMBREDB]
Opciones de la conexión:
-h, --host=ANFITRIÓN anfitrión de la base de datos o el
directorio del enchufe (socket)
-p, --port=PUERTO número del puerto de la base de datos
-U, --username=USUARIO nombre de usuario con el cual conectarse
-W, --password fuerza un prompt para la contraseña
(debería ser automático)
Si no se especifica un nombre de base de datos entonces el valor de la variable de
ambiente PGDATABASE es usado.
Copias de seguridad – pg_dumpall (VI)
● Diferencias con pg_dump
● No permite fichero de salida: uso de
redirección
● No permite formatos: siempre texto plano
● Opción '-g': exportar objetos globales
Copias de seguridad – pg_dumpall (VII)
Uso: pg_dumpall [OPCIÓN]...
Opciones que controlan el contenido de la salida:
-a, --data-only extrae sólo los datos, no el esquema
-c, --clean tira la base de datos antes de crearla
-d, --inserts extrae los datos usando INSERT, en vez de COPY
-D, --column-inserts extrae los datos usando INSERT con nombres de columnas
-g, --globals-only extrae sólo los objetos globales, no bases de datos
-o, --oids incluye OIDs en la extracción
-O, --no-owner no reestablece los dueños de los objetos
-s, --schema-only extrae sólo el esquema, no los datos
-S, --superuser=NAME especifica el nombre del superusuario a usar en el guión
-x, --no-privileges no extrae los privilegios (grant/revoke)
-X use-set-session-authorization,
--use-set-session-authorization usa comandos SESSION AUTHORIZATION en lugar de comandos OWNER TO
Opciones de la conexión:
-h, --host=ANFITRIÓN anfitrión de la base de datos o el directorio del enchufe (socket)
-p, --port=PUERTO número del puerto de la base de datos
-U, --username=USUARIO nombre de usuario con el cual conectarse
-W, --password fuerza un prompt para la contraseña (debería ser automático)
Recuperación de Datos (I)
● Con psql a partir de un fichero SQL
● Con pg_restore
– Directamente a una base de datos
– Volcando a fichero SQL
● Volcado en línea y recuperación PITR
– Habilitar archivado WAL
– Copias de seguridad en línea
– Recuperación PITR
Recuperación Datos: Volcado Línea + PITR (y II)
● Habilitar archivado WAL
– Parámetro archive_command
● Copias de seguridad en línea
– Select pg_start_backup('nombre_backup');
– Copia física
– Select pg_stop_backup();
● Recuperación PITR
– Parar base datos
– Recuperar copia física
– Copiar ficheros WAL de la copia
– Fichero recovery.conf
– Arrancar base datos
COPY TO / COPY FROM
Copiar datos de una consulta
a un fichero
COPY tablename [ ( column [, ...] ) ]
FROM { 'filename' | STDIN }
[ [ WITH ]
[ BINARY ]
[ OIDS ]
[ DELIMITER [ AS ] 'delimiter' ]
[ NULL [ AS ] 'null string' ]
[ CSV [ HEADER ]
[ QUOTE [ AS ] 'quote' ]
[ ESCAPE [ AS ] 'escape' ]
[ FORCE NOT NULL column [, ...] ];
Copiar datos de un fichero a
una tabla
COPY { tablename [ ( column [, ...] ) ] | ( query ) }
TO { 'filename' | STDOUT }
[ [ WITH ]
[ BINARY ]
[ HEADER ]
[ OIDS ]
[ DELIMITER [ AS ] 'delimiter' ]
[ NULL [ AS ] 'null string' ]
[ CSV [ HEADER ] [ QUOTE [ AS ] 'quote' ]
[ ESCAPE [ AS ] 'escape' ]
[ FORCE QUOTE column [, ...] ];
VACUUM (I)
● Funciones:
– Recuperar espacio en disco (filas modificadas
o borradas)
– Actualizar estadísticas
– Evitar pérdidas de datos antiguos por reuso de
identificador de transacciones
● Ejecutar
– desde S.O. o desde SQL
– Sobre una tabla o sobre la base de datos
VACUUM (y II)
● Opciones
– FULL: libera y reorganiza
– No FULL: solo libera
– ANALYZE
– FREEZE: inicializa XID (identif. transacciones)
● Estrategias
● Autovacuum
REINDEX
● Desde S.O.
● Desde SQL
● De tablas, índices, base de datos y sistema
● Cuidado con los archivos WAL
Fichero de Seguimiento
● Formas de seguimiento
– Salida estandar
– Fichero indicado al iniciar
– Usar syslog del sistema
● Conveniencia de rotación de logs:
– Mejor información
– Mejor rendimiento
● Parámetros en postgresql.conf
– Dónde y cómo
– Cuándo
– Qué
Catálogo del Sistema
● Conjunto de tablas y vistas: constituyen un
diccionario con metadatos
● Catálogo compartido (todo el cluster):
– Pocas tablas: pg_databases, pg_shadow,
pg_group ...
● Catálogo de cada base de datos: la mayoría
de tablas y vistas. Esquemas:
– pg_catalog
– pg_toast
Monitorización (I)
● De la actividad de la base de datos
– Por comandos del sistema operativo
– Usando el recolector de estadísticas
– Consultado pg_locks
– Compilarlo con traza dinámica
● Del uso de los discos
Monitorización: actividad base datos (II)
● Por comandos del sistema operativo
– ps
– top
– vmstat
– iostat
– free
Monitorización: actividad base de datos (III)
● Uso del recolector de estadísticas:
– Información de:
● Acceso a las tablas e índices
● Instrucciones ejecutadas
● Lecturas de disco
● Uso de la caché, etc.
– postgresql.conf: start_stat_collector
– Tipos:
● pg_stat*: frecuencias y tipos de accesos
● pg_statio*: entrada/salida física
● pg_locks: bloqueos y transacciones
Monitorización: uso de los discos (IV)
● Controlado por postgresql: el dba no tiene
control
● Fichero inicial (heap) y fichero de desborde
(toast)
● Formas de contro:
– Vistas del catálogo
– Extensiones “contrib”:
● dbsize
● oid2name
Afinamiento, mejora del rendimiento (I)
● Gestión del diario (WAL)
– checkpoint_segments
– checkpoint_timeout
● Buffers de diario (caché WAL)
– wal_buffers
– fsync / wal_sync_method
– commit_delay
Afinamiento, mejora del rendimiento (II)
● Caché de base de datos
– Minimizar acceso a disco
– Aumentar shared_buffers (shmmax, shmmni,
shmall)
– Uso de vistas pg_statio*
● Acceso a discos
– Reindex, vacuum, autovacuum
– Uso de tablespaces
– Control de toast
Afinamiento, mejora del rendimiento (III)
● Optimización de consultas
– Elementos:
● Analizador (análisis sintáctico y semántico)
● Planificador (generación planes ejecución)
● Optimizador (búsqueda plan más económico)
– Uso de índices (btree, rtree, hash, GiST) para
búsquedas y ordenaciones
– Uso de EXPLAIN para ver el plan de ejecución
Otros aspectos
● Pseudo-columnas del sistema: oid, ctid,
tableoid ...
● Secuencias para Pks
● Tipos básicos especiales: point, polygon,
cidr, macaddr, etc.
● Tipos compuestos
● Herencia de tablas: de datos, no de
estructura.
Próximos pasos
● Consultar documentación de PostgreSQL
● Buscar en proyectos de PostgreSQL
● Curso para Desarrolladores (programación
con PostgreSQL)
● Curso de optimización SQL
● Cluster, alta disponibilidad, balanceo de
carga, etc.
Resumen
● Objetivos
● Plan del curso
● Metodología y Materiales
● Desarrollo del curso
● Próximos pasos
FIN
● Conclusiones
● Opiniones del curso a alarcon_jos@gva.es
Muchas gracias
José M. Alarcón Medina

Más contenido relacionado

La actualidad más candente (18)

Arquitectura e implementación de PostgreSQL 9.3
Arquitectura e implementación de PostgreSQL 9.3Arquitectura e implementación de PostgreSQL 9.3
Arquitectura e implementación de PostgreSQL 9.3
 
Instrucciones mysql
Instrucciones mysqlInstrucciones mysql
Instrucciones mysql
 
Introducción a PostgreSql
Introducción a PostgreSqlIntroducción a PostgreSql
Introducción a PostgreSql
 
Postgresql expo
Postgresql expoPostgresql expo
Postgresql expo
 
Privilegios y funciones en MySQL
Privilegios y funciones en MySQLPrivilegios y funciones en MySQL
Privilegios y funciones en MySQL
 
Mysql
MysqlMysql
Mysql
 
SQLite3
SQLite3SQLite3
SQLite3
 
Documentacion postgresql
Documentacion postgresqlDocumentacion postgresql
Documentacion postgresql
 
S o dos
S o dosS o dos
S o dos
 
Manejo de estructuras de datos
Manejo de estructuras de datosManejo de estructuras de datos
Manejo de estructuras de datos
 
TUTORIAL SHELL WINDOWS
TUTORIAL SHELL WINDOWSTUTORIAL SHELL WINDOWS
TUTORIAL SHELL WINDOWS
 
Comandos%20 bsicos
Comandos%20 bsicosComandos%20 bsicos
Comandos%20 bsicos
 
expImpOracle.pdf
expImpOracle.pdfexpImpOracle.pdf
expImpOracle.pdf
 
Gestión de-archivos-por-línea-de-comandos
Gestión de-archivos-por-línea-de-comandosGestión de-archivos-por-línea-de-comandos
Gestión de-archivos-por-línea-de-comandos
 
8 access control lists
8  access control lists8  access control lists
8 access control lists
 
Curso de ms dos
Curso de ms dosCurso de ms dos
Curso de ms dos
 
T9 10 My Sql
T9 10 My SqlT9 10 My Sql
T9 10 My Sql
 
Instalacion de Pentaho 5 con PostgreSQL 9.3
Instalacion de Pentaho 5 con PostgreSQL 9.3Instalacion de Pentaho 5 con PostgreSQL 9.3
Instalacion de Pentaho 5 con PostgreSQL 9.3
 

Destacado

Cuellos botella en PostgreSQL
Cuellos botella en PostgreSQLCuellos botella en PostgreSQL
Cuellos botella en PostgreSQLEQ SOFT EIRL
 
Btree. Explore the heart of PostgreSQL.
Btree. Explore the heart of PostgreSQL. Btree. Explore the heart of PostgreSQL.
Btree. Explore the heart of PostgreSQL. Anastasia Lubennikova
 
MariaDB 10: The Complete Tutorial
MariaDB 10: The Complete TutorialMariaDB 10: The Complete Tutorial
MariaDB 10: The Complete TutorialColin Charles
 
Plan nacional educativa 2024
Plan nacional educativa 2024Plan nacional educativa 2024
Plan nacional educativa 2024Godoy_Lorena
 
Inflicted childhood neurotrauma (shaken baby syndrome) ophthalmic findings
Inflicted childhood neurotrauma (shaken baby syndrome)      ophthalmic findingsInflicted childhood neurotrauma (shaken baby syndrome)      ophthalmic findings
Inflicted childhood neurotrauma (shaken baby syndrome) ophthalmic findingsVera Moreira
 
Networked and Symphonic Selves
Networked and Symphonic SelvesNetworked and Symphonic Selves
Networked and Symphonic Selvesdcambrid
 
Theme development final group
Theme development final groupTheme development final group
Theme development final groupafcristea
 
070107 David Getting His Sheepskin
070107 David   Getting His Sheepskin070107 David   Getting His Sheepskin
070107 David Getting His SheepskinDale Wells
 
NorthwestNews_1_2015 (1)
NorthwestNews_1_2015 (1)NorthwestNews_1_2015 (1)
NorthwestNews_1_2015 (1)Theresa Pollick
 
Q3 '05 venture backed IPOs & M&As
Q3 '05 venture backed IPOs & M&As Q3 '05 venture backed IPOs & M&As
Q3 '05 venture backed IPOs & M&As mensa25
 
Inspire dgt 技術部案例分享 20150518
Inspire dgt 技術部案例分享 20150518Inspire dgt 技術部案例分享 20150518
Inspire dgt 技術部案例分享 20150518inspire digital
 
2013 PAR Partner conference - Marketing 101
2013 PAR Partner conference - Marketing 1012013 PAR Partner conference - Marketing 101
2013 PAR Partner conference - Marketing 101Emily Massaglia
 

Destacado (17)

demo2.ppt
demo2.pptdemo2.ppt
demo2.ppt
 
Cuellos botella en PostgreSQL
Cuellos botella en PostgreSQLCuellos botella en PostgreSQL
Cuellos botella en PostgreSQL
 
Btree. Explore the heart of PostgreSQL.
Btree. Explore the heart of PostgreSQL. Btree. Explore the heart of PostgreSQL.
Btree. Explore the heart of PostgreSQL.
 
MariaDB 10: The Complete Tutorial
MariaDB 10: The Complete TutorialMariaDB 10: The Complete Tutorial
MariaDB 10: The Complete Tutorial
 
Tic
TicTic
Tic
 
Red cross.27.1
Red cross.27.1Red cross.27.1
Red cross.27.1
 
STaR Chart
STaR ChartSTaR Chart
STaR Chart
 
Plan nacional educativa 2024
Plan nacional educativa 2024Plan nacional educativa 2024
Plan nacional educativa 2024
 
44
4444
44
 
Inflicted childhood neurotrauma (shaken baby syndrome) ophthalmic findings
Inflicted childhood neurotrauma (shaken baby syndrome)      ophthalmic findingsInflicted childhood neurotrauma (shaken baby syndrome)      ophthalmic findings
Inflicted childhood neurotrauma (shaken baby syndrome) ophthalmic findings
 
Networked and Symphonic Selves
Networked and Symphonic SelvesNetworked and Symphonic Selves
Networked and Symphonic Selves
 
Theme development final group
Theme development final groupTheme development final group
Theme development final group
 
070107 David Getting His Sheepskin
070107 David   Getting His Sheepskin070107 David   Getting His Sheepskin
070107 David Getting His Sheepskin
 
NorthwestNews_1_2015 (1)
NorthwestNews_1_2015 (1)NorthwestNews_1_2015 (1)
NorthwestNews_1_2015 (1)
 
Q3 '05 venture backed IPOs & M&As
Q3 '05 venture backed IPOs & M&As Q3 '05 venture backed IPOs & M&As
Q3 '05 venture backed IPOs & M&As
 
Inspire dgt 技術部案例分享 20150518
Inspire dgt 技術部案例分享 20150518Inspire dgt 技術部案例分享 20150518
Inspire dgt 技術部案例分享 20150518
 
2013 PAR Partner conference - Marketing 101
2013 PAR Partner conference - Marketing 1012013 PAR Partner conference - Marketing 101
2013 PAR Partner conference - Marketing 101
 

Similar a postgres

Introducción a Migrate API en Drupal 8
Introducción a Migrate API en Drupal 8Introducción a Migrate API en Drupal 8
Introducción a Migrate API en Drupal 8Leandro Luvigne
 
desarrolo de sitios web php y mysql
desarrolo de sitios web php y mysqldesarrolo de sitios web php y mysql
desarrolo de sitios web php y mysqlJuan Timoteo Cori
 
PHP Tema 4 - Acceso a bases de datos MySQL en PHP
PHP Tema 4 - Acceso a bases de datos MySQL en PHPPHP Tema 4 - Acceso a bases de datos MySQL en PHP
PHP Tema 4 - Acceso a bases de datos MySQL en PHPSpacetoshare
 
Patrón Façade
Patrón FaçadePatrón Façade
Patrón FaçadeAutentia
 
Curso sql server_administracion
Curso sql server_administracionCurso sql server_administracion
Curso sql server_administracionSalvador Ramos
 
Install odoo in windows
Install odoo in windowsInstall odoo in windows
Install odoo in windowsJuan Vladimir
 
Como implementar una red mesh
Como implementar una red meshComo implementar una red mesh
Como implementar una red meshBogotaMesh
 
Fundamentos de Administración PostgreSQL
Fundamentos de Administración PostgreSQLFundamentos de Administración PostgreSQL
Fundamentos de Administración PostgreSQLcamposer
 
Replicacion con postgresql y slony
Replicacion con  postgresql y slonyReplicacion con  postgresql y slony
Replicacion con postgresql y slonyJohanna Mendez
 
AROUG BIDAY 2013 - Automatizar procesos de ETL con PL/SQL
AROUG BIDAY 2013 - Automatizar procesos de ETL con PL/SQLAROUG BIDAY 2013 - Automatizar procesos de ETL con PL/SQL
AROUG BIDAY 2013 - Automatizar procesos de ETL con PL/SQLNelson Calero
 
Instalacion de Postrgre sql en ubuntu
Instalacion de Postrgre sql en ubuntuInstalacion de Postrgre sql en ubuntu
Instalacion de Postrgre sql en ubuntuDavid Vevelas
 
Curso cei 341 base de datos sql nivel intermedio
Curso cei 341   base de datos sql nivel intermedioCurso cei 341   base de datos sql nivel intermedio
Curso cei 341 base de datos sql nivel intermedioProcasecapacita
 
Javier Marcos - Detección de amenazas a escala con osquery [rooted2019]
Javier Marcos - Detección de amenazas a escala con osquery [rooted2019]Javier Marcos - Detección de amenazas a escala con osquery [rooted2019]
Javier Marcos - Detección de amenazas a escala con osquery [rooted2019]RootedCON
 

Similar a postgres (20)

Introducción a Migrate API en Drupal 8
Introducción a Migrate API en Drupal 8Introducción a Migrate API en Drupal 8
Introducción a Migrate API en Drupal 8
 
desarrolo de sitios web php y mysql
desarrolo de sitios web php y mysqldesarrolo de sitios web php y mysql
desarrolo de sitios web php y mysql
 
PHP Tema 4 - Acceso a bases de datos MySQL en PHP
PHP Tema 4 - Acceso a bases de datos MySQL en PHPPHP Tema 4 - Acceso a bases de datos MySQL en PHP
PHP Tema 4 - Acceso a bases de datos MySQL en PHP
 
Patrón Façade
Patrón FaçadePatrón Façade
Patrón Façade
 
Curso sql server_administracion
Curso sql server_administracionCurso sql server_administracion
Curso sql server_administracion
 
Install odoo in windows
Install odoo in windowsInstall odoo in windows
Install odoo in windows
 
Como implementar una red mesh
Como implementar una red meshComo implementar una red mesh
Como implementar una red mesh
 
Fundamentos de Administración PostgreSQL
Fundamentos de Administración PostgreSQLFundamentos de Administración PostgreSQL
Fundamentos de Administración PostgreSQL
 
Replicacion con postgresql y slony
Replicacion con  postgresql y slonyReplicacion con  postgresql y slony
Replicacion con postgresql y slony
 
Desarrollo de sitios web con php y my sql
Desarrollo de sitios web con php y my sqlDesarrollo de sitios web con php y my sql
Desarrollo de sitios web con php y my sql
 
AROUG BIDAY 2013 - Automatizar procesos de ETL con PL/SQL
AROUG BIDAY 2013 - Automatizar procesos de ETL con PL/SQLAROUG BIDAY 2013 - Automatizar procesos de ETL con PL/SQL
AROUG BIDAY 2013 - Automatizar procesos de ETL con PL/SQL
 
Comandos de red
Comandos de redComandos de red
Comandos de red
 
Introducción a Oracle
Introducción a OracleIntroducción a Oracle
Introducción a Oracle
 
Instalacion de Postrgre sql en ubuntu
Instalacion de Postrgre sql en ubuntuInstalacion de Postrgre sql en ubuntu
Instalacion de Postrgre sql en ubuntu
 
Laboratorio Nº 8.pdf
Laboratorio Nº 8.pdfLaboratorio Nº 8.pdf
Laboratorio Nº 8.pdf
 
Curso cei 341 base de datos sql nivel intermedio
Curso cei 341   base de datos sql nivel intermedioCurso cei 341   base de datos sql nivel intermedio
Curso cei 341 base de datos sql nivel intermedio
 
Cplus
CplusCplus
Cplus
 
C++
C++C++
C++
 
Programación en c++
Programación en c++Programación en c++
Programación en c++
 
Javier Marcos - Detección de amenazas a escala con osquery [rooted2019]
Javier Marcos - Detección de amenazas a escala con osquery [rooted2019]Javier Marcos - Detección de amenazas a escala con osquery [rooted2019]
Javier Marcos - Detección de amenazas a escala con osquery [rooted2019]
 

Último

COMUNICADO PARA TODO TIPO DE REUNIONES .
COMUNICADO PARA TODO TIPO DE REUNIONES .COMUNICADO PARA TODO TIPO DE REUNIONES .
COMUNICADO PARA TODO TIPO DE REUNIONES .GIANELAKAINACHALLCOJ2
 
diseño de una linea de produccion de jabon liquido.pptx
diseño de una linea de produccion de jabon liquido.pptxdiseño de una linea de produccion de jabon liquido.pptx
diseño de una linea de produccion de jabon liquido.pptxHhJhv
 
Las marcas automotrices con más ventas de vehículos (2024).pdf
Las marcas automotrices con más ventas de vehículos (2024).pdfLas marcas automotrices con más ventas de vehículos (2024).pdf
Las marcas automotrices con más ventas de vehículos (2024).pdfJC Díaz Herrera
 
El Manierismo. El Manierismo
El Manierismo.              El ManierismoEl Manierismo.              El Manierismo
El Manierismo. El Manierismofariannys5
 
Los países por porcentaje de población blanca europea en AL (2024).pdf
Los países por porcentaje de población blanca europea en AL (2024).pdfLos países por porcentaje de población blanca europea en AL (2024).pdf
Los países por porcentaje de población blanca europea en AL (2024).pdfJC Díaz Herrera
 
Investigacion cualitativa y cuantitativa....pdf
Investigacion cualitativa y cuantitativa....pdfInvestigacion cualitativa y cuantitativa....pdf
Investigacion cualitativa y cuantitativa....pdfalexanderleonyonange
 
Sistema Nacional de Vigilancia en Salud Pública SIVIGILA
Sistema Nacional de Vigilancia en Salud Pública SIVIGILASistema Nacional de Vigilancia en Salud Pública SIVIGILA
Sistema Nacional de Vigilancia en Salud Pública SIVIGILAsofiagomez288291
 
Conversacion.pptx en guarani boliviano latino
Conversacion.pptx en guarani boliviano latinoConversacion.pptx en guarani boliviano latino
Conversacion.pptx en guarani boliviano latinoBESTTech1
 
PLAN ANUAL DE PROYECTO 2020. para mejorar
PLAN ANUAL DE PROYECTO 2020. para mejorarPLAN ANUAL DE PROYECTO 2020. para mejorar
PLAN ANUAL DE PROYECTO 2020. para mejorarCelesteRolon2
 
PIB PERÚ datos y análisis de los últimos años
PIB PERÚ datos y análisis de los últimos añosPIB PERÚ datos y análisis de los últimos años
PIB PERÚ datos y análisis de los últimos añosEstefaniaRojas54
 
EXPOSICION. PROCEOS SAW SEMIATUMATIZADO,
EXPOSICION. PROCEOS SAW SEMIATUMATIZADO,EXPOSICION. PROCEOS SAW SEMIATUMATIZADO,
EXPOSICION. PROCEOS SAW SEMIATUMATIZADO,LANZAPIANDAJOSEANDRE
 
Los primeros 60 países por IDH en el año (2024).pdf
Los primeros 60 países por IDH en el año (2024).pdfLos primeros 60 países por IDH en el año (2024).pdf
Los primeros 60 países por IDH en el año (2024).pdfJC Díaz Herrera
 
Alfredo Gabriel Rodriguez Yajure Tarea#1
Alfredo Gabriel Rodriguez Yajure Tarea#1Alfredo Gabriel Rodriguez Yajure Tarea#1
Alfredo Gabriel Rodriguez Yajure Tarea#1alfredo130306
 
P.P ANÁLISIS DE UN TEXTO BÍBLICO. TEMA 10.pptx
P.P ANÁLISIS DE UN TEXTO BÍBLICO. TEMA 10.pptxP.P ANÁLISIS DE UN TEXTO BÍBLICO. TEMA 10.pptx
P.P ANÁLISIS DE UN TEXTO BÍBLICO. TEMA 10.pptxJafetColli
 
Los idiomas más hablados en el mundo (2024).pdf
Los idiomas más hablados en el mundo  (2024).pdfLos idiomas más hablados en el mundo  (2024).pdf
Los idiomas más hablados en el mundo (2024).pdfJC Díaz Herrera
 
Los más ricos administradores de fondo de cobertura (1968-2024).pdf
Los más ricos administradores de fondo de cobertura (1968-2024).pdfLos más ricos administradores de fondo de cobertura (1968-2024).pdf
Los más ricos administradores de fondo de cobertura (1968-2024).pdfJC Díaz Herrera
 
EPIDEMIO CANCER PULMON resumen nnn.pptx
EPIDEMIO CANCER PULMON  resumen nnn.pptxEPIDEMIO CANCER PULMON  resumen nnn.pptx
EPIDEMIO CANCER PULMON resumen nnn.pptxJEFFERSONMEDRANOCHAV
 
Reservas de divisas y oro en México en sexenio de AMLO (2018-2024).pdf
Reservas de divisas y oro en México en sexenio de AMLO (2018-2024).pdfReservas de divisas y oro en México en sexenio de AMLO (2018-2024).pdf
Reservas de divisas y oro en México en sexenio de AMLO (2018-2024).pdfJC Díaz Herrera
 
Análisis de datos en acción: Optimizando el crecimiento de Cyclistic
Análisis de datos en acción: Optimizando el crecimiento de CyclisticAnálisis de datos en acción: Optimizando el crecimiento de Cyclistic
Análisis de datos en acción: Optimizando el crecimiento de CyclisticJamithGarcia1
 
Panorama Sociodemográfico de México 2020: GUANAJUATO
Panorama Sociodemográfico de México 2020: GUANAJUATOPanorama Sociodemográfico de México 2020: GUANAJUATO
Panorama Sociodemográfico de México 2020: GUANAJUATOJuan Carlos Fonseca Mata
 

Último (20)

COMUNICADO PARA TODO TIPO DE REUNIONES .
COMUNICADO PARA TODO TIPO DE REUNIONES .COMUNICADO PARA TODO TIPO DE REUNIONES .
COMUNICADO PARA TODO TIPO DE REUNIONES .
 
diseño de una linea de produccion de jabon liquido.pptx
diseño de una linea de produccion de jabon liquido.pptxdiseño de una linea de produccion de jabon liquido.pptx
diseño de una linea de produccion de jabon liquido.pptx
 
Las marcas automotrices con más ventas de vehículos (2024).pdf
Las marcas automotrices con más ventas de vehículos (2024).pdfLas marcas automotrices con más ventas de vehículos (2024).pdf
Las marcas automotrices con más ventas de vehículos (2024).pdf
 
El Manierismo. El Manierismo
El Manierismo.              El ManierismoEl Manierismo.              El Manierismo
El Manierismo. El Manierismo
 
Los países por porcentaje de población blanca europea en AL (2024).pdf
Los países por porcentaje de población blanca europea en AL (2024).pdfLos países por porcentaje de población blanca europea en AL (2024).pdf
Los países por porcentaje de población blanca europea en AL (2024).pdf
 
Investigacion cualitativa y cuantitativa....pdf
Investigacion cualitativa y cuantitativa....pdfInvestigacion cualitativa y cuantitativa....pdf
Investigacion cualitativa y cuantitativa....pdf
 
Sistema Nacional de Vigilancia en Salud Pública SIVIGILA
Sistema Nacional de Vigilancia en Salud Pública SIVIGILASistema Nacional de Vigilancia en Salud Pública SIVIGILA
Sistema Nacional de Vigilancia en Salud Pública SIVIGILA
 
Conversacion.pptx en guarani boliviano latino
Conversacion.pptx en guarani boliviano latinoConversacion.pptx en guarani boliviano latino
Conversacion.pptx en guarani boliviano latino
 
PLAN ANUAL DE PROYECTO 2020. para mejorar
PLAN ANUAL DE PROYECTO 2020. para mejorarPLAN ANUAL DE PROYECTO 2020. para mejorar
PLAN ANUAL DE PROYECTO 2020. para mejorar
 
PIB PERÚ datos y análisis de los últimos años
PIB PERÚ datos y análisis de los últimos añosPIB PERÚ datos y análisis de los últimos años
PIB PERÚ datos y análisis de los últimos años
 
EXPOSICION. PROCEOS SAW SEMIATUMATIZADO,
EXPOSICION. PROCEOS SAW SEMIATUMATIZADO,EXPOSICION. PROCEOS SAW SEMIATUMATIZADO,
EXPOSICION. PROCEOS SAW SEMIATUMATIZADO,
 
Los primeros 60 países por IDH en el año (2024).pdf
Los primeros 60 países por IDH en el año (2024).pdfLos primeros 60 países por IDH en el año (2024).pdf
Los primeros 60 países por IDH en el año (2024).pdf
 
Alfredo Gabriel Rodriguez Yajure Tarea#1
Alfredo Gabriel Rodriguez Yajure Tarea#1Alfredo Gabriel Rodriguez Yajure Tarea#1
Alfredo Gabriel Rodriguez Yajure Tarea#1
 
P.P ANÁLISIS DE UN TEXTO BÍBLICO. TEMA 10.pptx
P.P ANÁLISIS DE UN TEXTO BÍBLICO. TEMA 10.pptxP.P ANÁLISIS DE UN TEXTO BÍBLICO. TEMA 10.pptx
P.P ANÁLISIS DE UN TEXTO BÍBLICO. TEMA 10.pptx
 
Los idiomas más hablados en el mundo (2024).pdf
Los idiomas más hablados en el mundo  (2024).pdfLos idiomas más hablados en el mundo  (2024).pdf
Los idiomas más hablados en el mundo (2024).pdf
 
Los más ricos administradores de fondo de cobertura (1968-2024).pdf
Los más ricos administradores de fondo de cobertura (1968-2024).pdfLos más ricos administradores de fondo de cobertura (1968-2024).pdf
Los más ricos administradores de fondo de cobertura (1968-2024).pdf
 
EPIDEMIO CANCER PULMON resumen nnn.pptx
EPIDEMIO CANCER PULMON  resumen nnn.pptxEPIDEMIO CANCER PULMON  resumen nnn.pptx
EPIDEMIO CANCER PULMON resumen nnn.pptx
 
Reservas de divisas y oro en México en sexenio de AMLO (2018-2024).pdf
Reservas de divisas y oro en México en sexenio de AMLO (2018-2024).pdfReservas de divisas y oro en México en sexenio de AMLO (2018-2024).pdf
Reservas de divisas y oro en México en sexenio de AMLO (2018-2024).pdf
 
Análisis de datos en acción: Optimizando el crecimiento de Cyclistic
Análisis de datos en acción: Optimizando el crecimiento de CyclisticAnálisis de datos en acción: Optimizando el crecimiento de Cyclistic
Análisis de datos en acción: Optimizando el crecimiento de Cyclistic
 
Panorama Sociodemográfico de México 2020: GUANAJUATO
Panorama Sociodemográfico de México 2020: GUANAJUATOPanorama Sociodemográfico de México 2020: GUANAJUATO
Panorama Sociodemográfico de México 2020: GUANAJUATO
 

postgres

  • 1. Administración de PostgreSQL Jose M. Alarcón Medina (ITI - Formación)
  • 2. Resumen ● Objetivos ● Plan del curso ● Metodología y Materiales ● Desarrollo del curso ● Próximos pasos
  • 3. Objetivos ● Proporcionar a los profesionales responsables de las bases de datos los conocimientos para la instalación y administración de una base de datos PostgreSQL. ● El alumno al finalizar el curso sabrá cómo instalar PostgreSQL, configurar el entorno así como administrar los recursos que proporciona la base de datos.
  • 4. Plan del curso (I) ● Dia I: – Presentación e Introducción – Estructura física y lógica ● Día II: – Instalación y Desinstalación – Puesta en marcha ● Día III: – Seguridad – Procesamiento de instrucciones y transacciones
  • 5. Plan del curso (y II) ● Día IV: – Configuración – Copias de seguridad y respaldo – Tareas administrativas ● Día V: – Rendimiento – Monitorización – Afinamiento – Catálogo del Sistema – Otros temas
  • 6. Metodología y Materiales ● Metodología: – Las clases teórico-prácticas. – Servidor central al que puedan conectarse los alumnos, así como instalaciones en sus ordenadores. – Se proporcionaran ejercicios para realizar las prácticas. – El alumno al finalizar el curso sabrá cómo instalar PostgreSQL, configurar el entorno así como administrar los recursos que proporciona la base de datos. ● Materiales: – Manual del curso – Boletines de prácticas con soluciones – Scripts de ayuda y ejemplo – http://www.uv.es/alarmedi/iti2007
  • 8. Introducción ● Presentación ● SGBD, Lenguajes ● Historia PostgreSQL ● Uso de las herramientas ● Psql y pgAdmin3
  • 9. Estructura PostgreSQL (I) ● Arquitectura – Procesos Postmaster / Postgres (uso del socket TCP/IP) – Memoria compartida – Almacenamiento en Disco ● Concepto: CLUSTER BASE DE DATOS
  • 10. Estructura PostgreSQL (II) ● Estructura Física – Zona Memoria Compartida – Socket de TCP/IP – Almacenamiento en disco ● INITDB: Creación del cluster – Ficheros – Directorios
  • 11. Estructura PostgreSQL – initdb (III) ● Opciones: ● [-D, --pgdata=]DATADIR ubicación para este cluster de bases de datos ● -E, --encoding=CODIFICACION codificación por omisión para nuevas bases de datos ● --locale=LOCALE inicializar usando esta configuración local ● -A, --auth=METODO método de autentificación por omisión para conexiones locales ● -U, --username=USUARIO nombre del superusuario del cluster ● -?, --help mostrar esta ayuda y salir Si el directorio de datos no es especificado, se usa la variable de ambiente PGDATA.
  • 12. Estructura PostgreSQL (IV) ● Estructura Lógica – Bases de Datos – Tablespaces – Roles de grupo – Roles de login ● Forman el CLUSTER DE BASE DE DATOS
  • 13. Estructura Lógica: Creación bases de datos (V) $ createdb [OPCIÓN]... [NOMBRE] [DESCRIPCIÓN] Opciones: -D, --tablespace=TBLSPC tablespace por omisión de la base de datos -E, --encoding=CODIFICACIÓN codificación para la base de datos -O, --owner=DUEÑO usuario que será dueño de la base de datos -T, --template=PATRÓN base de datos patrón a copiar -e, --echo mostrar los comandos enviados al servidor -q, --quiet no desplegar mensajes --help mostrar esta ayuda y salir --version mostrar el n·mero de versión y salir Opciones de conexión: -h, --host=ANFITRIÓN nombre del servidor o directorio del socket -p, --port=PUERTO puerto del servidor -U, --username=USUARIO nombre de usuario para la conexión -W, --password preguntar la contraseña Si no se especifica, se creará una base de datos con el mismo nombre que el usuario actual.
  • 14. Estructura Lógica: Creación bases de datos (VI) Desde SQL: CREATE DATABASE name [ [ WITH ] [ OWNER [=] dbowner ] [ TEMPLATE [=] template ] [ ENCODING [=] encoding ] [ TABLESPACE [=] tablespace ] [ CONNECTION LIMIT [=] connlimit ] ];
  • 15. Estructura Lógica: Creación usuarios y roles (VII) createuser [OPCIÓN]... [ROL] Opciones: -s, --superuser el rol será un superusuario -S, --no-superuser el rol no será un superusuario -d, --createdb el rol podrá crear bases de datos -D, --no-createdb el rol no podrá crear bases de datos -r, --createrole el rol podrá crear otros roles -R, --no-createrole el rol no podrá crear otros roles -l, --login el rol podrá conectarse (predeterminado) -L, --no-login el rol no podrá conectarse -i, --inherit el rol heredará los privilegios de los roles de los cuales es miembro (predeterminado) -I, --no-inherit rol no heredará privilegios -c, --connection-limit=N límite de conexiones para el rol (predeterminado: sin límite) -P, --pwprompt asignar una contraseña al nuevo rol -E, --encrypted almacenar la constraseña cifrada -N, --unencrypted almacenar la contraseña sin cifrar -e, --echo mostrar los comandos a medida que se ejecutan -q, --quiet no escribir ningún mensaje --help desplegar esta ayuda y salir --version desplegar información de versión y salir
  • 16. Estructura Lógica: Creación usuarios y roles (VIII) ... Continuación createuser [OPCIÓN]... [ROL] Opciones de conexión: -h, --host=ANFITRIÓN nombre del servidor o directorio del socket -p, --port=PUERTO puerto del servidor -U, --username=NOMBRE nombre de usuario con el cual conectarse (no el usuario a crear) -W, --password pedir contraseña para conectarse Si no se especifican -s, -S, -d, -D, -r, -R o el ROL, se preguntará interactivamente. Desde SQL: CREATE ROLE name [ [ WITH ] option [ ... ] ] SUPERUSER | NOSUPERUSER | CREATEDB | NOCREATEDB | CREATEROLE | NOCREATEROLE | CREATEUSER | NOCREATEUSER | INHERIT | NOINHERIT | LOGIN | NOLOGIN | CONNECTION LIMIT connlimit | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password' | VALID UNTIL 'timestamp' | IN ROLE rolename [, ...] | IN GROUP rolename [, ...] | ROLE rolename [, ...] | ADMIN rolename [, ...] | USER rolename [, ...] | SYSID uid
  • 17. Estructura Lógica: Creación de tablespaces (y IX) CREATE TABLESPACE tablespacename [ OWNER username ] LOCATION 'directory'
  • 18. Instalación / Desinstalación (I) ● Instalación para Windows ● Instalación para Linux – Desde paquetes ● Debian (apt-get) ● RedHat – SUSE (rpm) – Desde ficheros fuente
  • 19. Instalación / Desinstalación Desde ficheros fuente (II) ● Instalación – Decisiones iniciales – Requerimientos de instalación y hardware – Configuración del entorno – Descarga del software – Compilación y enlazado – Configuración del usuario propietario ● Instalación de un cliente ● Desinstalación
  • 20. Instalación / Desinstalación Migraciones (III) ● Migraciones – Sin conservar el cluster – Conservando el cluster ● Instalación de varios PostgreSQL en el mismo servidor
  • 21. Instalación / Desinstalación Más cosas (y IV) ● Configuración: – Parámetros del Kernel – Parámetros de funcionamiento ● Instalación de extensiones
  • 22. Puesta en Marcha (I) ● Puesta en marcha y para del servidor, existen dos modos: – postmaster -> postgres – pg_ctl ● Parada manual (modos) ● Puesta en marcha y parada automática
  • 23. Puesta en Marcha postmaster - postgres (II) postmaster [OPCION]... Opciones: -B NBUFFERS número de búfers de memoria compartida -c VAR=VALOR definir parámetro de ejecución -d 1-5 nivel de depuración -D DATADIR directorio de bases de datos -e usar estilo europeo de fechas (DMY) -F desactivar fsync -h NOMBRE nombre de host o dirección IP en que escuchar -i activar conexiones TCP/IP -k DIRECTORIO ubicación del socket Unix -N MAX-CONN número máximo de conexiones permitidas -o OPCIONES pasar «OPCIONES» a cada proceso servidor (obsoleto) -p PUERTO número de puerto en el cual escuchar -s mostrar estadísticas después de cada consulta -S WORK-MEM mostrar cantidad de memoria para ordenamientos (en kB) --NOMBRE=VALOR definir parámetro de ejecución --describe-config mostrar parámetros de configuración y salir --help desplegar esta ayuda y salir --version desplegar número de versión y salir
  • 24. Puesta en Marcha postmaster - postgres (III) postmaster [OPCION]... Opciones de desarrollador: -f s|i|n|m|h impedir el uso de algunos tipos de planes -n no reinicializar memoria compartida después de salida anormal -O permitir cambios en estructura de tablas de sistema -P desactivar índices de sistema -t pa|pl|ex mostrar tiempos después de cada consulta -T enviar SIGSTOP a todos los backends si uno de ellos muere -W NÚM espera NÚM segundos para permitir acoplar un depurador Opciones para modo mono-usuario: --single selecciona modo mono-usuario (debe ser el primer argumento) DBNAME nombre de base de datos (el valor por omisión es el nombre de usuario) -d 0-5 nivel de depuración -E mostrar las consultas antes de su ejecución -j no usar saltos de línea como delimitadores de consulta -r ARCHIVO enviar salida estándar y de error a ARCHIVO Opciones para modo de inicio (bootstrapping): --boot selecciona modo de inicio (debe ser el primer argumento) DBNAME nombre de base de datos (argumento obligatorio en modo de inicio) -r ARCHIVO enviar salida estándar y de error a ARCHIVO -x NUM uso interno
  • 25. Puesta en Marcha pg_ctl (IV) Empleo: pg_ctl start [-w] [-D DATADIR] [-s] [-l ARCHIVO] [-o «OPCIONES»] pg_ctl stop [-W] [-D DATADIR] [-s] [-m MODO-DETENCIÓN] pg_ctl restart [-w] [-D DATADIR] [-s] [-m MODO-DETENCIÓN] [-o «OPCIONES»] pg_ctl reload [-D DATADIR] [-s] pg_ctl status [-D DATADIR] pg_ctl kill NOMBRE-SEÑAL ID-DE-PROCESO Opciones comunes: -D, --pgdata DATADIR ubicación del área de almacenamiento de datos -s, --silent mostrar sólo errores, no mensajes de información -w esperar hasta que la operación se haya completado -W no esperar hasta que la operación se haya completado --help mostrar este texto y salir --version mostrar información sobre versión y salir (Por omisión se espera para las detenciones, pero no los inicios o reinicios) Si la opción -D es omitida, se usa la variable de ambiente PGDATA. Opciones para inicio y reinicio: -l --log ARCHIVO guardar el registro del servidor en ARCHIVO. -o OPCIONES parámetros de línea de órdenes a pasar a postgres (ejecutable del servidor de PostgreSQL) -p RUTA-A-POSTGRES normalmente no es necesario
  • 26. Puesta en Marcha pg_ctl (V) --- continuación Empleo: pg_ctl start [-w] [-D DATADIR] [-s] [-l ARCHIVO] [-o «OPCIONES»] pg_ctl stop [-W] [-D DATADIR] [-s] [-m MODO-DETENCIÓN] pg_ctl restart [-w] [-D DATADIR] [-s] [-m MODO-DETENCIÓN] [-o «OPCIONES»] pg_ctl reload [-D DATADIR] [-s] pg_ctl status [-D DATADIR] pg_ctl kill NOMBRE-SEÑAL ID-DE-PROCESO Opciones para detención y reinicio: -m MODO-DE-DETENCIÓN puede ser «smart», «fast» o «immediate» Modos de detención son: smart salir después que todos los clientes se hayan desconectado fast salir directamente, con apagado apropiado immediate salir sin apagado completo; se ejecutará recuperación en el próximo inicio Nombres de señales permitidos para kill: HUP INT QUIT ABRT TERM USR1 USR2
  • 27. Seguridad en PostgreSQL ● Seguridad en la gestión de ficheros ● Seguridad en el acceso de los clientes ● Seguridad lógica: privilegios
  • 28. Seguridad: Gestión de ficheros ● Ficheros binarios ● Ficheros $PGDATA (cluster) ● Ficheros de tablespaces ● Ficheros de configuración ● Socket para conexiones locales
  • 29. Seguridad: Acceso clientes (I) ● Ficheros de configuración: – pg_hba.conf – pg_ident.conf ● Fichero pg_hba.conf: configuración de autenticación TIPO BASE DATOS USUARIO DIRECCION METODO LOCAL <base datos> <usuario> <metodo-autenticacion [opción] HOST <base datos> <usuario> <direccionCIDR> <metodo-autenticacion [opción] HOSTSSL <base datos> <usuario> <direccionCIDR> <metodo-autenticacion [opción] HOSTNOSSL <base datos> <usuario> <direccionCIDR> <metodo-autenticacion [opción]
  • 30. Seguridad: Acceso clientes (II) ● Métodos de autenticación: – Trust – Reject – Password – Crypt – MD5 – KRB5 – Ident (sameuser / mapeo usuario -> pg_ident.conf) – PAM – LDAP
  • 31. Seguridad: Nivel lógico ● Creación de roles (superuser, createuser, createdb) ● GRANT y REVOKE: – Bases de datos – Tablespaces – Lenguajes – Esquemas – Tablas y vistas – Procedimientos y funciones
  • 32. Procesamiento de Instrucciones (I) ● Ejecución de sentencias (envio, análisis, preparación, ejecución y recuperación) ● Elementos que intervienen: – Shared Buffers (lista sucia) – Discos – Buffers WAL – Ficheros WAL
  • 34. Gestión de transacciones (I) ● Cumplimiento reglas ACID: – Atomicidad (atomicity) – Consistencia (consistency) – Aislamiento (isolatio) – Persistencia (durability)
  • 35. Gestión transacciones: Atomicidad (II) ● Todo o nada ● BEGIN / COMMIT / ROLLBACK – Restricciones inmediatas o diferidas – Modo autoconfirmación ● SAVEPOINT BEGIN; … operaciones1 SAVEPOINT paso2; … operaciones2 … si error => ROLLBACK paso2; … operaciones3 COMMIT;
  • 36. Gestión transacciones: Consistencia (III) ● Reglas de integridad: – Not null – Check – Unique – Primary Key – Foreign Key: únicas que son diferibles: [DEFERRABLE] [INITIALLY {INMEDIATE | DEFERRED}]
  • 37. Gestión transacciones: Consistencia (IV) ● Foreign Key: [DEFERRABLE] [INITIALLY {INMEDIATE | DEFERRED}] – Deferrable: el punto de comprobación se puede cambiar dinámicamente – Inmediate: se comprueba después de cada sentencia SQL – Deferred: la comprobación se realiza al final de la transacción.
  • 38. Gestión transacciones: Aislamiento (IV) ● Control de concurrencia: – No se basa en el uso bloqueos – Se basa en el uso de MVCC (multiversion Concurrency Control) ● MVCC: cada transacción ve una “instantánea” de la BD tal como era al empezar la transacción. ● Lectores y escritores no necesitan esperarse.
  • 39. Gestión transacciones: Aislamiento (V) ● Niveles Aislamiento SQL92: ● Bloqueos sobre tablas – a nivel de tabla – a nivel de fila Nivel Lectura sucia Lectura no repetible Lectura Fantasma Bloqueos Lectura no confirmada Posible Posible Posible Nunca Lectura confirmada No Posible Posible Posible Si hay actualizaciones Lectura repetible No Posible No Posible Posible Si hay consultas Serializable No Posible No Posible No Posible Siempre (fácil deadlock)
  • 40. Gestión transacciones: Persistencia (y VI) ● Ficheros WAL (Write-ahead loggin): ficheros de escritura adelantada. ● Ficheros de 16Mb ● Procesos REDO / UNDO
  • 41. Configuración entorno de ejecución (I) ● Gestión de recursos del Kernel, parámetros: – SHMMAX, SHMMIN, SHMALL, SHMSEG, SHMNI – SEMMNI, SEMMNS, SEMMSL, SEMMAP, SEMVMX
  • 42. Configuración entorno de ejecución (II) ● Fichero postgresql.conf ● Activación de la modificación de valores: – Con el servidor en marcha (SET) – Recargando el fichero (pg_ctl reload) – Reiniciando el servidor (pg_ctl restart)
  • 43. Configuración entorno - postgresql.conf (III) ● Ubicación de ficheros ● Conexión – listen_adresses – Port – max_connections – superuser_reserved_connections – unix_socket_directory ● Seguridad y autenticado – ssl
  • 44. Configuración entorno - postgresql.conf (IV) ● Uso de recursos – shared_buffers – work_mem – max_prepared_transaction – max_fsm_relations – max_fsm_pages – max_lock_per_transaction – Retraso de vacuum – Proceso de fondo writer ● WAL – wal_buffers – checkpoints_segments – checkpoint_timeout
  • 45. Configuración entorno - postgresql.conf (V) ● Ajuste de rendimiento de consultas ● Errores / fichero de seguimiento – Lugar de seguimiento – Cuándo se efectúa – Qué se registra ● Estadísticas (recolección) ● Vacuum ● Conexión cliente – search_path – default_transaction_isolation – datestyle – client_encoding
  • 46. Configuración entorno - postgresql.conf (y VI) ● Gestión de bloqueos – deadlock_timeout – ● Opciones predefinidas – sólo se pueden cambiar en la instalación – block_size – integer_datetime – lc_collate, lc_ctype – max_identifier_length – max_ident_keys – server_encoding
  • 47. Internacionalización y localización (I) ● Mensajes en varios idiomas ● Mensajes en varios juegos de caracteres ● Diversos tipos de ordenaciones ● Clasificación de caracteres ● Formatos de monedas, fechas, etc. <idioma>_<ubicacion>.<cjto_caracteres>@<modificadores>
  • 48. Codificación: Responsabilidades (II) ● Juego de caracteres en la base de datos = Administrador de base de datos ● Juego de caracteres en las aplicaciones = Responsable de las aplicaciones ● En el proceso de migración es posible que estos dos juegos sean distintos. Ejemplo estado actual: base de datos en UTF8 y aplicaciones en ISO-8859-1/15
  • 49. Codificación: ejemplos problemas (III) ● Error al usar codificaciones distintas: – España (UTF8) --> España (Latin1) – Jesús Pérez (Latin1) --> Jes?s P?ez (UTF8) ¿Cuándo se puede dar este problema?: ● Terminales distintas ● Uso de editores incorrectos ● Transmisiones de ficheros: FTP, CVS ...
  • 50. Copias de seguridad y Recuperación (I) ● Copias de seguridad ● Recuperación de datos ● Migración de versiones
  • 51. Copias de seguridad(II) ● Copia de seguridad de ficheros del S.O. – Base de datos parada – No se pueden recuperar partes ● Volcado SQL – pg_dump – pg_dumpall ● Volcado en línea y recuperación PITR ● Conviene automatizar: cron, scripts ...
  • 52. Copias de seguridad – pg_dump (III) ● Volcar una bd o parte de ella. ● En texto plano: – Fichero de texto con instrucciones SQL – Uso de psql para restaurar – Portable a servidores SQL ● En formato propio de PostgreSQL – Se usa pg_restore para restaurar – Más flexible – Con pg_restore se puede crear archivo SQL.
  • 53. Copias de seguridad – pg_dump (IV) Uso: pg_dump [OPCIÓN]... [NOMBREDB] Opciones generales: -f, --file=ARCHIVO nombre del archivo de salida -F, --format=c|t|p Formato del archivo de salida (personalizado, tar, sólo texto) -i, --ignore-version procede aún cuando las versiones del servidor y pg_dump no coinciden -Z, --compress=0-9 nivel de compresión para formatos comprimidos Opciones que controlan el contenido de la salida: -a, --data-only extrae sólo los datos, no el esquema -b, --blobs incluye objetos grandes en la extracción -C, --create incluye comandos para crear la base de datos en la extracción -d, --inserts extrae los datos usando INSERT, en vez de COPY -D, --column-inserts extrae los datos usando INSERT con nombres de columnas -E, --encoding=CODIFIC extrae los datos con la codificación CODIFIC -n, --schema=ESQUEMA extrae sólo el esquema nombrado -N, --exclude-schema=ESQUEMA NO extrae el o los esquemas listados -o, --oids incluye OIDs en la extracción -O, --no-owner en formato de sólo texto, no reestablecer los dueños de los objetos -s, --schema-only extrae sólo el esquema, no los datos -t, --table=TABLE extrae sólo la tabla nombrada -x, --no-privileges no extrae los privilegios (grant/revoke) --use-set-session-authorization usa comandos SESSION AUTHORIZATION en lugar de comandos OWNER TO
  • 54. Copias de seguridad – pg_dump (V) Uso: pg_dump [OPCIÓN]... [NOMBREDB] Opciones de la conexión: -h, --host=ANFITRIÓN anfitrión de la base de datos o el directorio del enchufe (socket) -p, --port=PUERTO número del puerto de la base de datos -U, --username=USUARIO nombre de usuario con el cual conectarse -W, --password fuerza un prompt para la contraseña (debería ser automático) Si no se especifica un nombre de base de datos entonces el valor de la variable de ambiente PGDATABASE es usado.
  • 55. Copias de seguridad – pg_dumpall (VI) ● Diferencias con pg_dump ● No permite fichero de salida: uso de redirección ● No permite formatos: siempre texto plano ● Opción '-g': exportar objetos globales
  • 56. Copias de seguridad – pg_dumpall (VII) Uso: pg_dumpall [OPCIÓN]... Opciones que controlan el contenido de la salida: -a, --data-only extrae sólo los datos, no el esquema -c, --clean tira la base de datos antes de crearla -d, --inserts extrae los datos usando INSERT, en vez de COPY -D, --column-inserts extrae los datos usando INSERT con nombres de columnas -g, --globals-only extrae sólo los objetos globales, no bases de datos -o, --oids incluye OIDs en la extracción -O, --no-owner no reestablece los dueños de los objetos -s, --schema-only extrae sólo el esquema, no los datos -S, --superuser=NAME especifica el nombre del superusuario a usar en el guión -x, --no-privileges no extrae los privilegios (grant/revoke) -X use-set-session-authorization, --use-set-session-authorization usa comandos SESSION AUTHORIZATION en lugar de comandos OWNER TO Opciones de la conexión: -h, --host=ANFITRIÓN anfitrión de la base de datos o el directorio del enchufe (socket) -p, --port=PUERTO número del puerto de la base de datos -U, --username=USUARIO nombre de usuario con el cual conectarse -W, --password fuerza un prompt para la contraseña (debería ser automático)
  • 57. Recuperación de Datos (I) ● Con psql a partir de un fichero SQL ● Con pg_restore – Directamente a una base de datos – Volcando a fichero SQL ● Volcado en línea y recuperación PITR – Habilitar archivado WAL – Copias de seguridad en línea – Recuperación PITR
  • 58. Recuperación Datos: Volcado Línea + PITR (y II) ● Habilitar archivado WAL – Parámetro archive_command ● Copias de seguridad en línea – Select pg_start_backup('nombre_backup'); – Copia física – Select pg_stop_backup(); ● Recuperación PITR – Parar base datos – Recuperar copia física – Copiar ficheros WAL de la copia – Fichero recovery.conf – Arrancar base datos
  • 59. COPY TO / COPY FROM Copiar datos de una consulta a un fichero COPY tablename [ ( column [, ...] ) ] FROM { 'filename' | STDIN } [ [ WITH ] [ BINARY ] [ OIDS ] [ DELIMITER [ AS ] 'delimiter' ] [ NULL [ AS ] 'null string' ] [ CSV [ HEADER ] [ QUOTE [ AS ] 'quote' ] [ ESCAPE [ AS ] 'escape' ] [ FORCE NOT NULL column [, ...] ]; Copiar datos de un fichero a una tabla COPY { tablename [ ( column [, ...] ) ] | ( query ) } TO { 'filename' | STDOUT } [ [ WITH ] [ BINARY ] [ HEADER ] [ OIDS ] [ DELIMITER [ AS ] 'delimiter' ] [ NULL [ AS ] 'null string' ] [ CSV [ HEADER ] [ QUOTE [ AS ] 'quote' ] [ ESCAPE [ AS ] 'escape' ] [ FORCE QUOTE column [, ...] ];
  • 60. VACUUM (I) ● Funciones: – Recuperar espacio en disco (filas modificadas o borradas) – Actualizar estadísticas – Evitar pérdidas de datos antiguos por reuso de identificador de transacciones ● Ejecutar – desde S.O. o desde SQL – Sobre una tabla o sobre la base de datos
  • 61. VACUUM (y II) ● Opciones – FULL: libera y reorganiza – No FULL: solo libera – ANALYZE – FREEZE: inicializa XID (identif. transacciones) ● Estrategias ● Autovacuum
  • 62. REINDEX ● Desde S.O. ● Desde SQL ● De tablas, índices, base de datos y sistema ● Cuidado con los archivos WAL
  • 63. Fichero de Seguimiento ● Formas de seguimiento – Salida estandar – Fichero indicado al iniciar – Usar syslog del sistema ● Conveniencia de rotación de logs: – Mejor información – Mejor rendimiento ● Parámetros en postgresql.conf – Dónde y cómo – Cuándo – Qué
  • 64. Catálogo del Sistema ● Conjunto de tablas y vistas: constituyen un diccionario con metadatos ● Catálogo compartido (todo el cluster): – Pocas tablas: pg_databases, pg_shadow, pg_group ... ● Catálogo de cada base de datos: la mayoría de tablas y vistas. Esquemas: – pg_catalog – pg_toast
  • 65. Monitorización (I) ● De la actividad de la base de datos – Por comandos del sistema operativo – Usando el recolector de estadísticas – Consultado pg_locks – Compilarlo con traza dinámica ● Del uso de los discos
  • 66. Monitorización: actividad base datos (II) ● Por comandos del sistema operativo – ps – top – vmstat – iostat – free
  • 67. Monitorización: actividad base de datos (III) ● Uso del recolector de estadísticas: – Información de: ● Acceso a las tablas e índices ● Instrucciones ejecutadas ● Lecturas de disco ● Uso de la caché, etc. – postgresql.conf: start_stat_collector – Tipos: ● pg_stat*: frecuencias y tipos de accesos ● pg_statio*: entrada/salida física ● pg_locks: bloqueos y transacciones
  • 68. Monitorización: uso de los discos (IV) ● Controlado por postgresql: el dba no tiene control ● Fichero inicial (heap) y fichero de desborde (toast) ● Formas de contro: – Vistas del catálogo – Extensiones “contrib”: ● dbsize ● oid2name
  • 69. Afinamiento, mejora del rendimiento (I) ● Gestión del diario (WAL) – checkpoint_segments – checkpoint_timeout ● Buffers de diario (caché WAL) – wal_buffers – fsync / wal_sync_method – commit_delay
  • 70. Afinamiento, mejora del rendimiento (II) ● Caché de base de datos – Minimizar acceso a disco – Aumentar shared_buffers (shmmax, shmmni, shmall) – Uso de vistas pg_statio* ● Acceso a discos – Reindex, vacuum, autovacuum – Uso de tablespaces – Control de toast
  • 71. Afinamiento, mejora del rendimiento (III) ● Optimización de consultas – Elementos: ● Analizador (análisis sintáctico y semántico) ● Planificador (generación planes ejecución) ● Optimizador (búsqueda plan más económico) – Uso de índices (btree, rtree, hash, GiST) para búsquedas y ordenaciones – Uso de EXPLAIN para ver el plan de ejecución
  • 72. Otros aspectos ● Pseudo-columnas del sistema: oid, ctid, tableoid ... ● Secuencias para Pks ● Tipos básicos especiales: point, polygon, cidr, macaddr, etc. ● Tipos compuestos ● Herencia de tablas: de datos, no de estructura.
  • 73. Próximos pasos ● Consultar documentación de PostgreSQL ● Buscar en proyectos de PostgreSQL ● Curso para Desarrolladores (programación con PostgreSQL) ● Curso de optimización SQL ● Cluster, alta disponibilidad, balanceo de carga, etc.
  • 74. Resumen ● Objetivos ● Plan del curso ● Metodología y Materiales ● Desarrollo del curso ● Próximos pasos
  • 75. FIN ● Conclusiones ● Opiniones del curso a alarcon_jos@gva.es Muchas gracias José M. Alarcón Medina