#PostgreSQL #федичитальня #postgresql15
Заметил в книжке пример о том, что можно делать хитрый WHERE по сочетанию параметров через VALUES и скобочки.
WHERE (x, y) IN (VALUES ('a', 'b'), ('c', 'd'))
Интересно насколько эффективно оно работает в сравнении с пачкой OR? Длина собранного запроса короче, больше шансы уложиться в один TCP PUSH/ACK пакет при средних размерах таких списков, это понятно. Читаемость - хз. А с точки зрения вычислений хз вдвойне. Композитным индексам, наверное, пофигу.
#postgresql #федичитальня #postgresql15
#федичитальня #PostgreSQL #PostgreSQL15
Перевалил через треть книжки. За полгода. Очень, очень медленно. Сдамплю пометки.
Контрольная точка - метки в wal с началом и концом. Конец - это когда все грязные буферы сдамплены на диск. И по этой контрольной точке можно восстановить согласованное состояние, насколько я понял, на момент её начала. Надо хранить файлы wal предыдущей завершённой и текущей контрольной точки. Остальное бесполезно.
#федичитальня #postgresql #postgresql15
#PostgreSQL #PostgreSQL15 #Dalibo
- https://public.dalibo.com/exports/formation/workshops/fr/ws15/150-postgresql_15.handout.html
- Le manuel en libre accès
Sorti en octobre 2022, PostgreSQL 15 apporte de nombreuses nouveautés améliorant les performances, la fiabilité et l’administration à différents niveaux. Retrouvez un condensé de ces améliorations dans notre article publié en mars 2023.
- https://public.dalibo.com/exports/formation/workshops/fr/ws15/150-postgresql_15.handout.html
#dalibo #postgresql15 #postgresql
#ФедиЧитальня #PostgreSQL15 не совсем из книги, но по той же теме.
Глянул кусочек highload.guide, выцепил хорошую выжимку про классификацию репликаций:
- логическая - работает с кортежами; пример - row based binary log в MySQL; бутылочное горлышко - процессор slave.
- физическая - работает со страницами; примеры - pg_wal, innodb undo-redo; бутылочное горлышко - диск (не совсем понял master'а или slave'а, не совсем понял, а как же буферы; возможно дело в большей степени касается MySQL с несколькими журналами одновременно)
- statement based - сплошная боль, есть места где можно получить неконсистентные данные между master и slave, но в случае условной бигдаты - очень низкие накладные расходы на передачу данных по сети, большой update на всю таблицу прилетит практически одним запросом; разве что выполнять его придётся заново на slave, из-за этого может быть длинный лаг репликации.
Если slave может блокировать удаление журнала master'ом, чтобы догнаться в случае ребута, чем больше отставание, тем больше размер журнала. Если slave вообще не догоняет master в принципе и отставание только нарастает - со временем это закончится забитым дисковым хранилищем.
В PostgreSQL есть Logical Log Streaming Replication, который позволяет не миррорить часть таблиц на slave. Как это применять я не придумал. В теории можно не хранить на слейвах для актуальных данных архивные данные, что позволит немного сэкономить на дисковом пространстве, особенно если slave'ов много.
Почитал ещё немного 4 главы про #postgresql15 изнутри. Полезного и прикладного мало, но понял одно – транзакции в постгресе хоть и дешёвые, но не бесплатные. Много активных транзакций означают большие списки в описании снапшотов, медленнее будет вычисление видимости.
Всё сводится к деталям внутренних реализаций, которые можно свести к "пишем всё что можно, сами ничего не удаляем, храни господь автовакуум и дешёвые SSD" и "думали просто так у каждой версии строчки заголовок 24кб?"
#федичитальня
Собрался с силами и возвращаюсь к книге. Надеюсь чего-нибудь интересного напишу.
Глава 2: изоляция
Время узнавать сколько вариаций локов (7) имеет под капотом постгрес чтобы ничего не терять.
Узнал про то что есть стандарт SQL на ослабление уровня консистентности. Когда-то глубоко копал это в Firebird, но это было давно и не правда. Когда я был маленьким я даже процедуры в БД в копии файла писал на виртуалке по RDP, а git там не было. Вокруг ходили люди с вольчими головами, а мороженное было вкуснее и бабы красивее (те, что без вольчих голов). Теперь по этому стандарту хочу записать альбом Acid House / New Beat:
GenACID - PGBook
1. Lost Update.
2. Dirty Read.
3. Non-Repeatable Read.
4. Phantom Read.
Примеры аномалий автор привёл понятным языком. Отличным примеров неповторяющегося чтения являюсь я.
#федичитальня #postgresql15
Deep dive engineering blog post from Ozan Saka about how we made #PostgreSQL15 support generally available in #AzureCosmosDB for PostgreSQL within just 1 week of the PG 15 release! (Powered by the Citus database extension)
#PostgreSQL15 has been released today!
https://www.postgresql.org/about/news/postgresql-15-released-2526/
#PostgreSQL 15 is here! 🥳
https://www.postgresql.org/about/news/postgresql-15-released-2526/
Among other new features, this release comes with "jsonlog", structured log format. Finally!
#postgresql #database #postgresql15