Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Novedades_de_PostgreSQL11.pdf

OnGres
October 03, 2018

 Novedades_de_PostgreSQL11.pdf

Novedades de PostgreSQL 11

Vídeo: https://www.youtube.com/watch?v=1yhPplv1zSo

PostgreSQL es la base de datos de código abierto más avanzada del mundo. ¡En efecto!
Con cada nueva versión, hay muchas nuevas y emocionantes funciones y mejoras,
¿quieres saber cuáles son esas características? Entonces no te pierdas esta charla.

En esta charla, realizará un recorrido por las funciones de PostgreSQL 11
con los siguientes temas tratados:

Mejoras en el paralelismo.
Procedimientos almacenados.
Muchas mejoras de rendimiento.
Compilación Just-In-Time (JIT).
Mejoras de particionamiento.
¡Y mucho más!

Note: Esta charla fue realizada para el Meetup de PostgreSQL España (https://www.meetup.com/PostgreSQL-Espana/events/254958828/),
el contenido se encuentra en español.

-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

New features of PostgreSQL 11

Video: https://www.youtube.com/watch?v=1yhPplv1zSo

PostgreSQL is the world’s most advanced open source database. Indeed!
With every new release there are many exciting new features and improvements,
do you want to know what are those features? then don't miss this talk.

In this talk you will take a tour to the features in PostgreSQL 11
with this topics covered:

Improvements in parallelism.
Stored Procedures.
Many performance improvements.
Just-In-Time (JIT) compilation.
Partitioning improvements.
And many more!

Note: This talk was made for the Meetup of PostgreSQL España (https://www.meetup.com/PostgreSQL-Espana/events/254958828/),
the content and talk are in Spanish.

OnGres

October 03, 2018
Tweet

More Decks by OnGres

Other Decks in Technology

Transcript

  1. Novedades de PostgreSQL 11 Jorge Solórzano Almanza Java Software Developer

    y DBA en OnGres PostgreSQL JDBC Driver Contributor @pg_jorsol Acerca de...
  2. Novedades de PostgreSQL 11 Disclaimer ► The views expressed herein

    are those of the presenter only; they do not necessarily reflect the views of my employer nor the PostgreSQL community. ► This presentation contains statements which are, or may be deemed to be “forward-looking statements” which are prospective in nature.
  3. Novedades de PostgreSQL 11 Calendario de desarrollo ► Agosto 2017

    – rama 10 ► Septiembre 2017 – CF1 ► Noviembre 2017 – CF2 ► Enero 2018 – CF3 ► Marzo 2018 – CF4 ► 24 Mayo 2018 – Beta 1 ► 28 Junio 2018 – Beta 2 ► 09 Agosto 2018 – Beta 3 ► 20 Septiembre 2018 – Beta 4 ► 11 Octubre 2018 – RC1 18 Octubre 2018 – GA?
  4. Novedades de PostgreSQL 11 Áreas de mejoras ► Paralelismo ►

    Procedimientos almacenados ► Rendimiento general ► Particionamiento ► SQL ► Varios
  5. Novedades de PostgreSQL 11 Incompatibilidades ► pg_dump/pg_restore permite restaurar todos

    los aspectos de la base de datos. ► Cláusula WITH de CREATE FUNCTION eliminada. ► Eliminadas funciones de contrib/adminpack pg_file_read(), pg_file_length(), and pg_logfile_rotate(). ► Módulo contrib/chkpass eliminado.
  6. Novedades de PostgreSQL 11 Incompatibilidades ► Columnas de catálogos eliminadas

    o reemplazadas. ► Función to_number() modificada para ignorar el separador en la plantilla. ► to_date(), to_number(), y to_timestamp() ignoran caracteres multibyte en las plantillas. ► En el Protocolo Extendido de Consulta el statement_timeout aplica a cada mensaje Execute.
  7. Novedades de PostgreSQL 11 Paralelismo ► PostgreSQL 9.6 infraestructura inicial

    (OFF). – sequential scans, joins y aggregates. ► PostgreSQL 10 (ON). – B-tree index scan, bitmap heap scans – merge joins, non-correlated subqueries
  8. Novedades de PostgreSQL 11 Paralelismo PostgreSQL 11 ► Hash joins

    ► CREATE INDEX para índices B-tree ► CREATE TABLE .. AS, CREATE MATERIALIZED VIEW. ► Algunas consultas con UNION
  9. Novedades de PostgreSQL 11 Procedimientos almacenados ► Similares a las

    funciones de toda la vida. ► Permiten controlar las transacciones dentro del procedimiento. ► No retornan valores. ► Se ejecutan usando CALL.
  10. Novedades de PostgreSQL 11 Procedimientos almacenados ► Es una funcionalidad

    nueva en PostgreSQL 11. ► No esta del todo “cocinada”. ► Soporte oficial para algunas capas de abstracción aka drivers como JDBC y Npgsql en modo de espera. * – https://www.postgresql.org/message-id/4285.1537201440%40sss.pgh.pa.us
  11. Novedades de PostgreSQL 11 Procedimientos almacenados - Ejemplo CREATE PROCEDURE

    transaction_test1 () LANGUAGE plpgsql AS $$ BEGIN FOR i IN 0..9 LOOP INSERT INTO test1 (a) VALUES (i); IF i % 2 = 0 THEN COMMIT; ELSE ROLLBACK; END IF; END LOOP; END; $$;
  12. Novedades de PostgreSQL 11 Rendimiento general ► ALTER TABLE ..

    ADD COLUMN con una columna NOT NULL y DEFAULT. ► VACUUM evita index scans innecesarios. ► postgres_fdw empuja UPDATEs y DELETEs usando joins a los servidores remotos.
  13. Novedades de PostgreSQL 11 Compilación JIT ► Compilación Just-In-Time ►

    Usa la integración con LLVM. ► Actualmente acelera evaluación de expresiones y deformación de tuplas. (Más operaciones en el futuro) ► Expresiones en línea (Inlining).
  14. Novedades de PostgreSQL 11 Compilación JIT ► Beneficio en consultas

    que son principalmente intensivas en CPU. (Analíticas) ► Para consultas pequeñas, el costo es mayor. ► En PostgreSQL 11: OFF
  15. Novedades de PostgreSQL 11 Particionado por Hash ► PostgreSQL 10

    – con RANGE y LIST ► PostgreSQL 11 – HASH ► Distribuye las filas basadas en el hash de su llave de partición.
  16. Novedades de PostgreSQL 11 Particionado por Hash - Ejemplo ►

    CREATE TABLE hp (id serial, foo text ) PARTITION BY HASH (foo); ► CREATE TABLE hp_0 PARTITION OF hp FOR VALUES WITH (MODULUS 3, REMAINDER 0); ► CREATE TABLE hp_1 PARTITION OF hp FOR VALUES WITH (MODULUS 3, REMAINDER 1); ► CREATE TABLE hp_2 PARTITION OF hp FOR VALUES WITH (MODULUS 3, REMAINDER 2);
  17. Novedades de PostgreSQL 11 Particionado por Hash - Ejemplo ►

    INSERT INTO hp SELECT md5(v::text) FROM generate_series(0,10000) v;
  18. Novedades de PostgreSQL 11 Conteo de particiones SELECT name, COUNT(*)

    FROM hp, LATERAL (SELECT relname FROM pg_class WHERE pg_class.oid = hp.tableoid) AS table_name (name) GROUP BY name ORDER BY 1;
  19. Novedades de PostgreSQL 11 UPDATE’s mueven filas entre particiones ►

    PostgreSQL 10 no te permite actualizar columnas que contengan la llave de particionado. pg10=> UPDATE measurement SET logdate='2017-07-10'; ERROR: new row for relation "measurement_y2016" violates partition constraint DETAIL: Failing row contains (2017-07-10, 66, 100).
  20. Novedades de PostgreSQL 11 Particiones Default ► Con la v11

    es posible crear una partición “default”. ► Las filas que no aplican en los rangos o listas existentes entran en la partición “default”. ► En la v10 insertar este tipo de filas falla.
  21. Novedades de PostgreSQL 11 Particiones Default - Ejemplo ► CREATE

    TABLE measurement_default PARTITION OF measurement DEFAULT; • Luego de agregar un DEFAULT, no se puede agregar otra partición para cubrir un nuevo rango, es necesario un DETACH manual.
  22. Novedades de PostgreSQL 11 Creación de índices automáticos ► En

    la v10 se deben crear índices manualmente por cada partición. ► En la v11 si creas un índice en la tabla padre, se creará automáticamente en las particiones. ► Las particiones nuevas también obtienen los índices creados “automágicamente”.
  23. Novedades de PostgreSQL 11 Soporte para llaves foráneas ► PostgreSQL

    10 CREATE TABLE invoices ( invoice_id integer PRIMARY KEY ); CREATE TABLE sale_amounts_1 ( saledate date NOT NULL, invoiceid integer REFERENCES invoices(invoice_id) ) PARTITION BY RANGE (saledate); ERROR: foreign key constraints are not supported on partitioned tables LINE 3: invoiceid integer REFERENCES invoices(invoice_id)
  24. Novedades de PostgreSQL 11 Índices únicos… y llaves primarias ►

    PostgreSQL 10 CREATE TABLE sale_amounts_2 ( saledate date NOT NULL, invoiceid INTEGER, UNIQUE (saledate, invoiceid) ) PARTITION BY RANGE (saledate); ERROR: unique constraints are not supported on partitioned tables LINE 4: UNIQUE (saledate, invoiceid)
  25. Novedades de PostgreSQL 11 SQL ► Las funciones de ventana

    soportan todas las opciones del SQL:2011. ► RANGE distance PRECEDING/FOLLOWING, GROUPS mode, y frame exclusion. ► Marcus Winand: https://youtu.be/lL6g9PHHin4
  26. Novedades de PostgreSQL 11 Replicación lógica ► Soporte para TRUNCATE.

    * ► Función pg_replication_slot_advance – Avanza el slot a un LSN en el publicador. – Sirve para resolución de conflictos. – SELECT pg_replication_slot_advance('sub1', pg_current_wal_lsn()) ;
  27. Novedades de PostgreSQL 11 Nuevos roles Nombre Descripción pg_execute_server_program Ejecuta

    programas en el servidor pg_read_server_files Lee archivos en el servidor pg_write_server_files Escribe archivos en el servidor
  28. Novedades de PostgreSQL 11 Large Pages en Windows ► La

    opción “Lock Pages In Memory” ahora está disponible en un entrono Microsoft Windows . ► Cuando huge_pages[1] está en “try” (default) o en “on”. ► Se recomienda a “off” (a menos que sepas que estas haciendo). ► [1] https://postgresqlco.nf/en/doc/param/huge_pages?version=11
  29. Novedades de PostgreSQL 11 Varios ► VACUUM, ANALYZE de multiples

    tablas. ► LIMIT es empujado hacia sub-consultas. ► CONSTANTS en PL/pgSQL. ► Channel binding para SCRAM. ► Tamaño de WAL configurable en initdb.
  30. Novedades de PostgreSQL 11 Varios ► pg_verity_checksums ► pg_basebackup verifica

    la integridad del checksum de los bloques del respaldo. ► Módulo amcheck, consistencia de índices btree.
  31. Novedades de PostgreSQL 11 CREATE INDEX INCLUDE ► Agrega columnas

    a un índice. ► Caso de uso: UNIQUE CONSTRAINT ► Puede mejorar el rendimiento… ► También útil en columnas que no tienen soporte btree. ► CREATE UNIQUE INDEX idx1_data1 ON data1 (c1, c2) INCLUDE (c3);