Máxima Performance Postgresql. Disertante: Emanuel Calvo Franco. Año: 2009

Documentos relacionados
SQL++ Consideraciones para desarrolladores Capacitación PostgreSQL

2. Mediante la tabla pg_class, vamos a ver cómo afecta los comandos analyze y vacuum a las tablas.

CAPACITACIÓN Y CONSULTORÍA

Tablas internas 1-12

PROGRAMANDO UNA BASE DE DATOS PostgreSQL ADMINISTRACIÓN INTRODUCCIÓN (L32)

Universidad Nacional de Costa Rica Administración de Bases de Datos

ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA Programación de sitios web Act 11: Reconocimiento de la unidad 3

Postgresql 8.4 ~ Monitorización. Explorando las capacidades del servidor

Entendiendo y Optimizando MySQL

Nociones de performance

UNA MIRADA AL AFINAMIENTO DE POSTGRESQL

Bases de Datos: Structured Query Language (SQL)

5- Uso de sentencias avanzadas

Curso SQL Nivel Avanzado 1. Miguel Jurado García

AUTENTICACIÓN: DETERMINAR SI EL USUARIOS ES QUIÉN DICE SER AUTORIZACIÓN: DETERMINA A CUÁLES OBJETOS TIENE ACCESO EL USUARIO

OPTIMIZACIÓN DE CONSULTAS EN SQL. Análisis de Consultas y Transacciones Ajuste de Indices Ajuste de Consultas

Procesamiento de Consultas. Carlos A. Olarte BDII

CURSO DE SQL SERVER 2005

PostgreSQL. Capacitación Nivel 1 Día 3

Herramientas para la optimización

Structured Query Language (SQL) Fundamentos de Bases de Datos InCo

Procesamiento y Optimización de consultas Material Preliminar en preparación

Motores MySQL. José Manuel Gómez. Departamento de Lenguajes y Sistemas Informáticos

Práctica 3. Consultas SQL

TUTORIAL OPERADOR CUBE

Introducción al álgebra relacional. Con ejemplos en SQL

MANUAL DE USUARIO TARIFICADOR SIPTAR Y REPORTES SIPTAR.

Bases de Datos 2. Teórico

Principios de diseño de bases de datos. Introducción

Estándar de desarrollo de aplicaciones del Govern de les Illes Balears

Publicación del sitio web en internet. Equipo 6

Son objetos cuya función es el tratamiento de varios registros exclusivamente durante la ejecución de un programa.

DataBase Administration

Introducción a PostgreSQL con PHP

Base de datos relacional

INVENTARIO INTRODUCCIÓN RESUMEN DE PASOS

Antes de cargar el contenido del fichero, aprovechamos para fijarnos en los archivos WAL, que ya más adelante comentaremos con más detalle.

Manual de NetBeans y XAMPP

Unidad III: Lenguaje de manipulación de datos (DML) 3.1 Inserción, eliminación y modificación de registros

Antivirus Avira. Inguralde [Enero 2011]

QUÉ ES UNA BASE DE DATOS Y CUÁLES SON LOS PRINCIPALES TIPOS? EJEMPLOS: MYSQL, SQLSERVER, ORACLE, POSTGRESQL, INFORMIX (DV00204A)

aula) 1. Introducción 2. Instalación en el servidor

Práctica Virtual Box.

MANUAL DE USUARIO TARIFICADOR SIPTAR Y REPORTES SIPTAR.

SQL (Structured Query Language)

Curso Online de Oracle 10g

Qué es una máquina virtual?

INTRODUCCIÓN INTRODUCCIÓN INTRODUCCIÓN INTRODUCCIÓN INSTRUCCIONES DE DEFINICIÓN DE TABLAS E ÍNDICES INSTRUCCIONES DE DEFINICIÓN DE TABLAS E ÍNDICES

La Gestión Operativa: La Clave del Éxito.

Trabajos de Ampliación. Bases de datos NoSQL.

Práctica 2 de Microsoft Access

Consultas con combinaciones

Sintaxis: CURSOR nombre_cursor[(param1 [IN] tipo1,... )] IS consulta ;

Bases de datos: Sistemas de bases de datos:

Microsoft FrontPage XP

Bases de datos relacionales y el modelo entidad-relación

Paso del E-R a tablas

Álvaro Herrera Modelamiento Avanzado de Datos con PostgreSQL

A.1. Definiciones de datos en SQL

Introducción a las tablas dinámicas

TEMA 20: CONCEPTOS BÁSICOS DE SQL

T12 Vistas y tablas temporales

Sistemas de Datos. Rendimiento de la Base de datos. Procesamiento de consultas y administración del rendimiento

El catalogo del sistema. Bibliografía: Introducción a los Sistemas de Bases de Datos Date, C.J.

Restricciones de Integridad

Nivel 1 Este es el nivel de soporte inicial, responsable de las incidencias básicas del cliente. El principal trabajo de un especialista de Nivel 1

Restricciones (constraints) FOREIGN KEY

Aviso Legal El presente libro electrónico se distribuye bajo Attribution-NonCommercial- NoDerivs 3.0 Unported

SQL: Lenguaje de acceso a bases de datos

Rawel E. Luciano B Sistema Operativo III. 2- Instalación de Open SUSE Desktop. José Doñe

Informática I Notas del curso

Base de Datos Oracle 10g: Introducción a SQL Código: D Duración: 5 días (40 horas)

Ernesto Quiñones A.

Curso de seguridad informática en el entorno docente. Sesión 4. PONENTE: Jaime López Soto.

Hadoop. Cómo vender un cluster Hadoop?

Capítulo 1. Introducción

HERRAMIENTAS DE ACCESS ACCESS Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

LABORATORIO 10. Concurrencia y bloqueos en el SMBD Oracle

Oracle 12c DISEÑO Y PROGRAMACIÓN

Paso 1 Define los objetivos.

Si queremos modificar la contraseña de sys, una vez que accedamos al sistema como sys, escribiremos la sentencia:

TEMA 4.6: Procesamiento y optimización de consultas

SQL Los fundamentos del lenguaje

Administración de la producción. Sesión 11: Gestor de Base de Datos (Access)

Construyendo gráficos estadísticos con ayuda de Microsoft Excel

CONSULTAS MULTITABLAS SQL SERVER Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

Eficiencia energética en la industria farmacéutica

A continuación se presenta la forma en que se puede conectar PHP con el gestor de bases de datos MySQL.

Base de datos en la Enseñanza. Open Office

6 - Recuperar algunos registros (where)

Diseño y Admón. de Bases de Datos. Ingeniería Informática curso 2010/11

Optimizar base de datos WordPress

APUNTES: APLICACIONES WEB BASADAS EN PHP Y MYSQL Página 1 de 5

Modelo de capacitación en la línea de desarrollo de software de la empresa DESOFT

Sub consultas avanzadas

Capacitación Regístrelo Cosméticos

BLOG: PUNTADA A PUNTADA

DESARROLLO DE UN SISTEMA DE INFORMACIÓN PARA LA ADMINISTRACIÓN DE UN COLEGIO

Curso Online de Microsoft

La visualización de la ventana de Word tiene las siguientes partes:

Transcripción:

Máxima Performance Postgresql Disertante: Emanuel Calvo Franco. Año: 2009

Nuevo temario Entendiendo el EXPLAIN. Actualizar Recolectar estadísticas. Indices. Performance Tips.

Explain es tu amigo Permite ir más allá de ejecutar consultas. Ayuda a comprender que es lo que puede estar fallando del servidor. No siempre la consulta más elegante es la más performante :)

Resumen Este comando permite visualizar y entender cual es la forma en que el optimizador analiza y devuelve los resultados. Es de gran ayuda cuando queremos ver posibles defectos en la arquitectura de nuestra base de datos.

Sintáxis: # EXPLAIN [ANALYZE] [VERBOSE] <query> Insert Update select

Conceptos básicos Coste Operador Tiempo (no vamos a entrar en explicaciones filosóficas de que es esto :) Tamaño de datos (esto podría tener una explicación más extensa, pero es entendible de solo pensar en ella)

Coste Cost( 1ra fila ultima) de acuerdo a valores de coste explícitos en el postgresql.conf

Operadores Seq Scan Nested Loop Index scan Merge Join Sort (*work_mem) Hash and Hash Join Unique Group Limit Aggregate Subquery Scan and Subplan Append Tid Scan (raro) Result Materialize

EXPLAIN y EXPLAIN ANALYZE

Más operadores del ANALYZE select * from accounts a, history h where a.aid = h.aid;

Manipulando el optimizador Desactivamos la búsqueda por escaneo de índices?

Clean & Update me! VACUUM VACUUM FULL VACUUM ANALYZE ANALYZE REINDEX Reacomodan tuplas muertas Acumulan estadísticas Cualquier consulta, ejecuten \h VACUUM \ ANALYZE

Estadísticas El catálogo contiene las estadísticas de acceso, campos frecuentes y demás de todos los objetos del CLUSTER.

Ejemplo práctico de estadísticas. Tener en cuenta de tener las estadísticas bien actualizadas (ANALYZE y VACUUM).

Frecuencia de valores A mayor frecuencia de aparición, favorecerá que el optimizador opte por el seqscan Por sobre otros operadores :O

Cantidad de valores distintos.

Deseo más estadísticas! ALTER TABLE chares ALTER COLUMN texto SET STATISTICS 10;

I/O por objeto pg_statio_all_indexes pg_statio_sys_indexes pg_statio_user_indexes pg_statio_all_sequences pg_statio_sys_sequences pg_statio_user_sequences pg_statio_all_tables pg_statio_sys_tables pg_statio_user_tables

Índices Btree (binario) Gin (mejor para texto) GIST (datos complejos) Comunes Por expresion o funcionales Hash (no recomendable aún) CREATE INDEX ix_accounts1 ON accounts USING hash (aid) tablespace ts_indices;

Índices funcionales CREATE INDEX ix_chares_func ON chares (hashtext(texto));

Incidencia de NULLs en Índices parapruebas=# update chares set texto = NULL where texto ~ '^1[1 2 3]';

Performance Tablespaces dedicados a objetos. RAID si o si en servidores. Economía? RAID0 con PITR. Bases chicas, normalizar en buen nivel y redundar información con vistas materializadas. Después de grandes cambios en los datos, correr VACCUM y ANALYZE. CREATE TABLE AS o CLUSTER permitirá que las lecturas en los índices más rápida.

Performance Influencie el optimizador para detectar posibles discrepancias en el resultado a través de las variables CPU_INDEX_TUPLE, CPU_OPERATOR_COST, CPU_TUPLE_COST, EFFECTIVE_CACHE_SIZE, RANDOM_PAGE_COST. Minimice la carga de red y de las máquinas locales haciendo la mayor parte del trabajo en el servidor. Esto incluye los procedimientos, funciones, disparadores.

Performance Prefiera utilizar multinucleos para Postgres, el sistema de forks permite una distribución en los recursos. Si utiliza 'large objects' realice seguido vacuum_lo (incluido en los contrib). Trate de utilizar FreeBSD para sistemas medianos y Solaris para sistemas de buenos recursos. PL/Perl es un exelente lenguaje para realizar tareas complejas y eficientes.

Performance Pgbench es una buena herramienta para medir y mejorar nuestra configuración.

Monitoreando sistema #!/bin/bash ipcs -m head -4 echo iostat 1 1 echo vmstat echo free echo ps -efwwa grep post staty.sh # watch interval=1./staty.sh

ZFS y XFS Las estadísticas demuestran que XFS tiene mejor rendimiento que el resto de los formatos de partición de Linux. ZFS permite realizar tareas más complejas y avanzadas.

Comparaciones

Comparaciones

Gracias Pipol!