SlideShare una empresa de Scribd logo
1 de 34
Monitoreo y Tunning
   Ing. Lennin Caro Pérez
Pasos para entonar...

                        Probar




   Documentar
                                 Entonar
Hardware... el primer punto
   Componentes básicos
     Procesador
     Memoria RAM
     Disco – E/S
     Red

   Cada equipo es diferente
     Auque esten configurados igual, son diferentes
     Para cada de base de datos existe un equipo
       OLTP
       OLAP
       Web
Procesador
   Hoy en día las aplicaciones están relacionadas
 con los procesadores
    Cualquier actividad genera E/S hasta la escritura en disco
   Cuantos nucleos necesito para ejecutar consultas
     PostgreSQL es multi-procesador
       Cada núcleo solo puede procesar una consulta a la vez
     Lo mejor es realizar maximo dos consultas por nucleo
   Si puedes aumentar la cantidad de procesadores ...
 Hazlo
     No tienes que pagar licencias por procesadores adicionales
Tips del Procesador
   Procesador
    Los multiprocesadores simétricos no son perfectos
     En ocasiones es mejor tener mas procesadores con
    menos núcleos
    Características de los procesadores
      Velocidad
      Los que tienen mas memoria L2 son mejores
      Los de 64 bit pueden mejorar considerablemente el
    rendimiento

        Especialmente cuando se use mas de 4 Gb de RAM
        Pero no siempre es la solución al bajo rendimiento
Memoria RAM
  Usar la memoria necesaria es un caso de ensayo
y error
   Mientras estes cerca (1% de diferencia) de la cantidad de
  memoria que necesitas tu servidor sera rapido.
   Estar mas alla del 2% de lo necesario bajaria el rendimiento

  Limites mas críticos
    Tienes la RAM suficiente para mantener en share_buffers la
  base de datos
       Aproximadamente 6 veces el tamaño de la base de datos
    Tienes la RAM suficiente para mantener la base de datos en
  el cache
      Aproximadamente de 2 a 3 veces el tamaño en disco de la
    base de datos
E/S el cuello de botella
  Cual es el límite de E/S de tu base de datos
    Alto volumen de escrituras
      Escritura del log por cada transacción
    Base de datos mas grandes que la RAM (aprox. 3 veces)
       Cada consulta sera afectada por el límite de E/S
  Optimiza la E/S
     Si la base de datos es muy grande, invierte en discos
     Calcula cuánto tarda en escribir en disco un bloque de datos
     Calcula cuánto tarda en leer toda la base de datos desde el
   disco
     Revisa cuantos log de transacciones se generan
El camino del hardware
La Red
  Posibles cuellos de botella
   Tiempo de respuesta
   Ancho de banda
   Switches mal configurados u obsoletos

  Conexiones dedicadas
   Entre el aplicativo y el servidor de BD
   Entre el servidor de BD y el de replica o de recuperación de
  desastres
   Varias interfaces de conexion

  Transferencias de archivos
   Conexiones Gigabits o Megabits
   Calcular la capacidad de transferencia para la copia de la
  data, los dumps, los logs y los WAL
Prueba tu HW
  Herramientas para comprobar tu HW
   Procesador: PassMark, sysbench, Spec CPU
   Memroia RAM: memtest, cachebench, Stream
   E/S: bonnie++, dd, iozone
   Red: bwping, netperf
   Base de datos: pgBench, sysbench


  Prueba el HW antes de montar tu BD
   Prueba y compara antes de comprar
   Involucra a tus administradores de sistemas en la toma de
  decisión
   No creas en todo lo que te venden
   Prueba nuevamente
   Y por ultimo prueba de nuevo y compara
Mitos...
   Todos los discos son iguales
    Asi sean de la misma marca y hasta el mismo modelo
   Todos las tarjetas de RAID son iguales
   Todos los sistemas operativos son iguales
    Asi sean la misma versión y tipo
   Una pieza mal configurada o en mal estado no
 puede inutilizar tu sistema
   Las estadísticas te van a decir todo
   Los vendedores siempre dicen la verdad
   No existe un lugar donde te puedan ayudar con tu
 manejador de base de datos PostgreSQL
   No busques la combinación correcta, comprala
Y el Sistema Operativo.....
     Sistemas operativos recomendados
        Free BSD
        GNU/Linux (Debian)
        Red Hat
        Solaris
        Unix


     Metodos de sync para los sistemas operativos
   Platform       open_datasync fdatasync fsync_writethrough   fsync   open_sync
Linux                  No          Sí             No            Sí        Directo
Mac OS X/Darwin        No          No             Sí            Sí     Sí (Directo?)
Solaris                Sí          Sí             No            Sí          Yes
BSD/OS                 No          No             No            Sí     Sí (Directo?)
FreeBSD                No          No             No            Sí     Sí (Directo?)
Separa el log de transacciones
 Directorio de pg_xlog
 Tener un arreglo de disco puede mejorar el rendimiento entre
un 10% y 50%

Tablespaces en discos distintos
 Para tablespace que contengan tablas muy grandes
 Para tablespace que contengan tablas particionadas
 Para tablespace que tengan indices grandes
 Para tablespace que tengan indices paticionados

     Tablespace diferente para las tablas que tengán más
  transacciones que otras.
     Tablespace diferente para las tablas que sean más grandes
  que otras.
Entonación en GNU/Linux
  Sistema de Archivos
   XFS para base de datos grandes
   Raiser para base de datos pequeñas
   Etx2
     No es seguro cuando sucede una caida
   Etx3
      Mas lenta que ext2 pero mas segura ya que tiene Journalling
   Etx4
      Presenta un bug con el fsync
   NFS o cualquier sistema de archivos remoto
       No tiene el mismo archivo manejo semántico del sistema de
    archivos local, y pueden causar problemas de fiabilidad de los datos
    o la recuperación de fallas
Sistema Operativo
 Modifica los valores de tu kernel en el sistema operativo
    Shmmax y shmall
 Verifica la versión del kernel para mejorar el rendimiento
    Versión superior a 2.6
 Verifica las opciones de los puntos de montura
    data = writeback, noatime, nodiratime
  Ubica los puntos de monturas PM en diferentes discos o
arreglos
    Crea la base de datos en un PM diferente
    Crea enlaces simbolicos para colocar las tablas en PM diferentes
    Crea enlaces simbolicos para ubicar los índices
    Mueve las tablas que realicen mucho en JOIN a PM diferentes
    Coloca los WAL en un PM diferente
Monitoreo
  Monitorea pro-activamente
   Conoce el rendimiento de tu equipo antes de que sea crítico
   Planifica tus alertas
     Más alla del 80% es problemático
   Monitorea todo
     Uso de los procesadores (y sus cores)
     Discos que mas escriben
     Discos que mas se leen
     Uso de la memoria
     Horas picos o de alto impacto para el servidor


   Usa las herramientas que quieras
     nagios, cacti, reconnitor, Hyperic, OpenNMS
Entonación de PostgreSQL
  shared_buffers
   Usa una pequeña parte de la memoria
   Cuanto se usa de la memoria
      Entre el 15% y el 25% en servidores dedicados
      Calcular acierto del buffer en PostgreSQL 9 “EXPLAIN (ANALYZE
    ON, BUFFERS ON) SELECT ...“
      Calcular acierto del buffer en versiones anteriores “select
    datname, blks_read, blks_hit from pg_stat_database;”


  work_mem
   Para consultas de ordenamiento, tipo hash entre otras
      Entre 32 MB y 64 MB
   Detecta una mala configuración
      Muchos SWAP: el parametro esta muy alto
      Archivos temporales de log: parametro muy bajo
Entonación de PostgreSQL
  maintenance_work_mem
   Usada para los bulks de carga de datos, vacuum, entre otros
     Entre 256 MB y 1 GB
   Usada para la creación de indices
   Permite que el vacuum sea más rapido
     Pero cuidado si se estan ejecutando multiples vacuum
  wal_buffers
   Es la memoria usada por el WAL (Write Ahead Log)
     8 MB para los SMP
Transacciones
  effective_io_concurrency
   Solo si el sistema operativo soporta E/S asincronas
      Número de discos/canales

  synchronous_commit
   La velocidad es más importante que la integridad
      Coloca el parametro synchronous_commit = off
      Puedes perder data en un apagado abrupto del sistema

  checkpoint_segment
    Cuantos segmentos de log de 8MB se crean antes del
  proximo checkpoint
      Usa 16, 64, 128 (es cuestion de probar)
Consultas
  effective_cache_size
    Estimado de la memoria disponible para guardar en
  shared_buffers y cache del sistema de archivo
      2/3 del total de RAM
  default_statistics_target
   Aumenta entre 200 a 1000 para base de datos grandes
   El valor por omisión es de 100
   Actualizar las estadísticas pr columnas es mejor

  log_statement
    Si quieres saber que consultas se ejcutan y el tiempo que
  tardan.
      log_statement=all
      Esto genera una carga adicional de escritura en el log
Mantenimientos
  Autovacuum
   Activalo para aplicaciones con base de datos OLTP
   No es recomendable para base de datos OLAP
   Asegurate de incluir la opción analyze
   Para versiones de 8.2 y menores usar esta configuración:

      stats_start_collector = on
      stats_block_level = on
      stats_row_level = on
      Autovacuum = on


   Para monitorear los autovacuum
       SELECt schemaname, relname, last_autovacuum,
    last_autoanalyze FROM pg_stat_all_tables;
Mantenimientos
  Verificar los disparadores de Autovacuum
    Para verificar cuando se ejcutara el autovacuum y cuando se
  ejecutó existen un grupo de consultas:
      SELECT max(age(datfrozenxid)) FROM pg_database;
     SELECT datname,age(datfrozenxid) from pg_database ORDER BY
   age(datfrozenxid) DESC;
     SELECT relname, age(relfrozenxid) FROM pg_class WHERE
   relkind = 'r' ORDE BY age(relfrozenxid) DESC;
Mantenimientos
  Vacuum
    Puedes ejecutar Vacuum manualmente sobre tablas que
  tengan un gran número de inserciones o actualizaciones
    Si no se mantiene un Vacuum continuo el planner de
  consultas puede tomar un camino equivocado
    Existen varios tipos de Vacuum

     Full: Para obtener mas espacio pero toma mucho mas tiempo
     Freeze: Es más agresivo contra las tuplas ya que buscas las que
   tengan datos “Freezing”
     Verbose: Muestra el detalle de las acciones realizadas
     Analyze: Actualiza las estadísticas usadas por el planner para
   determinar el mejor camino
Recomendaciones
  Diseño de los esquemas
    No optimice prematuramente
    Analiza cuales tablas tendrán mayor volumen de inserciones,
  consultas o actualizaciones
    Existe una gran variedad de tipos de datos, elige la que mejor
  responda a la necesidad
    Los tipos de datos BLOB son muy lento, usalos con cuidado


  Indices
    Indexa las llaves foranes
    Indexa los criterios mas comunes para los WHERE
    Indexa los criterios agreagados (expresiones)
    Verifica los demás metodos de indexación (expressions, full
  text, partial) y busca el más adecuado para tu necesidad
Recomendaciones
  No indexes todo
    Los indices significan mayor carga al realizar las inserciones,
  el borrado y las actualizaciones
    Demasiados indices en la misma tabla pueden ocasionar
  problemas al planner
    Las tablas pequeñas no necesitan indices, revisa su
  cardinalidad
    Verifica los indices actuales y cuales se estan usando


      Usa el catálogo pg_stat_user_indexes
   Verifica las tablas que son hacen SEQUENCIAL SCAN y
  hacer muchas actualizaciones y borrados de datos
      Usa el catálogo pg_stat_user_tables
Recomendaciones
  Particiones
   Particiona las tablas que son muy grandes
     Ubica el campo candidato para realizar la partición
     Si tienes muchas consultas donde un campo tiene poca
   cardinalidad (valores Sí/No) y este es usado constantemente en el
   WHERE particiona la tabla o usa indices particionados


  Consultas
   Prueba usar NOT IN o NOT EXISTS para consultas lentas
   Optimiza para consultas en cache
     Aumenta o disminuye el valor de seq_page_cost y
   random_page_cost en una sesion de trabajo y verifica el resultado
   Deshabilita las opciones de optiomización
     En raras ocasiones el planner se equivoca, pero no cuesta nada
   probar
Recomendaciones
  Explain Analize
   Verifica como se resuelven tus consultas
   Verifica si existe un conteo de registros equivocado
   Verifica los sequencial scan que se realizan
   Verifica si existe un conteo alto de loops
   Trata de re-excribir las consulta con un mal plan de ejecución
Optimización de consultas
            Revisa pg_stat_statement




 Aplica las                         Ejecuta Explain
                                    Analize en las
 correciones
                                    consultas
                                    lentas




               Modifica las
               consultas lentas o
               loas parametros
Optimización de procedimientos
               Revisa pg_stat_function




                                    Ubica los
 Aplica las
                                    procedimientos
 correciones                        mas lentos




           Localiza las
           operaciones lentas
Los catálogos
  Nombre del Catalogo                                    Proposito
pg_aggregate            funciones de agregado
pg_am                   índice de acceso a métodos
pg_amop                 los operadores del método de acceso
pg_amproc               procedimientos de acceso método de apoyo
pg_attrdef              valores de las columnas por defecto
pg_attribute            columnas de la tabla (los "atributos")
pg_authid               identificadores de autorización (roles)
pg_auth_members         autorización de las relaciones de identificación de miembro
pg_cast                 moldes (conversiones de tipos de datos)
pg_class                tablas, índices, secuencias, vistas ("relaciones")
                        restricciones de comprobación, restricciones únicas, restricciones de
pg_constraint
                        clave principal, las claves foráneas
pg_collation            colaciones (información local)
pg_conversion           conversión de codificación de la información
pg_database             bases de datos dentro de este cluster de base de datos
pg_db_role_setting      por función y por base de datos configuración
pg_default_acl          privilegios por defecto para los tipos de objetos
pg_depend               dependencias entre los objetos de base de datos
pg_description          descripciones o comentarios sobre los objetos de base de datos
pg_enum                 enumeración de etiquetas y definiciones de valores
pg_extension            extensiones instaladas
pg_foreign_data_wrapper extranjeros-los datos de definiciones de envoltura
pg_foreign_server       las definiciones de servidor extranjero
Nombre del Catalogo                                      Proposito
pg_foreign_table          información adicional tabla externa
pg_index                  información adicional de índices
pg_inherits               tabla de jerarquía de herencia
pg_language               idiomas para la escritura de funciones
pg_largeobject            páginas de datos de objetos de gran tamaño
pg_largeobject_metadata   metadatos para objetos de gran tamaño
pg_namespace              esquemas
pg_opclass                acceder a las clases método del operador
pg_operator               los operadores
pg_opfamily               acceso de las familias método del operador
pg_pltemplate             datos de la plantilla de las lenguas de procedimiento
pg_proc                   funciones y procedimientos
pg_rewrite                reglas de consulta escribir
pg_seclabel               etiquetas de seguridad en los objetos de base de datos
pg_shdepend               las dependencias de objetos compartidos
pg_shdescription          comentarios sobre los objetos compartidos
pg_statistic              estadísticas de planificador
pg_tablespace             espacios de tablas dentro de este grupo de base de datos
pg_trigger                desencadenantes
pg_ts_config              configuraciones de búsqueda de texto
pg_ts_config_map          asignaciones de las configuraciones de búsqueda de texto 'token
pg_ts_dict                diccionarios de búsqueda de texto
pg_ts_parser              analizadores de búsqueda de texto
pg_ts_template            plantillas de texto de búsqueda
pg_type                   los tipos de datos
pg_user_mapping           asignaciones de usuarios a los servidores extranjeros
Preguntas
Contacto:
lennin.caro@yahoo.com
@lennincaro
+58 412-5826767
  Enlaces
   http://www.postgresql.org/docs/
   PostgreSQL en español
      http://archives.postgresql.org/pgsql-es-ayuda/
    PostgreSQL Performance
      http://archives.postgresql.org/pgsql-performance/


        Esta charla es Copyleft 2011 Lennin Caro Pérez, y esta bajo los
        atributos de la licencia creative commons
Muchas gracias...

Más contenido relacionado

La actualidad más candente

Alta Disponibilidad con PostgreSQL
Alta Disponibilidad con PostgreSQLAlta Disponibilidad con PostgreSQL
Alta Disponibilidad con PostgreSQLCarlos Gustavo Ruiz
 
Administración de Memoria en UNIX
Administración de Memoria en UNIXAdministración de Memoria en UNIX
Administración de Memoria en UNIXNatalia Ludeña
 
Monousuarios y multiusuarios
Monousuarios y multiusuariosMonousuarios y multiusuarios
Monousuarios y multiusuariosjuliananena
 
Como instalar Unix(Johanna)
Como instalar Unix(Johanna)Como instalar Unix(Johanna)
Como instalar Unix(Johanna)JohannaCamila
 
Replicacion Postgresql
Replicacion PostgresqlReplicacion Postgresql
Replicacion Postgresqljockbrera
 
Componentes internos del computador (Palma)
Componentes internos del computador (Palma)Componentes internos del computador (Palma)
Componentes internos del computador (Palma)Rogue4lchemist
 
Instalar unix Euller Yugsan 108 bb72
Instalar unix Euller Yugsan 108 bb72Instalar unix Euller Yugsan 108 bb72
Instalar unix Euller Yugsan 108 bb72Euller108BB72
 
Sandra saldaña instalarunix
Sandra saldaña instalarunixSandra saldaña instalarunix
Sandra saldaña instalarunixsandrasal23
 
Miranda castillo UNIX
Miranda castillo UNIXMiranda castillo UNIX
Miranda castillo UNIXmiranda696
 

La actualidad más candente (17)

Alta Disponibilidad con PostgreSQL
Alta Disponibilidad con PostgreSQLAlta Disponibilidad con PostgreSQL
Alta Disponibilidad con PostgreSQL
 
Administración de Memoria en UNIX
Administración de Memoria en UNIXAdministración de Memoria en UNIX
Administración de Memoria en UNIX
 
Monousuarios y multiusuarios
Monousuarios y multiusuariosMonousuarios y multiusuarios
Monousuarios y multiusuarios
 
Como instalar Unix(Johanna)
Como instalar Unix(Johanna)Como instalar Unix(Johanna)
Como instalar Unix(Johanna)
 
Replicacion Postgresql
Replicacion PostgresqlReplicacion Postgresql
Replicacion Postgresql
 
Caracteristicas del nifs y fat 32
Caracteristicas del nifs y fat 32Caracteristicas del nifs y fat 32
Caracteristicas del nifs y fat 32
 
Componentes internos del computador (Palma)
Componentes internos del computador (Palma)Componentes internos del computador (Palma)
Componentes internos del computador (Palma)
 
Nicolle
NicolleNicolle
Nicolle
 
Jadira palta
Jadira paltaJadira palta
Jadira palta
 
Instalar unix Euller Yugsan 108 bb72
Instalar unix Euller Yugsan 108 bb72Instalar unix Euller Yugsan 108 bb72
Instalar unix Euller Yugsan 108 bb72
 
Ronald
RonaldRonald
Ronald
 
Sandra saldaña instalarunix
Sandra saldaña instalarunixSandra saldaña instalarunix
Sandra saldaña instalarunix
 
Instalar unixElvis Urquizo
Instalar unixElvis UrquizoInstalar unixElvis Urquizo
Instalar unixElvis Urquizo
 
Viviana medina MATERIA
Viviana medina MATERIAViviana medina MATERIA
Viviana medina MATERIA
 
Linux
LinuxLinux
Linux
 
Mis comandos favoritos en linux parte 2
Mis comandos favoritos en linux parte 2Mis comandos favoritos en linux parte 2
Mis comandos favoritos en linux parte 2
 
Miranda castillo UNIX
Miranda castillo UNIXMiranda castillo UNIX
Miranda castillo UNIX
 

Similar a Monitoreo tunning postgresql_2011

File System Management
File System ManagementFile System Management
File System ManagementJuan Sánchez
 
Entendiendo el sistema de almacenamiento de datos y SQL Server
Entendiendo el sistema de almacenamiento de datos y SQL ServerEntendiendo el sistema de almacenamiento de datos y SQL Server
Entendiendo el sistema de almacenamiento de datos y SQL ServerJoseph Lopez
 
Que es la bios kim y erikaa
Que es la bios kim y erikaaQue es la bios kim y erikaa
Que es la bios kim y erikaaocampoerika1
 
Que es la bios kim y erikaa
Que es la bios kim y erikaaQue es la bios kim y erikaa
Que es la bios kim y erikaaocampoerika1
 
Participacion planificacion de disco raid
Participacion planificacion de disco raidParticipacion planificacion de disco raid
Participacion planificacion de disco raidpcarcamo1984
 
Administración de Memoria - Sistemas Operativos
Administración de Memoria - Sistemas OperativosAdministración de Memoria - Sistemas Operativos
Administración de Memoria - Sistemas OperativosPablo Macon
 
Almacenamiento y estructura de archivos
Almacenamiento y estructura de archivosAlmacenamiento y estructura de archivos
Almacenamiento y estructura de archivosgmelinita
 
Propiedades del sistema daniela
Propiedades del sistema   danielaPropiedades del sistema   daniela
Propiedades del sistema danielaDaniela Noriega
 
Formación en Almacenamiento, Open Storage Soluciones Low Cost.
Formación en Almacenamiento, Open Storage Soluciones Low Cost.Formación en Almacenamiento, Open Storage Soluciones Low Cost.
Formación en Almacenamiento, Open Storage Soluciones Low Cost.Strelia Technology Services
 
Introduccion a la Arquitectura de Oracle. Z052 02
Introduccion a la Arquitectura de Oracle. Z052 02Introduccion a la Arquitectura de Oracle. Z052 02
Introduccion a la Arquitectura de Oracle. Z052 02Alexander Calderón
 
LAS COMPUTADORAS
LAS COMPUTADORASLAS COMPUTADORAS
LAS COMPUTADORAScirodagnny
 
Sistema operativo punto 3
Sistema operativo punto 3Sistema operativo punto 3
Sistema operativo punto 3Eliza Muñoz
 
Sistema de archivos y almacenamiento secundario
Sistema de archivos y almacenamiento secundarioSistema de archivos y almacenamiento secundario
Sistema de archivos y almacenamiento secundarioSusan Cuellar Silva
 

Similar a Monitoreo tunning postgresql_2011 (20)

File System Management
File System ManagementFile System Management
File System Management
 
Entendiendo el sistema de almacenamiento de datos y SQL Server
Entendiendo el sistema de almacenamiento de datos y SQL ServerEntendiendo el sistema de almacenamiento de datos y SQL Server
Entendiendo el sistema de almacenamiento de datos y SQL Server
 
Que es la bios kim y erikaa
Que es la bios kim y erikaaQue es la bios kim y erikaa
Que es la bios kim y erikaa
 
Que es la bios kim y erikaa
Que es la bios kim y erikaaQue es la bios kim y erikaa
Que es la bios kim y erikaa
 
Participacion planificacion de disco raid
Participacion planificacion de disco raidParticipacion planificacion de disco raid
Participacion planificacion de disco raid
 
Fundamentos de servidores informáticos
Fundamentos de servidores informáticosFundamentos de servidores informáticos
Fundamentos de servidores informáticos
 
Administración de Memoria - Sistemas Operativos
Administración de Memoria - Sistemas OperativosAdministración de Memoria - Sistemas Operativos
Administración de Memoria - Sistemas Operativos
 
TC3
TC3TC3
TC3
 
Terminos de computación2
Terminos de computación2Terminos de computación2
Terminos de computación2
 
Almacenamiento y estructura de archivos
Almacenamiento y estructura de archivosAlmacenamiento y estructura de archivos
Almacenamiento y estructura de archivos
 
Rivadeneira
RivadeneiraRivadeneira
Rivadeneira
 
Propiedades del sistema daniela
Propiedades del sistema   danielaPropiedades del sistema   daniela
Propiedades del sistema daniela
 
Formación en Almacenamiento, Open Storage Soluciones Low Cost.
Formación en Almacenamiento, Open Storage Soluciones Low Cost.Formación en Almacenamiento, Open Storage Soluciones Low Cost.
Formación en Almacenamiento, Open Storage Soluciones Low Cost.
 
Oracle
OracleOracle
Oracle
 
Introduccion a la Arquitectura de Oracle. Z052 02
Introduccion a la Arquitectura de Oracle. Z052 02Introduccion a la Arquitectura de Oracle. Z052 02
Introduccion a la Arquitectura de Oracle. Z052 02
 
LAS COMPUTADORAS
LAS COMPUTADORASLAS COMPUTADORAS
LAS COMPUTADORAS
 
Ortiz Perez Angel Arso Pec1
Ortiz Perez Angel Arso Pec1Ortiz Perez Angel Arso Pec1
Ortiz Perez Angel Arso Pec1
 
Sistema operativo punto 3
Sistema operativo punto 3Sistema operativo punto 3
Sistema operativo punto 3
 
Sistema de archivos y almacenamiento secundario
Sistema de archivos y almacenamiento secundarioSistema de archivos y almacenamiento secundario
Sistema de archivos y almacenamiento secundario
 
Niveles riad
Niveles riadNiveles riad
Niveles riad
 

Último

9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
Herramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxHerramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxRogerPrieto3
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 

Último (15)

9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
Herramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxHerramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptx
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 

Monitoreo tunning postgresql_2011

  • 1. Monitoreo y Tunning Ing. Lennin Caro Pérez
  • 2.
  • 3. Pasos para entonar... Probar Documentar Entonar
  • 4. Hardware... el primer punto Componentes básicos Procesador Memoria RAM Disco – E/S Red Cada equipo es diferente Auque esten configurados igual, son diferentes Para cada de base de datos existe un equipo OLTP OLAP Web
  • 5. Procesador Hoy en día las aplicaciones están relacionadas con los procesadores Cualquier actividad genera E/S hasta la escritura en disco Cuantos nucleos necesito para ejecutar consultas PostgreSQL es multi-procesador Cada núcleo solo puede procesar una consulta a la vez Lo mejor es realizar maximo dos consultas por nucleo Si puedes aumentar la cantidad de procesadores ... Hazlo No tienes que pagar licencias por procesadores adicionales
  • 6. Tips del Procesador Procesador Los multiprocesadores simétricos no son perfectos En ocasiones es mejor tener mas procesadores con menos núcleos Características de los procesadores Velocidad Los que tienen mas memoria L2 son mejores Los de 64 bit pueden mejorar considerablemente el rendimiento Especialmente cuando se use mas de 4 Gb de RAM Pero no siempre es la solución al bajo rendimiento
  • 7. Memoria RAM Usar la memoria necesaria es un caso de ensayo y error Mientras estes cerca (1% de diferencia) de la cantidad de memoria que necesitas tu servidor sera rapido. Estar mas alla del 2% de lo necesario bajaria el rendimiento Limites mas críticos Tienes la RAM suficiente para mantener en share_buffers la base de datos Aproximadamente 6 veces el tamaño de la base de datos Tienes la RAM suficiente para mantener la base de datos en el cache Aproximadamente de 2 a 3 veces el tamaño en disco de la base de datos
  • 8. E/S el cuello de botella Cual es el límite de E/S de tu base de datos Alto volumen de escrituras Escritura del log por cada transacción Base de datos mas grandes que la RAM (aprox. 3 veces) Cada consulta sera afectada por el límite de E/S Optimiza la E/S Si la base de datos es muy grande, invierte en discos Calcula cuánto tarda en escribir en disco un bloque de datos Calcula cuánto tarda en leer toda la base de datos desde el disco Revisa cuantos log de transacciones se generan
  • 9. El camino del hardware
  • 10. La Red Posibles cuellos de botella Tiempo de respuesta Ancho de banda Switches mal configurados u obsoletos Conexiones dedicadas Entre el aplicativo y el servidor de BD Entre el servidor de BD y el de replica o de recuperación de desastres Varias interfaces de conexion Transferencias de archivos Conexiones Gigabits o Megabits Calcular la capacidad de transferencia para la copia de la data, los dumps, los logs y los WAL
  • 11. Prueba tu HW Herramientas para comprobar tu HW Procesador: PassMark, sysbench, Spec CPU Memroia RAM: memtest, cachebench, Stream E/S: bonnie++, dd, iozone Red: bwping, netperf Base de datos: pgBench, sysbench Prueba el HW antes de montar tu BD Prueba y compara antes de comprar Involucra a tus administradores de sistemas en la toma de decisión No creas en todo lo que te venden Prueba nuevamente Y por ultimo prueba de nuevo y compara
  • 12. Mitos... Todos los discos son iguales Asi sean de la misma marca y hasta el mismo modelo Todos las tarjetas de RAID son iguales Todos los sistemas operativos son iguales Asi sean la misma versión y tipo Una pieza mal configurada o en mal estado no puede inutilizar tu sistema Las estadísticas te van a decir todo Los vendedores siempre dicen la verdad No existe un lugar donde te puedan ayudar con tu manejador de base de datos PostgreSQL No busques la combinación correcta, comprala
  • 13. Y el Sistema Operativo..... Sistemas operativos recomendados Free BSD GNU/Linux (Debian) Red Hat Solaris Unix Metodos de sync para los sistemas operativos Platform open_datasync fdatasync fsync_writethrough fsync open_sync Linux No Sí No Sí Directo Mac OS X/Darwin No No Sí Sí Sí (Directo?) Solaris Sí Sí No Sí Yes BSD/OS No No No Sí Sí (Directo?) FreeBSD No No No Sí Sí (Directo?)
  • 14. Separa el log de transacciones Directorio de pg_xlog Tener un arreglo de disco puede mejorar el rendimiento entre un 10% y 50% Tablespaces en discos distintos Para tablespace que contengan tablas muy grandes Para tablespace que contengan tablas particionadas Para tablespace que tengan indices grandes Para tablespace que tengan indices paticionados Tablespace diferente para las tablas que tengán más transacciones que otras. Tablespace diferente para las tablas que sean más grandes que otras.
  • 15. Entonación en GNU/Linux Sistema de Archivos XFS para base de datos grandes Raiser para base de datos pequeñas Etx2 No es seguro cuando sucede una caida Etx3 Mas lenta que ext2 pero mas segura ya que tiene Journalling Etx4 Presenta un bug con el fsync NFS o cualquier sistema de archivos remoto No tiene el mismo archivo manejo semántico del sistema de archivos local, y pueden causar problemas de fiabilidad de los datos o la recuperación de fallas
  • 16. Sistema Operativo Modifica los valores de tu kernel en el sistema operativo Shmmax y shmall Verifica la versión del kernel para mejorar el rendimiento Versión superior a 2.6 Verifica las opciones de los puntos de montura data = writeback, noatime, nodiratime Ubica los puntos de monturas PM en diferentes discos o arreglos Crea la base de datos en un PM diferente Crea enlaces simbolicos para colocar las tablas en PM diferentes Crea enlaces simbolicos para ubicar los índices Mueve las tablas que realicen mucho en JOIN a PM diferentes Coloca los WAL en un PM diferente
  • 17. Monitoreo Monitorea pro-activamente Conoce el rendimiento de tu equipo antes de que sea crítico Planifica tus alertas Más alla del 80% es problemático Monitorea todo Uso de los procesadores (y sus cores) Discos que mas escriben Discos que mas se leen Uso de la memoria Horas picos o de alto impacto para el servidor Usa las herramientas que quieras nagios, cacti, reconnitor, Hyperic, OpenNMS
  • 18. Entonación de PostgreSQL shared_buffers Usa una pequeña parte de la memoria Cuanto se usa de la memoria Entre el 15% y el 25% en servidores dedicados Calcular acierto del buffer en PostgreSQL 9 “EXPLAIN (ANALYZE ON, BUFFERS ON) SELECT ...“ Calcular acierto del buffer en versiones anteriores “select datname, blks_read, blks_hit from pg_stat_database;” work_mem Para consultas de ordenamiento, tipo hash entre otras Entre 32 MB y 64 MB Detecta una mala configuración Muchos SWAP: el parametro esta muy alto Archivos temporales de log: parametro muy bajo
  • 19. Entonación de PostgreSQL maintenance_work_mem Usada para los bulks de carga de datos, vacuum, entre otros Entre 256 MB y 1 GB Usada para la creación de indices Permite que el vacuum sea más rapido Pero cuidado si se estan ejecutando multiples vacuum wal_buffers Es la memoria usada por el WAL (Write Ahead Log) 8 MB para los SMP
  • 20. Transacciones effective_io_concurrency Solo si el sistema operativo soporta E/S asincronas Número de discos/canales synchronous_commit La velocidad es más importante que la integridad Coloca el parametro synchronous_commit = off Puedes perder data en un apagado abrupto del sistema checkpoint_segment Cuantos segmentos de log de 8MB se crean antes del proximo checkpoint Usa 16, 64, 128 (es cuestion de probar)
  • 21. Consultas effective_cache_size Estimado de la memoria disponible para guardar en shared_buffers y cache del sistema de archivo 2/3 del total de RAM default_statistics_target Aumenta entre 200 a 1000 para base de datos grandes El valor por omisión es de 100 Actualizar las estadísticas pr columnas es mejor log_statement Si quieres saber que consultas se ejcutan y el tiempo que tardan. log_statement=all Esto genera una carga adicional de escritura en el log
  • 22. Mantenimientos Autovacuum Activalo para aplicaciones con base de datos OLTP No es recomendable para base de datos OLAP Asegurate de incluir la opción analyze Para versiones de 8.2 y menores usar esta configuración: stats_start_collector = on stats_block_level = on stats_row_level = on Autovacuum = on Para monitorear los autovacuum SELECt schemaname, relname, last_autovacuum, last_autoanalyze FROM pg_stat_all_tables;
  • 23. Mantenimientos Verificar los disparadores de Autovacuum Para verificar cuando se ejcutara el autovacuum y cuando se ejecutó existen un grupo de consultas: SELECT max(age(datfrozenxid)) FROM pg_database; SELECT datname,age(datfrozenxid) from pg_database ORDER BY age(datfrozenxid) DESC; SELECT relname, age(relfrozenxid) FROM pg_class WHERE relkind = 'r' ORDE BY age(relfrozenxid) DESC;
  • 24. Mantenimientos Vacuum Puedes ejecutar Vacuum manualmente sobre tablas que tengan un gran número de inserciones o actualizaciones Si no se mantiene un Vacuum continuo el planner de consultas puede tomar un camino equivocado Existen varios tipos de Vacuum Full: Para obtener mas espacio pero toma mucho mas tiempo Freeze: Es más agresivo contra las tuplas ya que buscas las que tengan datos “Freezing” Verbose: Muestra el detalle de las acciones realizadas Analyze: Actualiza las estadísticas usadas por el planner para determinar el mejor camino
  • 25. Recomendaciones Diseño de los esquemas No optimice prematuramente Analiza cuales tablas tendrán mayor volumen de inserciones, consultas o actualizaciones Existe una gran variedad de tipos de datos, elige la que mejor responda a la necesidad Los tipos de datos BLOB son muy lento, usalos con cuidado Indices Indexa las llaves foranes Indexa los criterios mas comunes para los WHERE Indexa los criterios agreagados (expresiones) Verifica los demás metodos de indexación (expressions, full text, partial) y busca el más adecuado para tu necesidad
  • 26. Recomendaciones No indexes todo Los indices significan mayor carga al realizar las inserciones, el borrado y las actualizaciones Demasiados indices en la misma tabla pueden ocasionar problemas al planner Las tablas pequeñas no necesitan indices, revisa su cardinalidad Verifica los indices actuales y cuales se estan usando Usa el catálogo pg_stat_user_indexes Verifica las tablas que son hacen SEQUENCIAL SCAN y hacer muchas actualizaciones y borrados de datos Usa el catálogo pg_stat_user_tables
  • 27. Recomendaciones Particiones Particiona las tablas que son muy grandes Ubica el campo candidato para realizar la partición Si tienes muchas consultas donde un campo tiene poca cardinalidad (valores Sí/No) y este es usado constantemente en el WHERE particiona la tabla o usa indices particionados Consultas Prueba usar NOT IN o NOT EXISTS para consultas lentas Optimiza para consultas en cache Aumenta o disminuye el valor de seq_page_cost y random_page_cost en una sesion de trabajo y verifica el resultado Deshabilita las opciones de optiomización En raras ocasiones el planner se equivoca, pero no cuesta nada probar
  • 28. Recomendaciones Explain Analize Verifica como se resuelven tus consultas Verifica si existe un conteo de registros equivocado Verifica los sequencial scan que se realizan Verifica si existe un conteo alto de loops Trata de re-excribir las consulta con un mal plan de ejecución
  • 29. Optimización de consultas Revisa pg_stat_statement Aplica las Ejecuta Explain Analize en las correciones consultas lentas Modifica las consultas lentas o loas parametros
  • 30. Optimización de procedimientos Revisa pg_stat_function Ubica los Aplica las procedimientos correciones mas lentos Localiza las operaciones lentas
  • 31. Los catálogos Nombre del Catalogo Proposito pg_aggregate funciones de agregado pg_am índice de acceso a métodos pg_amop los operadores del método de acceso pg_amproc procedimientos de acceso método de apoyo pg_attrdef valores de las columnas por defecto pg_attribute columnas de la tabla (los "atributos") pg_authid identificadores de autorización (roles) pg_auth_members autorización de las relaciones de identificación de miembro pg_cast moldes (conversiones de tipos de datos) pg_class tablas, índices, secuencias, vistas ("relaciones") restricciones de comprobación, restricciones únicas, restricciones de pg_constraint clave principal, las claves foráneas pg_collation colaciones (información local) pg_conversion conversión de codificación de la información pg_database bases de datos dentro de este cluster de base de datos pg_db_role_setting por función y por base de datos configuración pg_default_acl privilegios por defecto para los tipos de objetos pg_depend dependencias entre los objetos de base de datos pg_description descripciones o comentarios sobre los objetos de base de datos pg_enum enumeración de etiquetas y definiciones de valores pg_extension extensiones instaladas pg_foreign_data_wrapper extranjeros-los datos de definiciones de envoltura pg_foreign_server las definiciones de servidor extranjero
  • 32. Nombre del Catalogo Proposito pg_foreign_table información adicional tabla externa pg_index información adicional de índices pg_inherits tabla de jerarquía de herencia pg_language idiomas para la escritura de funciones pg_largeobject páginas de datos de objetos de gran tamaño pg_largeobject_metadata metadatos para objetos de gran tamaño pg_namespace esquemas pg_opclass acceder a las clases método del operador pg_operator los operadores pg_opfamily acceso de las familias método del operador pg_pltemplate datos de la plantilla de las lenguas de procedimiento pg_proc funciones y procedimientos pg_rewrite reglas de consulta escribir pg_seclabel etiquetas de seguridad en los objetos de base de datos pg_shdepend las dependencias de objetos compartidos pg_shdescription comentarios sobre los objetos compartidos pg_statistic estadísticas de planificador pg_tablespace espacios de tablas dentro de este grupo de base de datos pg_trigger desencadenantes pg_ts_config configuraciones de búsqueda de texto pg_ts_config_map asignaciones de las configuraciones de búsqueda de texto 'token pg_ts_dict diccionarios de búsqueda de texto pg_ts_parser analizadores de búsqueda de texto pg_ts_template plantillas de texto de búsqueda pg_type los tipos de datos pg_user_mapping asignaciones de usuarios a los servidores extranjeros
  • 33. Preguntas Contacto: lennin.caro@yahoo.com @lennincaro +58 412-5826767 Enlaces http://www.postgresql.org/docs/ PostgreSQL en español http://archives.postgresql.org/pgsql-es-ayuda/ PostgreSQL Performance http://archives.postgresql.org/pgsql-performance/ Esta charla es Copyleft 2011 Lennin Caro Pérez, y esta bajo los atributos de la licencia creative commons

Notas del editor

  1. Verificar el balance 2009
  2. Verificar el balance 2009
  3. Verificar el balance 2009
  4. Verificar el balance 2009
  5. Verificar el balance 2009
  6. Verificar el balance 2009
  7. Verificar el balance 2009
  8. Verificar el balance 2009
  9. Verificar el balance 2009
  10. Verificar el balance 2009
  11. Verificar el balance 2009
  12. Verificar el balance 2009
  13. Verificar el balance 2009
  14. Verificar el balance 2009
  15. Verificar el balance 2009
  16. Verificar el balance 2009
  17. Verificar el balance 2009
  18. Verificar el balance 2009
  19. Verificar el balance 2009
  20. Verificar el balance 2009
  21. Verificar el balance 2009
  22. Verificar el balance 2009
  23. Verificar el balance 2009
  24. Verificar el balance 2009
  25. Verificar el balance 2009
  26. Verificar el balance 2009
  27. Verificar el balance 2009
  28. Verificar el balance 2009
  29. Verificar el balance 2009
  30. Verificar el balance 2009
  31. Verificar el balance 2009
  32. Verificar el balance 2009
  33. Verificar el balance 2009
  34. Verificar el balance 2009