Продолжение поста про расширения PostgreSQL.
Все что не влезло в предыдущий)
8) citext - case-insensitive хранение, а скорее сравнение строк в БД.
Создание таблицы с case-insensitive столбцом и вставка данных:
Поиск без учета регистра:
9) pg_stat_kcache - еще больше статистики по выполнению запросов, в особенности про работу с файловой системой - например, чтение из кэша ОС vs чтение с диска.
Что за данные собираются - можно узнать тут https://github.com/powa-team/pg_stat_kcache
Пример запроса: 5 самых затратных по времени запросов, их частоту выполнения, объемы обращений к диску и оперативной памяти, а также количество переключений контекста ядра ОС.
10) isn - добавляет новые типы данных для проверки разного рода штрих кодов EAN13, UPC, ISBN (books), ISMN (music), and ISSN (serials) на допустимые префиксы. У модуля есть минус - набор допустимых префиксов постоянном меняется, следовательно, надо поддерживать актуальность расширения и может быть гэп по времени по поступлению обновлений.
Создание и вставка данных в таблицу с ISBN столбцом (уникальный номер книги):
11) pg_hint_plan - позволяет "прибить гвоздями" кусок плана выполнения запроса
Тут мы указываем, что надо использовать HashJoin и сразу смотрим реальный план выполнения запроса:
12) pg_cron - что делает - понятно. Можно подумать, что расширение нарушает принцип - никакой логики в БД. Но оно полезно для другого - для служебных задач, например, периодически делать VACUUM:
На цифре 12 пожалуй и остановлюсь.
Что еще важно.
Часть расширений уже входит в поставку.
Какие именно - можно узнать выполнив команду:
Набор может различаться, в официальном дистрибутиве их на данный момент 60, в PostgrePro - 48, Сбер Pangolin - 119.
#postgresql #db #plugins
Все что не влезло в предыдущий)
8) citext - case-insensitive хранение, а скорее сравнение строк в БД.
Создание таблицы с case-insensitive столбцом и вставка данных:
CREATE TABLE users (user_id SERIAL PRIMARY KEY, username CITEXT, email CITEXT);
INSERT INTO users (username, email) VALUES ('Иван Смирнов', 'ivan.smironoff@mail.ru');
Поиск без учета регистра:
SELECT * FROM users WHERE username = 'иван смирнов';
9) pg_stat_kcache - еще больше статистики по выполнению запросов, в особенности про работу с файловой системой - например, чтение из кэша ОС vs чтение с диска.
Что за данные собираются - можно узнать тут https://github.com/powa-team/pg_stat_kcache
Пример запроса: 5 самых затратных по времени запросов, их частоту выполнения, объемы обращений к диску и оперативной памяти, а также количество переключений контекста ядра ОС.
SELECT
round(total_exec_time::numeric, 0) AS time,
calls,
pg_size_pretty(exec_minflts * 4096) AS reclaim, pg_size_pretty(exec_majflts * 4096) AS faults,
pg_size_pretty(exec_reads) AS reads, pg_size_pretty(exec_writes) AS writes,
round(exec_user_time::numeric, 2) AS user_time, round(exec_system_time::numeric, 2) AS sys_time,
exec_nvcsws AS virtual_switches, exec_nivcsws AS involuntary_switches,
LEFT(query, 27) AS query_text
FROM pg_stat_statements s
JOIN pg_stat_kcache() k
USING(userid, dbid, queryid)
ORDER BY total_exec_time DESC
LIMIT 5;
10) isn - добавляет новые типы данных для проверки разного рода штрих кодов EAN13, UPC, ISBN (books), ISMN (music), and ISSN (serials) на допустимые префиксы. У модуля есть минус - набор допустимых префиксов постоянном меняется, следовательно, надо поддерживать актуальность расширения и может быть гэп по времени по поступлению обновлений.
Создание и вставка данных в таблицу с ISBN столбцом (уникальный номер книги):
CREATE TABLE test (id isbn);
INSERT INTO test VALUES('9780393040029');
11) pg_hint_plan - позволяет "прибить гвоздями" кусок плана выполнения запроса
Тут мы указываем, что надо использовать HashJoin и сразу смотрим реальный план выполнения запроса:
/*+ HashJoin(pt st) */
EXPLAIN SELECT * FROM s1.t1 st
JOIN public.t1 pt ON (st.id=pt.id);
12) pg_cron - что делает - понятно. Можно подумать, что расширение нарушает принцип - никакой логики в БД. Но оно полезно для другого - для служебных задач, например, периодически делать VACUUM:
SELECT cron.schedule('59 23 * * *', 'VACUUM');
На цифре 12 пожалуй и остановлюсь.
Что еще важно.
Часть расширений уже входит в поставку.
Какие именно - можно узнать выполнив команду:
SELECT * FROM pg_available_extensions;
Набор может различаться, в официальном дистрибутиве их на данный момент 60, в PostgrePro - 48, Сбер Pangolin - 119.
#postgresql #db #plugins
GitHub
GitHub - powa-team/pg_stat_kcache: Gather statistics about physical disk access and CPU consumption done by backends.
Gather statistics about physical disk access and CPU consumption done by backends. - powa-team/pg_stat_kcache