Comments 11
Спасибо огромное за ваши статьи! Они отличный источник вдохновения!
Вы не подскажете где можно подсмотреть на общую архитектуру PostgreSQL?
Что-то типо такого наверное:
[ connection management layer ]
[ session management layer ]
[ query parsing / processing layer ]
[ query cache ]
[ query execution layer ]
[ statistics mgmt] [ query analyzer ] [locking mgmt ]
[ persistence layer ]
[ data cache ] [ block cache ] [ locking mgmt]
[ WAL mgmt] [ .. ]
В академических целях люблю ковыряться в разных БД и делать свои велосипеды :)
Рад, что вдохновляетесь!
Насчет архитектуры. В документации, к сожалению, нет внятного короткого описания. Мы пытались что-то изобразить в DBA1 в темах 4-10. Попробуйте еще посмотреть Вову Бородина (видео https://www.youtube.com/watch?v=ejLzS6rVpkk, слайды https://www.slideshare.net/yandex/postgre-sql-41754731).
Но уплощение выполняется только если оно не приведет к появлению в плоском списке более join_collapse_limit элементов (значение параметра по умолчанию — 8). В данном примере при любых значениях параметра, меньших 5, узел JOINEXPR не будет уплощен.
Несколько раз перечитал, мне кажется что первое предложение противоречит второму.
То есть первое предложение говорит "уплощать пока итоговое значение в списке меньше 8".
Второе говорит наоборот "НЕ уплощать пока итоговое значение меньше 5+3"
Все ли верно в цитате? или таки в первом предложении есть лишняя частица "не"?
-
Вы сказали, что
В PostgreSQL разбор запросов обходится дешево и не влияет на другие процессы.
Какова практическая ценность подготавливать запросы, кроме как защита от sql - инъекций?
Запросы в PostgreSQL: 1. Этапы выполнения