Despois dun ano de desenvolvemento, publicouse unha nova rama estable do DBMS PostgreSQL 15. As actualizacións para a nova rama publicaranse durante cinco anos ata novembro de 2027.
Principais novidades:
- Engadido soporte para o comando SQL "MERGE", que se asemella á expresión "INSERT... ON CONFLICT". MERGE permítelle crear instrucións SQL condicionais que combinan operacións INSERT, UPDATE e DELETE nunha única expresión. Por exemplo, mediante MERGE, pode combinar dúas táboas inserindo os rexistros que faltan e actualizando os existentes. COMBINAR NA conta_cliente ca UTILIZANDO transaccións recentes t ON t.customer_id = ca.customer_id CANDO COINCIDE ENTONCES ACTUALIZAR SET balance = balance + transaction_value CANDO NON COINCITE ENTONCES INSERIR (customer_id, balance) VALUES (t.customer_id, t.transaction_value);
- Melloráronse significativamente os algoritmos para ordenar datos na memoria e no disco. Segundo o tipo de datos, as probas mostran un aumento da velocidade de clasificación do 25% ao 400%.
- Axiláronse as funcións de fiestra que usan row_number(), rank(), dense_rank() e count().
- Implementouse a posibilidade de execución paralela de consultas coa expresión “SELECT DISTINCT”.
- O mecanismo para conectar táboas externas Foreign Data Wrapper (postgres_fdw) implementa compatibilidade para commits asíncronos ademais da capacidade engadida anteriormente para procesar solicitudes asincrónicas a servidores externos.
- Engadiuse a posibilidade de usar os algoritmos LZ4 e Zstandard (zstd) para comprimir os rexistros de transaccións WAL, que, baixo algunhas cargas de traballo, poden mellorar o rendemento e aforrar espazo no disco ao mesmo tempo. Para reducir o tempo de recuperación despois dun fallo, engadiuse soporte para a recuperación proactiva das páxinas que aparecen no rexistro de WAL.
- A utilidade pg_basebackup engadiu soporte para a compresión do servidor de ficheiros de copia de seguranza mediante os métodos gzip, LZ4 ou zstd. É posible usar os seus propios módulos para arquivar, o que lle permite facer sen necesidade de executar comandos de shell.
- Engadíronse unha serie de novas funcións para procesar cadeas usando expresións regulares: regexp_count(), regexp_instr(), regexp_like() e regexp_substr().
- Engadiuse a capacidade de agregar tipos multirango ("multirango") á función range_agg().
- Engadiuse o modo security_invoker, que che permite crear vistas que se executan como o usuario que chama en lugar de como o creador da vista.
- Para a replicación lóxica, implementouse soporte para filtrar filas e especificar listas de columnas, o que permite que o remitente seleccione un subconxunto de datos da táboa para a replicación. Ademais, a nova versión simplifica a xestión de conflitos, por exemplo, agora é posible omitir transaccións en conflito e desactivar automaticamente unha subscrición cando se detecta un erro. A replicación lóxica permite o uso de confirmacións de dúas fases (2PC).
- Engadiuse un novo formato de rexistro: jsonlog, que garda a información nun formulario estruturado utilizando o formato JSON.
- O administrador ten a capacidade de delegar dereitos individuais aos usuarios para cambiar certos parámetros de configuración do servidor PostgreSQL.
- A utilidade psql engadiu compatibilidade para buscar información sobre a configuración (pg_settings) mediante o comando "\dconfig".
- O uso da memoria compartida está garantido para acumular estatísticas sobre o funcionamento do servidor, o que permite desfacerse dun proceso separado de recollida de estatísticas e restablecer periodicamente o estado no disco.
- Proporcionouse a posibilidade de usar os locais predeterminados da ICU "ICU Collation"; anteriormente, só se podían usar os locais de libc como configuración predeterminada.
- Propúxose unha extensión integrada pg_walinspect, que lle permite inspeccionar o contido dos ficheiros con rexistros WAL mediante consultas SQL.
- Para o esquema público, todos os usuarios, a excepción do propietario da base de datos, revogouse a súa autoridade para executar o comando CREATE.
- Eliminouse a compatibilidade con Python 2 en PL/Python. Eliminouse o modo de copia de seguranza exclusivo obsoleto.
Adición: De 19:00 a 20:00 horas (MSK) haberá un webinar para discutir os cambios na nova versión con Pavel Luzanov (Postgres Professional). Para aqueles que non poidan unirse á transmisión, está aberta a gravación do informe de xuño de Pavel "PostgreSQL 15: MERGE and more" en PGConf.Russia.
Fonte: opennet.ru