PGCon-2016: Последние новости Oleg Bartunov, Alexander Korotkov Postgres Professional, Moscow University RIT++, June 1, 2017
PostgreSQL Developers Meeting, May 17, 2016, Ottawa, Canada ● Oleg Bartunov, PostgreSQL Professional ● Josh Berkus, Red Hat ● Joe Conway, Crunchy Data ● Jeff Davis, AWS ● Andrew Dunstan ● Peter Eisentraut, 2nd Quadrant ● Andres Freund, Citus Data ● Stephen Frost, Crunchy Data ● Etsuro Fujita, NTT ● Kevin Grittner, EnterpriseDB ● Robert Haas, EnterpriseDB ● Magnus Hagander, Redpill Linpro ● Heikki Linnakangas, Pivotal ● Amit Kapila, EnterpriseDB ● Alexander Korotkov, PostgreSQL Professional ● Tom Lane, Crunchy Data ● Noah Misch ● Dave Page, EnterpriseDB ● Michael Paquier, VMWare ● Simon Riggs, 2nd Quadrant ● Masahiko Sawada, NTT ● Teodor Sigaev, PostgreSQL Professional
● Oleg Bartunov, PostgreSQL Professional ● Josh Berkus, Red Hat ● Joe Conway, Crunchy Data ● Jeff Davis, AWS ● Andrew Dunstan ● Peter Eisentraut, 2nd Quadrant ● Andres Freund, Citus Data ● Stephen Frost, Crunchy Data ● Etsuro Fujita, NTT ● Kevin Grittner, EnterpriseDB ● Robert Haas, EnterpriseDB ● Magnus Hagander, Redpill Linpro ● Heikki Linnakangas, Pivotal ● Amit Kapila, EnterpriseDB ● Alexander Korotkov, PostgreSQL Professional ● Tom Lane, Crunchy Data ● Noah Misch ● Dave Page, EnterpriseDB ● Michael Paquier, VMWare ● Simon Riggs, 2nd Quadrant ● Masahiko Sawada, NTT ● Teodor Sigaev, PostgreSQL Professional
Developers meeting ●Как номинировать на Major contributors Команда волонтеров займется этим (Josh Stephen, Joe, Dave) ●Emeritus list для долгонеактивных ●Core team медленно меняется ●Нет ясного механизма ●RMT — хорошая практика, так держать ●За качество отвечают коммитеры ! ●Next Release Schedule * CF1: September 1 to 30th * CF2: November 1 to 30th * CF3: January 1 to 31st. * CF4: March 1 to 31st. * Feature Freeze: March * 31st May 16th: Beta ●Нужен общий пул железа для тестирования ●Спор вокруг шардинга ●FDW sharding ? EDB отреклась - это все Брюс, это его проект. ●Distributed transactions в ядро ? ●Postgres-XL и Postgres Professional будут вести отдельные сессии на Developers Unconference ●Pglogical форкнут к 1 августу для включения в ядро ●CFM — Commitfest Management Team (2-3 человека) на каждый CF за три недели до старта (CORE team задача) https://wiki.postgresql.org/wiki/PgCon_2016_Developer_Meeting Version Numbering * 8 голосов за X.Y.Z * 13 голосов за X.Y X меняется каждый год Y — минорный релиз * 9.7 → 10.0
PostgreSQL Roadmap ● На самом деле планов развития у постгреса нет https://www.postgresql.org/developer/roadmap/ "PostgreSQL is a non-commercial, all volunteer, free software project, and as such there is no formal list of feature requirements required for development. We really do follow the mantra of letting developers scratch their own itches." ● Однако, постгрес давно используется большим бизнесом и вокруг него сложились компании, которые занимаются поддержкой, разработкой как самого постгреса, так и приложений. Всем нужны планы ! ● В России сложились специфические условия для развития постгреса, нас даже заметил Оракл :) Пришло много бизнеса, много новых людей. ● Поэтому Postgres Professional поставил вопрос о планах
PostgreSQL Roadmap https://goo.gl/eCZOdX
Developers meeting (Roadmaps) Postgres Professional Roadmap 1 Multimaster cluster with sharding 2 JIT-compilation of queries 3 Pluggable storages 4 Effective partitioning 5 Adaptive query planning 5.1 Query plans management 5.2 Machine learning 5.3 Execution-time planning 6 Backup 6.1 Block-level incremental backup 6.2 Backup validation 6.3 Partial backup and partial restore 7 Connection pooling 8 Page-level data compression 9 Wait events monitoring 10 Better temporary tables 10.1 Temporary tables outside of system catalog 10.2 Temporary tables on standbys 11 Native querying for jsonb with indexing support EnterpriseDB database server roadmap 1 Parallelism Hash node Bitmap Heap Scan Index Scan Vacuum 2 Partitioning Declarative partitioning 3 Foreign Data Wrappers Aggregate pushdown to postgres_fdw Async execution to executor Pluggable API for heap in core 4 Replication Causal reads 5 Vertical Scalability Speedup CLOG access Cache MVCC snapshots-reduce contention ProcArrayLock 6 Performance Asynchronous, Vectorized execution Hash indexes 7 SQL Features https://wiki.postgresql.org/wiki/Postgres_Professional_roadmap https://wiki.postgresql.org/wiki/EnterpriseDB_database_server_roadmap
Developers Unconference https://wiki.postgresql.org/wiki/PgCon_2016_Developer_Unconference 5 sessions out of 12 by Postgres Professional
Developers Unconference https://wiki.postgresql.org/wiki/PgCon_2016_Developer_Unconference 5 sessions out of 12 by Postgres Professional
Конференция - 1
Parallel Query Architecture Gather nodeGather.c Gather nodeGather.c Parallel-Aware Executor Nodes nodeSeqScan.c nodeForeignScan.c nodeCustom.c Parallel-Aware Executor Nodes nodeSeqScan.c nodeForeignScan.c nodeCustom.c Parallel Executor Support execParallel.c Parallel Executor Support execParallel.c Tuple Queue Reader and DestReceiver tqueue.c Tuple Queue Reader and DestReceiver tqueue.c Dynamic Background Workers bgworker.c Dynamic Background Workers bgworker.c Dynamic Shared Memory dsm.c, dsm_impl.c Dynamic Shared Memory dsm.c, dsm_impl.c Shared Memory Message Queue shm_mq.c Shared Memory Message Queue shm_mq.c Parallel Context parallel.c Parallel Context parallel.c Shared Memory Table of Contents shm_toc.c Shared Memory Table of Contents shm_toc.c Error/Notice Forwarding pqmq.c Error/Notice Forwarding pqmq.c State Synchronization dfmgr.c, guc.c, combocid.c, snapmgr.c, xact.c State Synchronization dfmgr.c, guc.c, combocid.c, snapmgr.c, xact.c Group Locking lock.c Group Locking lock.c Источник: http://www.pgcon.org/2016/schedule/events/913.en.html
• With parallel query enabled, 17 plans used parallelism. The other 5 query plans did not change. • Of the 17 queries that used parallelism, 15 got faster, 1 was unchanged, and 1 got slower. (Increasing work_mem fixed the regression.) • 3 queries ran at least 4x faster; 11 queries ran at least 2x faster. • Full results at rhaas.blogspot.com TPC-H Testing: Results Источник: http://www.pgcon.org/2016/schedule/events/913.en.html
• Ideal join strategy is a merge join, which we don't know how to do in parallel: Q2, Q13, Q15 • Need parallel hash table build: Q3, Q5, Q7, Q8, Q21 • Need parallel bitmap index scan: Q4, Q5, Q6, Q7, Q14, Q15, Q20 • Need parallel subquery handling: Q2, Q15, Q16, Q22 • Need gather merge: Q17 • Not sure: Q3, Q9, Q10, Q11, Q18 • Already looks ideal: Q1, Q12, Q19 Analysis of Query Plans – What's missing? Источник: http://www.pgcon.org/2016/schedule/events/913.en.html
In-memory column storage by Fujitsu Источник: http://www.pgcon.org/2016/schedule/events/919.en.html
Snapshot too old ● Чтобы не накапливался большой bloat, нужно обрывать транзакции, которые видят старые данные. ● Параметр old_snapshot_threshold в интервале 1 мин. – 60 дн. ● Обрываем транзакцию только тогда, когда она действительно пытается обратиться к изменившимся данным. ● Осторожно! Значительный overhead на многоядерных системах. ● В будущем, можно применить этот механизм для standby.
Ускорение простых запросов Оптимизации: ● Push Down Scan key ● Save Expression Initialization for targetlist and qual ● Save Scan slot ● Save Executor State ● Save Expression Context Это даёт: ● 25% ускорение INSERT ● 20% ускорение SELECT ● 20% ускорение UPDATE Источник: http://www.pgcon.org/2016/schedule/events/936.en.html
Конференция - 2
Конференция - 2
Multicore scalability
«Improved reads and writes» ● Group commit – 30 на большой power-8 машине: 30% ускорение для 64 клиентов и 133% ускорение для 256 клиентов на read-write pgbench тесте. ● Увеличение clog buffers с 32 до 128: 90% ускорение на unlogged таблицах для 256 клиентов на read-write pgbench тесте. ● Параметры checkpointer_flush_after, bgwriter_flush_after и backend_flush_after предотрващают накопление слишком большой очереди на запись в кэше ОС.
Проблемы buffer manager'а ● Медленная хэш-таблица. Нужно применять lock-free hash-table или prefix tree. ● Алгоритм вытеснения не масштабируется. Нужно менять на другой. ● Checkpoint'ы нужно специально «размазывать», чтобы выдержала дисковая подспистама.
User Unconference https://wiki.postgresql.org/wiki/Pgcon2016userunconference
User Unconference https://wiki.postgresql.org/wiki/Pgcon2016userunconference
Code of Conduct https://wiki.postgresql.org/wiki/Coc_qa_pgcon2016 `
Figures and Pics in Documentation GIN diagram — ASCII
Charity Auction 350$ 220$ Слон в облаке 45$ Сломанный значок 350$ 60$ Зубная Щетка Oracle
NEW FEATURES of FTS Oleg Bartunov, Teodor Sigaev Postgres Professional
Inverted Index in PostgreSQL E N T R Y T R E E Posting list Posting tree No positions in index !
Improving GIN
9.6 opens «Pandora box» Create access methods as extension ! Let's call it RUM http://www.sai.msu.su/~megera/postgres/talks/pgcon-2016-fts.pdf ● Храним в addinfo • Координаты слов ● Ускоряем поиск с ранжирование ● Ускоряем phrase search • Timestamp ● Ускоряем поиск с упорядочиванием по времени • Ветки query tree ● Ускоряем "обратный" поиск Full Query Search
Postgres Professional на PGCon 2016
Thanks !

Последние новости постгреса с PGCon / О.Бартунов, А.Коротков, Ф.Сигаев (Postgres Professional, ГАИШ МГУ)

  • 1.
    PGCon-2016: Последние новости Oleg Bartunov, AlexanderKorotkov Postgres Professional, Moscow University RIT++, June 1, 2017
  • 2.
    PostgreSQL Developers Meeting,May 17, 2016, Ottawa, Canada ● Oleg Bartunov, PostgreSQL Professional ● Josh Berkus, Red Hat ● Joe Conway, Crunchy Data ● Jeff Davis, AWS ● Andrew Dunstan ● Peter Eisentraut, 2nd Quadrant ● Andres Freund, Citus Data ● Stephen Frost, Crunchy Data ● Etsuro Fujita, NTT ● Kevin Grittner, EnterpriseDB ● Robert Haas, EnterpriseDB ● Magnus Hagander, Redpill Linpro ● Heikki Linnakangas, Pivotal ● Amit Kapila, EnterpriseDB ● Alexander Korotkov, PostgreSQL Professional ● Tom Lane, Crunchy Data ● Noah Misch ● Dave Page, EnterpriseDB ● Michael Paquier, VMWare ● Simon Riggs, 2nd Quadrant ● Masahiko Sawada, NTT ● Teodor Sigaev, PostgreSQL Professional
  • 3.
    ● Oleg Bartunov,PostgreSQL Professional ● Josh Berkus, Red Hat ● Joe Conway, Crunchy Data ● Jeff Davis, AWS ● Andrew Dunstan ● Peter Eisentraut, 2nd Quadrant ● Andres Freund, Citus Data ● Stephen Frost, Crunchy Data ● Etsuro Fujita, NTT ● Kevin Grittner, EnterpriseDB ● Robert Haas, EnterpriseDB ● Magnus Hagander, Redpill Linpro ● Heikki Linnakangas, Pivotal ● Amit Kapila, EnterpriseDB ● Alexander Korotkov, PostgreSQL Professional ● Tom Lane, Crunchy Data ● Noah Misch ● Dave Page, EnterpriseDB ● Michael Paquier, VMWare ● Simon Riggs, 2nd Quadrant ● Masahiko Sawada, NTT ● Teodor Sigaev, PostgreSQL Professional
  • 4.
    Developers meeting ●Как номинироватьна Major contributors Команда волонтеров займется этим (Josh Stephen, Joe, Dave) ●Emeritus list для долгонеактивных ●Core team медленно меняется ●Нет ясного механизма ●RMT — хорошая практика, так держать ●За качество отвечают коммитеры ! ●Next Release Schedule * CF1: September 1 to 30th * CF2: November 1 to 30th * CF3: January 1 to 31st. * CF4: March 1 to 31st. * Feature Freeze: March * 31st May 16th: Beta ●Нужен общий пул железа для тестирования ●Спор вокруг шардинга ●FDW sharding ? EDB отреклась - это все Брюс, это его проект. ●Distributed transactions в ядро ? ●Postgres-XL и Postgres Professional будут вести отдельные сессии на Developers Unconference ●Pglogical форкнут к 1 августу для включения в ядро ●CFM — Commitfest Management Team (2-3 человека) на каждый CF за три недели до старта (CORE team задача) https://wiki.postgresql.org/wiki/PgCon_2016_Developer_Meeting Version Numbering * 8 голосов за X.Y.Z * 13 голосов за X.Y X меняется каждый год Y — минорный релиз * 9.7 → 10.0
  • 5.
    PostgreSQL Roadmap ● Насамом деле планов развития у постгреса нет https://www.postgresql.org/developer/roadmap/ "PostgreSQL is a non-commercial, all volunteer, free software project, and as such there is no formal list of feature requirements required for development. We really do follow the mantra of letting developers scratch their own itches." ● Однако, постгрес давно используется большим бизнесом и вокруг него сложились компании, которые занимаются поддержкой, разработкой как самого постгреса, так и приложений. Всем нужны планы ! ● В России сложились специфические условия для развития постгреса, нас даже заметил Оракл :) Пришло много бизнеса, много новых людей. ● Поэтому Postgres Professional поставил вопрос о планах
  • 6.
  • 7.
    Developers meeting (Roadmaps) PostgresProfessional Roadmap 1 Multimaster cluster with sharding 2 JIT-compilation of queries 3 Pluggable storages 4 Effective partitioning 5 Adaptive query planning 5.1 Query plans management 5.2 Machine learning 5.3 Execution-time planning 6 Backup 6.1 Block-level incremental backup 6.2 Backup validation 6.3 Partial backup and partial restore 7 Connection pooling 8 Page-level data compression 9 Wait events monitoring 10 Better temporary tables 10.1 Temporary tables outside of system catalog 10.2 Temporary tables on standbys 11 Native querying for jsonb with indexing support EnterpriseDB database server roadmap 1 Parallelism Hash node Bitmap Heap Scan Index Scan Vacuum 2 Partitioning Declarative partitioning 3 Foreign Data Wrappers Aggregate pushdown to postgres_fdw Async execution to executor Pluggable API for heap in core 4 Replication Causal reads 5 Vertical Scalability Speedup CLOG access Cache MVCC snapshots-reduce contention ProcArrayLock 6 Performance Asynchronous, Vectorized execution Hash indexes 7 SQL Features https://wiki.postgresql.org/wiki/Postgres_Professional_roadmap https://wiki.postgresql.org/wiki/EnterpriseDB_database_server_roadmap
  • 8.
  • 9.
  • 10.
  • 11.
    Parallel Query Architecture Gather nodeGather.c Gather nodeGather.c Parallel-Aware ExecutorNodes nodeSeqScan.c nodeForeignScan.c nodeCustom.c Parallel-Aware Executor Nodes nodeSeqScan.c nodeForeignScan.c nodeCustom.c Parallel Executor Support execParallel.c Parallel Executor Support execParallel.c Tuple Queue Reader and DestReceiver tqueue.c Tuple Queue Reader and DestReceiver tqueue.c Dynamic Background Workers bgworker.c Dynamic Background Workers bgworker.c Dynamic Shared Memory dsm.c, dsm_impl.c Dynamic Shared Memory dsm.c, dsm_impl.c Shared Memory Message Queue shm_mq.c Shared Memory Message Queue shm_mq.c Parallel Context parallel.c Parallel Context parallel.c Shared Memory Table of Contents shm_toc.c Shared Memory Table of Contents shm_toc.c Error/Notice Forwarding pqmq.c Error/Notice Forwarding pqmq.c State Synchronization dfmgr.c, guc.c, combocid.c, snapmgr.c, xact.c State Synchronization dfmgr.c, guc.c, combocid.c, snapmgr.c, xact.c Group Locking lock.c Group Locking lock.c Источник: http://www.pgcon.org/2016/schedule/events/913.en.html
  • 12.
    • With parallelquery enabled, 17 plans used parallelism. The other 5 query plans did not change. • Of the 17 queries that used parallelism, 15 got faster, 1 was unchanged, and 1 got slower. (Increasing work_mem fixed the regression.) • 3 queries ran at least 4x faster; 11 queries ran at least 2x faster. • Full results at rhaas.blogspot.com TPC-H Testing: Results Источник: http://www.pgcon.org/2016/schedule/events/913.en.html
  • 13.
    • Ideal joinstrategy is a merge join, which we don't know how to do in parallel: Q2, Q13, Q15 • Need parallel hash table build: Q3, Q5, Q7, Q8, Q21 • Need parallel bitmap index scan: Q4, Q5, Q6, Q7, Q14, Q15, Q20 • Need parallel subquery handling: Q2, Q15, Q16, Q22 • Need gather merge: Q17 • Not sure: Q3, Q9, Q10, Q11, Q18 • Already looks ideal: Q1, Q12, Q19 Analysis of Query Plans – What's missing? Источник: http://www.pgcon.org/2016/schedule/events/913.en.html
  • 14.
    In-memory column storageby Fujitsu Источник: http://www.pgcon.org/2016/schedule/events/919.en.html
  • 15.
    Snapshot too old ●Чтобы не накапливался большой bloat, нужно обрывать транзакции, которые видят старые данные. ● Параметр old_snapshot_threshold в интервале 1 мин. – 60 дн. ● Обрываем транзакцию только тогда, когда она действительно пытается обратиться к изменившимся данным. ● Осторожно! Значительный overhead на многоядерных системах. ● В будущем, можно применить этот механизм для standby.
  • 16.
    Ускорение простых запросов Оптимизации: ●Push Down Scan key ● Save Expression Initialization for targetlist and qual ● Save Scan slot ● Save Executor State ● Save Expression Context Это даёт: ● 25% ускорение INSERT ● 20% ускорение SELECT ● 20% ускорение UPDATE Источник: http://www.pgcon.org/2016/schedule/events/936.en.html
  • 17.
  • 18.
  • 19.
  • 20.
    «Improved reads andwrites» ● Group commit – 30 на большой power-8 машине: 30% ускорение для 64 клиентов и 133% ускорение для 256 клиентов на read-write pgbench тесте. ● Увеличение clog buffers с 32 до 128: 90% ускорение на unlogged таблицах для 256 клиентов на read-write pgbench тесте. ● Параметры checkpointer_flush_after, bgwriter_flush_after и backend_flush_after предотрващают накопление слишком большой очереди на запись в кэше ОС.
  • 21.
    Проблемы buffer manager'а ●Медленная хэш-таблица. Нужно применять lock-free hash-table или prefix tree. ● Алгоритм вытеснения не масштабируется. Нужно менять на другой. ● Checkpoint'ы нужно специально «размазывать», чтобы выдержала дисковая подспистама.
  • 22.
  • 23.
  • 24.
  • 25.
    Figures and Picsin Documentation GIN diagram — ASCII
  • 26.
    Charity Auction 350$ 220$ Слон воблаке 45$ Сломанный значок 350$ 60$ Зубная Щетка Oracle
  • 27.
    NEW FEATURES ofFTS Oleg Bartunov, Teodor Sigaev Postgres Professional
  • 28.
    Inverted Index inPostgreSQL E N T R Y T R E E Posting list Posting tree No positions in index !
  • 29.
  • 30.
    9.6 opens «Pandorabox» Create access methods as extension ! Let's call it RUM http://www.sai.msu.su/~megera/postgres/talks/pgcon-2016-fts.pdf ● Храним в addinfo • Координаты слов ● Ускоряем поиск с ранжирование ● Ускоряем phrase search • Timestamp ● Ускоряем поиск с упорядочиванием по времени • Ветки query tree ● Ускоряем "обратный" поиск Full Query Search
  • 31.
  • 32.