PostgreSQL 9.2 — официальный релиз

в 12:10, , рубрики: open source, postgresql, release, Софт, метки: ,

PostgreSQL 9.2 — официальный релизСегодня, 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

Поделиться

* - обязательные к заполнению поля