Sunteți pe pagina 1din 75

Administracin de PostgreSQL

Jose M. Alarcn Medina (ITI - Formacin)


Resumen
Objetivos
Plan del curso
Metodologa y Materiales
Desarrollo del curso
Prximos pasos
Objetivos
Proporcionar a los profesionales
responsables de las bases de datos los
conocimientos para la instalacin y
administracin de una base de datos
PostgreSQL.
El alumno al finalizar el curso sabr cmo
instalar PostgreSQL, configurar el entorno
as como administrar los recursos que
proporciona la base de datos.
Plan del curso (I)
Dia I:
Presentacin e Introduccin
Estructura fsica y lgica
Da II:
Instalacin y Desinstalacin
Puesta en marcha
Da III:
Seguridad
Procesamiento de instrucciones y transacciones
Plan del curso (y II)
Da IV:
Configuracin
Copias de seguridad y respaldo
Tareas administrativas
Da V:
Rendimiento
Monitorizacin
Afinamiento
Catlogo del Sistema
Otros temas
Metodologa y Materiales
Metodologa:
Las clases terico-prcticas.
Servidor central al que puedan conectarse los alumnos, as como
instalaciones en sus ordenadores.
Se proporcionaran ejercicios para realizar las prcticas.
El alumno al finalizar el curso sabr cmo instalar PostgreSQL,
configurar el entorno as como administrar los recursos que
proporciona la base de datos.
Materiales:
Manual del curso
Boletines de prcticas con soluciones
Scripts de ayuda y ejemplo
http://www.uv.es/alarmedi/iti2007
Desarrollo del Curso
Introduccin
Presentacin
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 Fsica
Zona Memoria Compartida
Socket de TCP/IP
Almacenamiento en disco
INITDB: Creacin del cluster
Ficheros
Directorios
Estructura PostgreSQL initdb (III)
Opciones:
[-D, --pgdata=]DATADIR ubicacin para este cluster de bases de datos

-E, --encoding=CODIFICACION codificacin por omisin para nuevas bases de datos

--locale=LOCALE inicializar usando esta configuracin local

-A, --auth=METODO mtodo de autentificacin por omisin 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 Lgica
Bases de Datos
Tablespaces
Roles de grupo
Roles de login
Forman el CLUSTER DE BASE DE DATOS
Estructura Lgica:
Creacin bases de datos (V)
$ createdb [OPCIN]... [NOMBRE] [DESCRIPCIN]

Opciones:

-D, --tablespace=TBLSPC tablespace por omisin de la base de datos


-E, --encoding=CODIFICACIN codificacin para la base de datos
-O, --owner=DUEO usuario que ser dueo de la base de datos
-T, --template=PATRN base de datos patrn a copiar
-e, --echo mostrar los comandos enviados al servidor
-q, --quiet no desplegar mensajes
--help mostrar esta ayuda y salir
--version mostrar el nmero de versin y salir

Opciones de conexin:
-h, --host=ANFITRIN nombre del servidor o directorio del socket
-p, --port=PUERTO puerto del servidor
-U, --username=USUARIO nombre de usuario para la conexin
-W, --password preguntar la contrasea

Si no se especifica, se crear una base de datos con el mismo nombre que el


usuario actual.
Estructura Lgica:
Creacin bases de datos (VI)
Desde SQL:

CREATE DATABASE name


[ [ WITH ] [ OWNER [=] dbowner ]
[ TEMPLATE [=] template ]
[ ENCODING [=] encoding ]
[ TABLESPACE [=] tablespace ]
[ CONNECTION LIMIT [=] connlimit ] ];
Estructura Lgica:
Creacin usuarios y roles (VII)
createuser [OPCIN]... [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 lmite de conexiones para el rol
(predeterminado: sin lmite)
-P, --pwprompt asignar una contrasea al nuevo rol
-E, --encrypted almacenar la constrasea cifrada
-N, --unencrypted almacenar la contrasea sin cifrar
-e, --echo mostrar los comandos a medida que se ejecutan
-q, --quiet no escribir ningn mensaje
--help desplegar esta ayuda y salir
--version desplegar informacin de versin y salir
Estructura Lgica:
Creacin usuarios y roles (VIII)
... Continuacin

createuser [OPCIN]... [ROL]

Opciones de conexin:
-h, --host=ANFITRIN 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 contrasea 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 Lgica:
Creacin de tablespaces (y IX)
CREATE TABLESPACE tablespacename
[ OWNER username ]
LOCATION 'directory'
Instalacin / Desinstalacin (I)
Instalacin para Windows
Instalacin para Linux
Desde paquetes
Debian (apt-get)
RedHat SUSE (rpm)
Desde ficheros fuente
Instalacin / Desinstalacin
Desde ficheros fuente (II)
Instalacin
Decisiones iniciales
Requerimientos de instalacin y hardware
Configuracin del entorno
Descarga del software
Compilacin y enlazado
Configuracin del usuario propietario
Instalacin de un cliente
Desinstalacin
Instalacin / Desinstalacin
Migraciones (III)
Migraciones
Sin conservar el cluster
Conservando el cluster
Instalacin de varios PostgreSQL en el
mismo servidor
Instalacin / Desinstalacin
Ms cosas (y IV)
Configuracin:
Parmetros del Kernel
Parmetros de funcionamiento
Instalacin 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 automtica
Puesta en Marcha
postmaster - postgres (II)
postmaster [OPCION]...

Opciones:

-B NBUFFERS nmero de bfers de memoria compartida


-c VAR=VALOR definir parmetro de ejecucin
-d 1-5 nivel de depuracin
-D DATADIR directorio de bases de datos
-e usar estilo europeo de fechas (DMY)
-F desactivar fsync
-h NOMBRE nombre de host o direccin IP en que escuchar
-i activar conexiones TCP/IP
-k DIRECTORIO ubicacin del socket Unix
-N MAX-CONN nmero mximo de conexiones permitidas
-o OPCIONES pasar OPCIONES a cada proceso servidor (obsoleto)
-p PUERTO nmero de puerto en el cual escuchar
-s mostrar estadsticas despus de cada consulta
-S WORK-MEM mostrar cantidad de memoria para ordenamientos (en kB)
--NOMBRE=VALOR definir parmetro de ejecucin
--describe-config
mostrar parmetros de configuracin y salir
--help desplegar esta ayuda y salir
--version desplegar nmero de versin 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 despus de salida anormal
-O permitir cambios en estructura de tablas de sistema
-P desactivar ndices de sistema
-t pa|pl|ex mostrar tiempos despus de cada consulta
-T enviar SIGSTOP a todos los backends si uno de ellos muere
-W NM espera NM 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 omisin es el nombre de usuario)
-d 0-5 nivel de depuracin
-E mostrar las consultas antes de su ejecucin
-j no usar saltos de lnea como delimitadores de consulta
-r ARCHIVO enviar salida estndar 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 estndar 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-DETENCIN]
pg_ctl restart [-w] [-D DATADIR] [-s] [-m MODO-DETENCIN] [-o OPCIONES]
pg_ctl reload [-D DATADIR] [-s]
pg_ctl status [-D DATADIR]
pg_ctl kill NOMBRE-SEAL ID-DE-PROCESO

Opciones comunes:
-D, --pgdata DATADIR ubicacin del rea de almacenamiento de datos
-s, --silent mostrar slo errores, no mensajes de informacin
-w esperar hasta que la operacin se haya completado
-W no esperar hasta que la operacin se haya completado
--help mostrar este texto y salir
--version mostrar informacin sobre versin y salir
(Por omisin se espera para las detenciones, pero no los inicios o reinicios)

Si la opcin -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 parmetros de lnea 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)
--- continuacin

Empleo:
pg_ctl start [-w] [-D DATADIR] [-s] [-l ARCHIVO] [-o OPCIONES]
pg_ctl stop [-W] [-D DATADIR] [-s] [-m MODO-DETENCIN]
pg_ctl restart [-w] [-D DATADIR] [-s] [-m MODO-DETENCIN] [-o OPCIONES]
pg_ctl reload [-D DATADIR] [-s]
pg_ctl status [-D DATADIR]
pg_ctl kill NOMBRE-SEAL ID-DE-PROCESO

Opciones para detencin y reinicio:


-m MODO-DE-DETENCIN puede ser smart, fast o immediate

Modos de detencin son:


smart salir despus que todos los clientes se hayan desconectado
fast salir directamente, con apagado apropiado
immediate salir sin apagado completo; se ejecutar recuperacin
en el prximo inicio

Nombres de seales permitidos para kill:


HUP INT QUIT ABRT TERM USR1 USR2
Seguridad en PostgreSQL
Seguridad en la gestin de ficheros
Seguridad en el acceso de los clientes
Seguridad lgica: privilegios
Seguridad: Gestin de ficheros

Ficheros binarios
Ficheros $PGDATA (cluster)
Ficheros de tablespaces
Ficheros de configuracin
Socket para conexiones locales
Seguridad: Acceso clientes (I)
Ficheros de configuracin:
pg_hba.conf
pg_ident.conf
Fichero pg_hba.conf: configuracin de
autenticacin
TIPO BASE DATOS USUARIO DIRECCION METODO
LOCAL <base datos> <usuario> <metodo-autenticacion [opcin]
HOST <base datos> <usuario> <direccionCIDR> <metodo-autenticacion [opcin]
HOSTSSL <base datos> <usuario> <direccionCIDR> <metodo-autenticacion [opcin]
HOSTNOSSL <base datos> <usuario> <direccionCIDR> <metodo-autenticacion [opcin]
Seguridad: Acceso clientes (II)
Mtodos de autenticacin:
Trust
Reject
Password
Crypt
MD5
KRB5
Ident (sameuser / mapeo usuario -> pg_ident.conf)
PAM
LDAP
Seguridad: Nivel lgico
Creacin de roles (superuser, createuser,
createdb)
GRANT y REVOKE:
Bases de datos
Tablespaces
Lenguajes
Esquemas
Tablas y vistas
Procedimientos y funciones
Procesamiento de Instrucciones (I)

Ejecucin de sentencias (envio, anlisis,


preparacin, ejecucin y recuperacin)
Elementos que intervienen:
Shared Buffers (lista sucia)
Discos
Buffers WAL
Ficheros WAL
Procesamiento de Instrucciones (y II)
Gestin de transacciones (I)
Cumplimiento reglas ACID:
Atomicidad (atomicity)
Consistencia (consistency)
Aislamiento (isolatio)
Persistencia (durability)
Gestin transacciones: Atomicidad (II)

Todo o nada
BEGIN / COMMIT / ROLLBACK
Restricciones inmediatas o diferidas
Modo autoconfirmacin
SAVEPOINT
BEGIN;
operaciones1
SAVEPOINT paso2;
operaciones2
si error => ROLLBACK paso2;
operaciones3
COMMIT;
Gestin transacciones: Consistencia (III)

Reglas de integridad:
Not null
Check
Unique
Primary Key
Foreign Key: nicas que son diferibles:
[DEFERRABLE]
[INITIALLY {INMEDIATE | DEFERRED}]
Gestin transacciones: Consistencia (IV)

Foreign Key:
[DEFERRABLE]
[INITIALLY {INMEDIATE | DEFERRED}]
Deferrable: el punto de comprobacin se puede
cambiar dinmicamente
Inmediate: se comprueba despus de cada
sentencia SQL
Deferred: la comprobacin se realiza al final de
la transaccin.
Gestin 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 transaccin ve una
instantnea de la BD tal como era al
empezar la transaccin.
Lectores y escritores no necesitan
esperarse.
Gestin transacciones: Aislamiento (V)

Niveles Aislamiento SQL92:

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 (fcil deadlock)

Bloqueos sobre tablas


a nivel de tabla
a nivel de fila
Gestin transacciones: Persistencia (y VI)

Ficheros WAL (Write-ahead loggin):


ficheros de escritura adelantada.
Ficheros de 16Mb
Procesos REDO / UNDO
Configuracin entorno de ejecucin (I)

Gestin de recursos del Kernel, parmetros:


SHMMAX, SHMMIN, SHMALL, SHMSEG,
SHMNI
SEMMNI, SEMMNS, SEMMSL, SEMMAP,
SEMVMX
Configuracin entorno de ejecucin (II)

Fichero postgresql.conf
Activacin de la modificacin de valores:
Con el servidor en marcha (SET)
Recargando el fichero (pg_ctl reload)
Reiniciando el servidor (pg_ctl restart)
Configuracin entorno - postgresql.conf (III)

Ubicacin de ficheros
Conexin
listen_adresses
Port
max_connections
superuser_reserved_connections
unix_socket_directory
Seguridad y autenticado
ssl
Configuracin 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
Configuracin entorno - postgresql.conf (V)

Ajuste de rendimiento de consultas


Errores / fichero de seguimiento
Lugar de seguimiento
Cundo se efecta
Qu se registra
Estadsticas (recoleccin)
Vacuum
Conexin cliente
search_path
default_transaction_isolation
datestyle
client_encoding
Configuracin entorno - postgresql.conf (y VI)

Gestin de bloqueos
deadlock_timeout

Opciones predefinidas
slo se pueden cambiar en la instalacin
block_size
integer_datetime
lc_collate, lc_ctype
max_identifier_length
max_ident_keys
server_encoding
Internacionalizacin y localizacin (I)

Mensajes en varios idiomas


Mensajes en varios juegos de caracteres
Diversos tipos de ordenaciones
Clasificacin de caracteres
Formatos de monedas, fechas, etc.

<idioma>_<ubicacion>.<cjto_caracteres>@<modificadores>
Codificacin: 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 migracin es posible que
estos dos juegos sean distintos. Ejemplo
estado actual: base de datos en UTF8 y
aplicaciones en ISO-8859-1/15
Codificacin: ejemplos problemas (III)

Error al usar codificaciones distintas:


Espaa (UTF8) --> Espaa (Latin1)
Jess Prez (Latin1) --> Jes?s P?ez (UTF8)
Cundo se puede dar este problema?:
Terminales distintas
Uso de editores incorrectos
Transmisiones de ficheros: FTP, CVS ...
Copias de seguridad y Recuperacin (I)

Copias de seguridad
Recuperacin de datos
Migracin 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 lnea y recuperacin 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
Ms flexible
Con pg_restore se puede crear archivo SQL.
Copias de seguridad pg_dump (IV)
Uso: pg_dump [OPCIN]... [NOMBREDB]

Opciones generales:
-f, --file=ARCHIVO nombre del archivo de salida
-F, --format=c|t|p Formato del archivo de salida
(personalizado, tar, slo texto)
-i, --ignore-version procede an cuando las versiones del servidor
y pg_dump no coinciden
-Z, --compress=0-9 nivel de compresin para formatos comprimidos

Opciones que controlan el contenido de la salida:


-a, --data-only extrae slo los datos, no el esquema
-b, --blobs incluye objetos grandes en la extraccin
-C, --create incluye comandos para crear la base de datos
en la extraccin
-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 codificacin CODIFIC
-n, --schema=ESQUEMA extrae slo el esquema nombrado
-N, --exclude-schema=ESQUEMA
NO extrae el o los esquemas listados
-o, --oids incluye OIDs en la extraccin
-O, --no-owner en formato de slo texto, no reestablecer
los dueos de los objetos
-s, --schema-only extrae slo el esquema, no los datos
-t, --table=TABLE extrae slo 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 [OPCIN]... [NOMBREDB]

Opciones de la conexin:
-h, --host=ANFITRIN anfitrin de la base de datos o el
directorio del enchufe (socket)
-p, --port=PUERTO nmero del puerto de la base de datos
-U, --username=USUARIO nombre de usuario con el cual conectarse
-W, --password fuerza un prompt para la contrasea
(debera ser automtico)

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
redireccin
No permite formatos: siempre texto plano
Opcin '-g': exportar objetos globales
Copias de seguridad pg_dumpall (VII)
Uso: pg_dumpall [OPCIN]...

Opciones que controlan el contenido de la salida:


-a, --data-only extrae slo 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 slo los objetos globales, no bases de datos
-o, --oids incluye OIDs en la extraccin
-O, --no-owner no reestablece los dueos de los objetos
-s, --schema-only extrae slo el esquema, no los datos
-S, --superuser=NAME especifica el nombre del superusuario a usar en el guin
-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 conexin:

-h, --host=ANFITRIN anfitrin de la base de datos o el directorio del enchufe (socket)


-p, --port=PUERTO nmero del puerto de la base de datos
-U, --username=USUARIO nombre de usuario con el cual conectarse
-W, --password fuerza un prompt para la contrasea (debera ser automtico)
Recuperacin 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 lnea y recuperacin PITR
Habilitar archivado WAL
Copias de seguridad en lnea
Recuperacin PITR
Recuperacin Datos: Volcado Lnea + PITR (y II)

Habilitar archivado WAL


Parmetro archive_command
Copias de seguridad en lnea
Select pg_start_backup('nombre_backup');
Copia fsica
Select pg_stop_backup();
Recuperacin PITR
Parar base datos
Recuperar copia fsica
Copiar ficheros WAL de la copia
Fichero recovery.conf
Arrancar base datos
COPY TO / COPY FROM

Copiar datos de una consulta Copiar datos de un fichero a


a un fichero una tabla

COPY tablename [ ( column [, ...] ) ] COPY { tablename [ ( column [, ...] ) ] | ( query ) }


FROM { 'filename' | STDIN } TO { 'filename' | STDOUT }
[ [ WITH ] [ [ WITH ]
[ BINARY ] [ BINARY ]
[ OIDS ] [ HEADER ]
[ DELIMITER [ AS ] 'delimiter' ] [ OIDS ]
[ NULL [ AS ] 'null string' ] [ DELIMITER [ AS ] 'delimiter' ]
[ CSV [ HEADER ] [ NULL [ AS ] 'null string' ]
[ QUOTE [ AS ] 'quote' ] [ CSV [ HEADER ] [ QUOTE [ AS ] 'quote' ]
[ ESCAPE [ AS ] 'escape' ] [ ESCAPE [ AS ] 'escape' ]
[ FORCE NOT NULL column [, ...] ]; [ FORCE QUOTE column [, ...] ];
VACUUM (I)

Funciones:
Recuperar espacio en disco (filas modificadas
o borradas)
Actualizar estadsticas
Evitar prdidas 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 rotacin de logs:
Mejor informacin
Mejor rendimiento
Parmetros en postgresql.conf
Dnde y cmo
Cundo
Qu
Catlogo del Sistema

Conjunto de tablas y vistas: constituyen un


diccionario con metadatos
Catlogo compartido (todo el cluster):
Pocas tablas: pg_databases, pg_shadow,
pg_group ...
Catlogo de cada base de datos: la mayora
de tablas y vistas. Esquemas:
pg_catalog
pg_toast
Monitorizacin (I)

De la actividad de la base de datos


Por comandos del sistema operativo
Usando el recolector de estadsticas
Consultado pg_locks
Compilarlo con traza dinmica
Del uso de los discos
Monitorizacin: actividad base datos (II)

Por comandos del sistema operativo


ps
top
vmstat
iostat
free
Monitorizacin: actividad base de datos (III)

Uso del recolector de estadsticas:


Informacin 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 fsica
pg_locks: bloqueos y transacciones
Monitorizacin: 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 catlogo
Extensiones contrib:
dbsize
oid2name
Afinamiento, mejora del rendimiento (I)

Gestin 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)
Optimizacin de consultas
Elementos:
Analizador (anlisis sintctico y semntico)
Planificador (generacin planes ejecucin)
Optimizador (bsqueda plan ms econmico)
Uso de ndices (btree, rtree, hash, GiST) para
bsquedas y ordenaciones
Uso de EXPLAIN para ver el plan de ejecucin
Otros aspectos
Pseudo-columnas del sistema: oid, ctid,
tableoid ...
Secuencias para Pks
Tipos bsicos especiales: point, polygon,
cidr, macaddr, etc.
Tipos compuestos
Herencia de tablas: de datos, no de
estructura.
Prximos pasos
Consultar documentacin de PostgreSQL
Buscar en proyectos de PostgreSQL
Curso para Desarrolladores (programacin
con PostgreSQL)
Curso de optimizacin SQL
Cluster, alta disponibilidad, balanceo de
carga, etc.
Resumen
Objetivos
Plan del curso
Metodologa y Materiales
Desarrollo del curso
Prximos pasos
FIN

Conclusiones
Opiniones del curso a alarcon_jos@gva.es

Muchas gracias
Jos M. Alarcn Medina

S-ar putea să vă placă și