Сегодня, 10 сентября 2012 года, официально вышел релиз PostgreSQL 9.2!
Наконец-то завершился долгий период бета-тестирования, объявленный в мае сего года. Разработчики обещают еще большую производительность, масштабируемость и гибкость (performance, scalability and flexibility).
Улучшенная производительность и масштабируемость
Postgres теперь поддерживает 64-ядерные процессоры, и снижено, его Postgres'a, энергопотребление. Тут подозреваю, все понятно и без лишних отступлений.
Реализован механизм index-only scan. Что за зверь такой? Дело в том, что индексы в Postgres не содержат информации о видимости записи. То есть, чтобы понять видима ли какая-то запись, серверу нужно обязательно прочитать реальный табличный кортеж (tuple). Бывает ситуация, что в индексе содержится информация об устаревшем кортеже. Понятно и коню, что доступ к сортированному индексу намного быстрее доступа к реальной таблице, данные которой могут быть размазаны как угодно. Вкратце, в версии 9.2 этот финт ушами возможен. Хотя в индексе по-прежнему нет информации про видимость записи, разработчики реализовали, так называемую, «карту видимости» (visibility map). Все это и многое другое детально описано в Wiki.
Улучшена и отполирована Потоковая Репликация (Streaming Replication). За деталями прошу проследовать во всю ту же Wiki.
Из сладкого. Появилась родная поддержка типа JSON. Веб-разработчики вне себя от радости и бросают в воздух чепчики. Сервер проверяет валидность входящих данные, подсказывает где ошибка, если есть, содержит полный букет функций для конвертации из/в JSON. Например, array_to_json и row_to_json — просто счастье для ленивых, коим я всенепременно являюсь.
И как по мне, самой убийственной фичей стала поддержка диапазонных типов (Range Types). Я не знаю, как можно было жить без них до этого.
Во-первых, диапазоны могут быть как дискретными, так и непрерывными. К дискретным стоит отнести такие встроенные типы как int4range, int8range и date4range. К непрерывным соответственно numrange, tsrange, tstzrange (ts — timestamp, num — numeric).
Во-вторых, диапазон может быть открытым… Помните, про квадратные и круглые скобочки? [1;1] — закрытый, а [1;1) — открытый справа и т.д.
В-третьих, границей диапазона может быть «бесконечность», та которая ∞! Помните анекдот про первоклассника?
- Пап, а как восьмерка пишется?
- Бесконечность повернутая на π/2.
Если кто не понимает, отчего я веселый такой и играю на гармошке, то раньше приходилось использовать два поля для хранения таких данных. А тут тебе и операторы, и индексы, и ограничения (constraints)…
Мериться будем?
В официальном тексте приводятся такие сравнительные числа с прошлыми версиями:
- До 350000 запросов на чтение в секунду (в 4 раза быстрее)
- Index-only сканирование может дать прирост в скорости от 2 до 20 раз
- До 14000 записей данных в секунду (в 5 раз быстрее)
Не знаю, насколько стоит верить данным пузомеркам, ведь скорее всего результаты получены на синтетических замерах, но все же…
Автор: pasha_golub