Содержание

Слайд 3

Что нового в PostgreSQL 8.3

Более 280 патчей
Десятки разработчиков из 18 стран
15 месяцев

Что нового в PostgreSQL 8.3 Более 280 патчей Десятки разработчиков из 18
разработки и тестирования

Слайд 4

Что нового в PostgreSQL 8.3

Производительность
Разработчикам баз данных
Администраторам баз данных
Проекты сторонних разработчиков

Новое PostgreSQL

Что нового в PostgreSQL 8.3 Производительность Разработчикам баз данных Администраторам баз данных
8.3

Слайд 5

Что нового в PostgreSQL 8.3

Производительность

Что нового в PostgreSQL 8.3 Производительность

Слайд 6

Что нового в PostgreSQL 8.3

Summer 2007: The 1st PostgreSQL Enterprise-level Benchmark (SPEC*)‏

Что нового в PostgreSQL 8.3 Summer 2007: The 1st PostgreSQL Enterprise-level Benchmark
PostgreSQL 8.2 – 813.73 JOPS
SPECjAppServer2004 2x Sun Fire X4200 appservers (8 cores, 4 chips) and 1 Sun Fire T2000 DB server (8 cores, 1 chips) with PostgreSQL 8.2.4
HW: ~$65,000; SW: $0

Josh Berkus: «...a good day for Open Source»


*) SPEC – Standard Performance Evaluation Corporation, http://spec.org

Oracle 10g – 874.17 JOPS
SPECjAppServer2004 1 HP rx2660 appserver (4 cores, 2 chips) and 1 rx2660 DB server (4 cores, 2 chips) with Oracle Database 10g Enterprise Edition Release 10.2.0.2
HW: ~$74,000; SW: ~$110,000

Экономия $118500 для каждого сервера БД
без потери производительности!

Слайд 7

Что нового в PostgreSQL 8.3

Индексы: GiST и GIN (Фёдор Сигаев, Олег Бартунов)‏

GiST

GIN

Что нового в PostgreSQL 8.3 Индексы: GiST и GIN (Фёдор Сигаев, Олег Бартунов)‏ GiST GIN

Слайд 8

Что нового в PostgreSQL 8.3

HOT (Heap Only Tuples)‏

При обновлении (UPDATE) индекс не

Что нового в PostgreSQL 8.3 HOT (Heap Only Tuples)‏ При обновлении (UPDATE)
меняется, если:
UPDATE не затрагивает проиндексированные столбцы,
новая версия строки записывается на той же странице данных (heap).
«Моментальное» повторное использование места в heap без ожидания процесса VACUUM.

Слайд 9

Что нового в PostgreSQL 8.3

Обновление без HOT

Heap Page
8kb

Page Header

Item1 Ptr

Item2 Ptr

Item3 Ptr

Item

Что нового в PostgreSQL 8.3 Обновление без HOT Heap Page 8kb Page
2: row #1, v2

Item 1: row #1, v1

Item 3: row #1, v3

1

2

3

Index

Слайд 10

Что нового в PostgreSQL 8.3

HOT-обновление

Heap Page
8kb

Page Header

Item1 Ptr

Item2 Ptr

Item3 Ptr

Item 2: row

Что нового в PostgreSQL 8.3 HOT-обновление Heap Page 8kb Page Header Item1
#1, v2

Item 3: row #1, v3

1

Index

2

Слайд 11

Что нового в PostgreSQL 8.3

Asynchronous Commit

SET synchronous_commit TO OFF;
Позволяет отложить fsync на

Что нового в PostgreSQL 8.3 Asynchronous Commit SET synchronous_commit TO OFF; Позволяет
небольшое время (COMMIT без ожидания fsync)‏
возможна потеря небольшой порции данных (порядка 0.2...1.0 сек)‏
нарушение целостности данных невозможно! (в отличие от fsync=off)‏

Слайд 12

Что нового в PostgreSQL 8.3

Надёжность производительности

Что нового в PostgreSQL 8.3 Надёжность производительности

Слайд 13

Что нового в PostgreSQL 8.3

Сглаживание контрольных точек (checkpoint smoothing)‏

«Размазывание» процесса checkoint во

Что нового в PostgreSQL 8.3 Сглаживание контрольных точек (checkpoint smoothing)‏ «Размазывание» процесса
времени, уменьшение интенсивности I/O-операций.
Работает только для background checkpoints (при выключении сервера и явном выполнении команды CHECKPOINT – полная скорость I/O-операций).

Слайд 14

Что нового в PostgreSQL 8.3

Устройство PostgreSQL

Что нового в PostgreSQL 8.3 Устройство PostgreSQL

Слайд 15

Что нового в PostgreSQL 8.3

Synchronized Scans

Позволяет процессу «подсесть» к уже выполняющейся операции

Что нового в PostgreSQL 8.3 Synchronized Scans Позволяет процессу «подсесть» к уже
SeqScan другого процесса

Сессия 1

Сессия 2

синхронизированный просмотр

Слайд 16

Что нового в PostgreSQL 8.3

Кроме того

Autovacuum включён по умолчанию
Несколько параллельных процессов autovacuum
Экономия

Что нового в PostgreSQL 8.3 Кроме того Autovacuum включён по умолчанию Несколько
пространства (varvarlena)‏
VARLENA-значения менее 128 байт: 1 байт вместо 4!
заголовок строки: 24 байта вместо 27!
При «читающих» транзакциях xid не меняется
меньше записей в pg_clog!
Автонастройка bgwriter
ORDER BY ... LIMIT без полной сортировки («Top N» sorting)‏

Слайд 17

Что нового в PostgreSQL 8.3

Пример перехода с 8.2 на 8.3

OLTP-система
80-130

Что нового в PostgreSQL 8.3 Пример перехода с 8.2 на 8.3 OLTP-система
TPS
10% транзакций — модификация данных

Слайд 18

Что нового в PostgreSQL 8.3

Разработчикам баз данных

Что нового в PostgreSQL 8.3 Разработчикам баз данных

Слайд 19

Что нового в PostgreSQL 8.3

Полнотекстовый поиск

contrib/tsearch2 --> ядро системы
Новый синтаксис
Упрощённое создание индекса

Что нового в PostgreSQL 8.3 Полнотекстовый поиск contrib/tsearch2 --> ядро системы Новый
(без триггера)‏
Простая миграция и апгрейд версии PostgreSQL с (8.3 на следующие версии)‏

Слайд 20

Что нового в PostgreSQL 8.3

Полнотекстовый поиск

CREATE TEXT SEARCH DICTIONARY russian_ispell (
TEMPLATE

Что нового в PostgreSQL 8.3 Полнотекстовый поиск CREATE TEXT SEARCH DICTIONARY russian_ispell
= ispell,
DictFile = russian, -- расширение (.dict) добавится автоматически
AffFile = russian,
StopWords = russian
);
ALTER TEXT SEARCH CONFIGURATION utf8_russian
ADD MAPPING FOR hword, word
WITH russian_ispell, russian_stop;
CREATE INDEX i_person__tsvector ON person
USING gin(obj_tsvector);
CREATE INDEX i_person__tsvector ON person
USING gin(to_tsvector('russian', person_name || person_description));

Слайд 21

Что нового в PostgreSQL 8.3

Полнотекстовый поиск
SELECT
ts_rank_cd(obj_tsvector, q) AS rank,
person_name
FROM
person,
plainto_tsquery('футбол

Что нового в PostgreSQL 8.3 Полнотекстовый поиск SELECT ts_rank_cd(obj_tsvector, q) AS rank,
ясенево') q
WHERE
q @@ obj_tsvector
ORDER BY
rank DESC LIMIT 50;

Слайд 22

Что нового в PostgreSQL 8.3

Поддержка XML

Новый тип данных: xml
Стандартные (ISO/ANSI SQL) функции

Что нового в PostgreSQL 8.3 Поддержка XML Новый тип данных: xml Стандартные
публикации SQL/XML
DTD-валидация
XPath: функция xpath() (с поддержкой Namespaces)‏
Альтернативные функции экспорта объектов БД в XML
B-tree и GIN-индексы для XML-данных, полнотекстовый поиск

Слайд 23

Что нового в PostgreSQL 8.3

Поддержка XML

SQL:
SELECT XMLROOT (
XMLELEMENT (
NAME ’some’,

Что нового в PostgreSQL 8.3 Поддержка XML SQL: SELECT XMLROOT ( XMLELEMENT
XMLATTRIBUTES (
’val’ AS ’name’,
1 + 1 AS ’num’
),
XMLELEMENT (
NAME ’more’,
’foo’
)‏
),
VERSION ’1.0’,
STANDALONE YES
);

Результат:
standalone=’yes’ ?>
num=’2’>
foo

Слайд 24

Что нового в PostgreSQL 8.3

Поддержка XML

SELECT *
FROM table1
WHERE ((xpath('//person/@smpl:pid', xdata,
ARRAY[ARRAY['smpl', 'http://example.com']]))[1])::text

Что нового в PostgreSQL 8.3 Поддержка XML SELECT * FROM table1 WHERE
= '111';
CREATE INDEX i_table1_xdata ON table1 USING btree(
(((xpath('//person/@smpl:pid', xdata,
ARRAY[ARRAY['smpl', 'http://example.com']]))[1])::text)‏
);
------------------------------------------------------------------
SELECT *
FROM table1
WHERE ARRAY['111'] <@ xpath('//person/@smpl:pid', xdata,
ARRAY[ARRAY['smpl', 'http://example.com']])::text[];
CREATE INDEX i_table1_xdata ON table
USING gin((xpath('//person/@smpl:pid', xdata,
ARRAY[ARRAY['smpl', 'http://example.com']])::text[]));

Слайд 25

Что нового в PostgreSQL 8.3

Типы данных

GUID/UUID
enum
массивы составных типов

Что нового в PostgreSQL 8.3 Типы данных GUID/UUID enum массивы составных типов

Слайд 26

Что нового в PostgreSQL 8.3

Кроме того

Автоматическая инвалидация плана («чистка» кэша функций)‏
Table Function

Что нового в PostgreSQL 8.3 Кроме того Автоматическая инвалидация плана («чистка» кэша
(RETURN QUERY)‏
Updatable Cursors
ORDER BY NULLS FIRST/LAST (ISO/ANSI SQL)‏
Поддержка NULL-значений в GiST-индексах

Слайд 27

Что нового в PostgreSQL 8.3

Администраторам баз данных

Что нового в PostgreSQL 8.3 Администраторам баз данных

Слайд 28

Что нового в PostgreSQL 8.3

EXPLAIN: больше информации

QUERY PLAN
----------------------------------------------------------------------------------
Sort (cost=34.38..34.42 rows=13

Что нового в PostgreSQL 8.3 EXPLAIN: больше информации QUERY PLAN ---------------------------------------------------------------------------------- Sort
width=176) (actual time=0.946..0.948 rows=6 loops=1)‏
Sort Key: obj2tag.o2t_tag_name
Sort Method: quicksort Memory: 18kB
-> Hash Join (cost=19.19..34.14 rows=13 width=176) (actual time=0.812..0.835 rows=6 loops=1)‏
Hash Cond: (obj2tag.o2t_tag_obj_id = tag.obj_id)‏
-> Bitmap Heap Scan on obj2tag (cost=4.43..19.21 rows=13 width=172) (actual time=0.079..0.093 rows=6 loops=1)‏
Recheck Cond: (o2t_obj_obj_id = 179313440)‏
Filter: (obj_status_did = 1)‏
-> Bitmap Index Scan on u_obj2tag_ids (cost=0.00..4.43 rows=24 width=0) (actual time=0.037..0.037 rows=24 loops=1)‏
Index Cond: (o2t_obj_obj_id = 179313440)‏
-> Hash (cost=9.89..9.89 rows=389 width=12) (actual time=0.700..0.700 rows=389 loops=1)‏
-> Seq Scan on tag (cost=0.00..9.89 rows=389 width=12) (actual time=0.012..0.396 rows=389 loops=1)‏
Total runtime: 1.064 ms
(13 rows)‏

Слайд 29

Что нового в PostgreSQL 8.3

Кроме того

contrib/pg_standby – создание Warm Standby (Linux, Windows)‏
Удаление

Что нового в PostgreSQL 8.3 Кроме того contrib/pg_standby – создание Warm Standby
пользователя вместе со всеми принадлежащими ему объектами
GSSAPI
Улучшенная сборка под Win32 (MS VC++)‏

Слайд 30

Что нового в PostgreSQL 8.3

Кроме того

Оценки стоимости вызовов функций:
ALTER FUNCTION log_data(text)‏

Что нового в PostgreSQL 8.3 Кроме того Оценки стоимости вызовов функций: ALTER
COST 100000 ROWS 1;
Per-function GUC settings:
ALTER FUNCTION log_data(text)‏
SET synchronous_commit TO OFF;
Создание таблиц по «подобию»:
CREATE TABLE dict2 (LIKE dictionary INCLUDING INDEXES);

Слайд 31

Что нового в PostgreSQL 8.3

Проекты-спутники

Что нового в PostgreSQL 8.3 Проекты-спутники

Слайд 32

Что нового в PostgreSQL 8.3

PL/pgSQL Debugger

Что нового в PostgreSQL 8.3 PL/pgSQL Debugger

Слайд 33

Что нового в PostgreSQL 8.3

Продукты Skype

PL/Proxy – прокси-язык для удаленного вызова процедур

Что нового в PostgreSQL 8.3 Продукты Skype PL/Proxy – прокси-язык для удаленного
и партицирования данных между разными базами (sharding)‏
PgBouncer – простой и быстрый менеджер соединений.
SkyTools
WalMgr
Londiste
PgQ

Слайд 34

Что нового в PostgreSQL 8.3

Кроме того

pgSNMP – SNMP-агент для PostgreSQL (мониторинг)‏
SEPostgres –

Что нового в PostgreSQL 8.3 Кроме того pgSNMP – SNMP-агент для PostgreSQL
расширение, основанное на модели SELinux (безопасность)‏
phppgadmin: настройка Slony и полнотекстового поиска, автовакуума
Index Advisor
Имя файла: PostgreSQL-8.4.pptx
Количество просмотров: 541
Количество скачиваний: 2