🐘 PostgreSQL vs MySQL 🐬
https://www.youtube.com/watch?v=mg70LYuRS3IСтатья на medium (с картинками)Одна из луууучших лекций на тему сравнения PSQL и MYSQL, так еще и с конференции моих товарищейКоротко:- Функционально MySQL уже догнал PSQL- PSQL на каждый connection открывает отдельный процесс, а MySQL отдельный тред, поэтому на PSQL надо использовать PgBouncer и/или PGPool-II для оптимизации работы с connection- PSQL и MYSQL строят запросы примерно одинаково заисключением этапа Executor, где в MySQL процедуры передаются в движок, который вы используете для таблицы, а в PSQL движок всего один, что позволяет PSQL быть более оптимизированным (он конкретно знает как устроен его движок и обращается к нему напрямую)– Статистика на PSQL знает гораздо больше о данных, которые в нем храняться (поскольку он может собирать ее напрямую из единственного движка), что в свою очередь дает возможность оптимизатору выстраивать запросы SELECT более оптимизировано– PSQL и MySQL используют MVCC для работы с транзакциями.PSQL при каждом изменении создает копию записи с указанием в каком id транзакции произошли изменения и помечает этим же id старую запись, (2) при удалении указывает транзакцию. Далее при процессе AutoVacuum он очистит все данные, который были удалены ранее самой старой активной транзакции.MySQL же всегда держит 1 актуальную версию объекта, а в отдельном месте (undo_log) создает запись с тем, что было изменено (включая INSERT, UPDATE и DELETE).Соответственно: UPDATE в PSQL потребует больше места на диске и дольше, а INSERT меньше и быстрее, также откат транзакций быстрее. Но в целом, MySQL быстрее в операциях INSERT, UPDATE и DELETE.– Индексы бывают кластерные (храняться вместе с данными, сразу отсортированы по нему и может быть всего один) и некластерные (индексы храняться рядом)В PSQL все индексы некластерные + PSQL поддерживает множество видов и типов индексов.В MySQL есть кластерный индекс (PRIMARY KEY) + поддеживает только B+ Tree index.