SELECT * FROM (
-- Внутренний подзапрос, применяющий оконную функцию LAG() к таблице calls
SELECT *,
LAG(duration) OVER (PARTITION BY cid_from ORDER BY call_time) AS previous_duration
FROM calls
) AS subquery
-- Основной запрос, фильтрующий результаты
WHERE duration > 20 -- Длительность звонка больше 20 минут
AND previous_duration < 2; -- Предыдущая длительность меньше двух минут
Чтобы утечка проявила себя более явно установил memory_limit = 1G
PostgreSQL 15 содержит много новых возможностей и улучшений, в том числе:
- Поддержка SQL-команды MERGE.
- Выборочная публикация содержимого таблицы в рамках логической репликации с возможностью указывать списки столбцов и фильтры строк.
- Больше возможностей для использования сжатия и поддержка сжатия Zstandard (zstd). В том числе реализована возможность сжатия на стороне сервера при создании копии с помощью pg_basebackup.
- Поддержка структурированного вывода журнала сервера в формате JSON.
- Улучшения производительности, в частности, оптимизация операций сортировки в памяти и на диске.
PostgreSQL 14 содержит много новых возможностей и улучшений, в том числе:
- Хранимые процедуры теперь могут возвращать данные через параметры OUT.
- Реализованы описанные в стандарте SQL параметры SEARCH и CYCLE для общих табличных выражений.
- Операцию обращения по индексу теперь можно применять не только к массивам, но и к любому типу данных, для которого она имеет смысл. В этом выпуске такие операторы добавлены для типов jsonb и hstore.
- Диапазонные типы были дополнены мультидиапазонными, позволяющими представлять несплошные диапазоны данных.
- Проведена большая работа по улучшению производительности параллельных запросов, обработки многопоточной нагрузки, секционированных таблиц, логической репликации и процедуры очистки.
- Изменения в индексах-B-деревьях теперь обрабатываются более эффективным методом, уменьшающим замусоривание индексов.
- Процедура VACUUM автоматически становится агрессивнее и пропускает несущественные операции очистки в случае приближения базы данных к моменту зацикливания идентификаторов транзакций.
- Расширенную статистику теперь можно собирать по выражениям, что позволяет получить лучшие планы для сложных запросов.
- Библиотека libpq теперь поддерживает конвейерную передачу нескольких запросов, что позволяет ускорить получение результатов через сетевые соединения, которым свойственны большие задержки.
Что означает ошибка «Error: relocation ... cannot be used with -shared»
gcc -fpic
). Из-за того что динамические библиотеки могут быть загружены в процесс по любому адресу существует требование, что код в них должен быть position-independent. Поэтому объектники скомпилированные как position-dependent обычно не могут быть слинкованы в динамическую библиотеку. R_AARCH64_TLSLE_ADD_TPREL_HI12
говорит (частью TLSLE, где LE означает Local Executable) о том, что код объектника в котором она находится был намеренно собран с рассчётом на то, что объектник будет частью исполняемого файла, а не динамической библиотеки. Здесь можно почитать об отличиях моделей адресации TLS, в частности о модели Local Exec в разделе 4.4. Вот есть таблица с 1000 записей. В ней 9 колонок. На 3 из них есть индексы.
1. Возможно ли дозапись новой колонки в существующую структуру? Или под капотом происходит полное копирование всех данных в новую таблицу (табличное пространство?)
2. Происходит ли пересоздание индексов?
3. Происходят ли какие-то еще важные для понимания сути работы в БД процессы?