«MySQL и PostgreSQL: что «под капотом» и почему это важно знать прикладному разработчику. Реализация требований ACID, подходов к хранению данных и B-Tree индексов» — Никита Стрелков, разработчик e-commerce-подразделения, VK. Доклад с митапа #DevTalks ({Perm} Dev Meetup) (11 декабря 2021) MySQL и PostgreSQL сегодня — одни из самых популярных реляционных СУБД. Их активно используют разработчики в проектах самого разного уровня: от простейших веб-сайтов с нагрузкой в несколько запросов в сутки и объемом менее гигабайта, до геораспределенных высоконагруженных приложений с тысячами и более RPS и терабайтами данных. Многим разработчикам в течение карьеры приходится переходить с одной на другую или использовать одновременно несколько. Несмотря на кажущееся сходство, «под капотом» у этих СУБД важные различия, что сказывается на работе многих функций. В докладе раскрыты некоторые подробности устройства MySQL и PostgreSQL: — как обеспечивается транзакционность операций — что такое журналирование и какие виды журналов используются — различия в реализациях MVCC и применяемых блокировках — различия в реализации B-Tree индексов. Рассмотрены их сходства и различия, которые позволяют подходить к выбору СУБД для проектов более осознанно. Материалы доклада.
— презентация
- MySQL Internals Documentation
- Postgres Internals Documentation
- The Internals of PostgreSQL by Hironobu Suziki
- Comparing data stores postgresql mvcc vs innodb
- Postgresql index vs innodb index understanding differences
0:00 - Представление спикера 1:38 - О чем доклад 3:28 - Почему важно знать разницу 4:35 - Сравнение функиональности 5:49 - Процессы PostgreSQL 9:19 - Процесс и потоки MySQL 14:08 - Этапы выполнения запроса в PostgreSQL 17:45 - Этапы выполнения запроса в MySQL 21:10 - Какую статистику используют СУБД для построения плана запроса 23:51 - Пара слов про ACID 25:00 - MVCC в PostgreSQL 31:30 - MVCC в MySQL InnoDB 33:49 - Сравнение реализаций MVCC 39:07 - Индексы и их классификация 40:28 - Индексы в PostgreSQL 42:52 - Индексы в MySQL 47:00 - Секция Q&A #devtalks #devtalks_russia