В PostgreSQL существует очень удобный механизм рекомендательных блокировок, они же — advisory locks. Мы в «Тензоре» используем их во многих местах системы, но мало кто детально понимает, как конкретно они работают, и какие проблемы можно получить при неправильном обращении.
Рубрика «sql» - 21
Фантастические advisory locks, и где они обитают
2020-02-13 в 11:20, admin, рубрики: advisory lock, dba, postgresql, sql, Администрирование баз данных, Алгоритмы, базы данных, Блог компании Тензор, параллельные вычисленияОшибки при работе с датой и временем в SQL Server
2020-02-10 в 12:07, admin, рубрики: Microsoft SQL Server, MS Sql Server, sql, Блог компании OTUS. Онлайн-образованиеПеревод статьи подготовлен специально для студентов курса "MS SQL Server разработчик".

Содержание
- Ошибка #1: Предполагать, что значения даты и времени хранятся в виде форматированных строк
- Ошибка #2: Забыть о людях, которые живут в других частях света
- Ошибка #3: Снова забыть о людях, которые живут в других частях света
- Ошибка #4: Относиться к DATETIME2 только как к более точному DATETIME
- Ошибка #5: Игнорировать округление даты/времени
- Ошибка #6: Делать лишнюю работу для удаления времени из полной даты
- Ошибка #7: Не понимать как работает функция DATEDIFF
- Ошибка #8: Небрежно относиться к условиям поиска
- Ошибка #9: Забыть о диапазонах в типах данных для даты/времени
- Ошибка #10: Не использовать преимуществ функций работы с датой и временем
Как работают реляционные базы данных (Часть 1)
2020-02-09 в 16:53, admin, рубрики: algorithms, dbms, rdbms, sql, Администрирование баз данных, АлгоритмыПривет! Представляю вашему вниманию перевод статьи
"How does a relational database work".
Когда дело доходит до реляционных баз данных я не могу не думать, что чего-то не хватает. Они используются везде. Существует множество различных баз данных: от небольшого и полезного SQLite до мощной Teradata. Но есть только несколько статей, которые объясняют, как работает база данных. Вы можете искать сами по запросу "howdoesarelationaldatabasework" («как работают реляционные базы данных») чтобы увидеть, как мало результатов. Более того, эти статьи — короткие. Если же вы ищете последние модные технологии (BigData, NoSQL или JavaScript), вы найдете больше углубленных статей, объясняющих, как они работают.
Являются ли реляционные базы данных слишком старыми и слишком скучными, чтобы их можно было объяснить вне университетских курсов, исследовательских работ и книг?

Дружим ORDER BY с индексами
2020-02-07 в 12:25, admin, рубрики: backend, db2, indexing, oracle, performance optimization, postgresql, sql, Администрирование баз данных, базы данных, Блог компании Tinkoff.ru
Привет!
Я потихоньку перевожу статьи Маркуса Винанда из блога use the index luke.
Первой статьей в цикле был манифест Маркуса о важности использования безофсетной пагинации на ключах. Мы рассмотрели всего один пример, как этот подход работает на практике. В этой и следующих статьях я буду обосновывать такой подход — с графиками и примерами, как все любят. Читать полностью »
Основы мониторинга PostgreSQL. Алексей Лесовский
2020-02-03 в 7:04, admin, рубрики: mamonsu, pg_monz, pganalyze, pgbadger, pgcenter, pgcluu, pgwatch2, PMM, postgresql, powa, sql, zabbix, Администрирование баз данных, системное администрированиеПредлагаю ознакомиться с расшифровкой доклада Алексей Лесовский из Data Egret "Основы мониторинга PostgreSQL"
В этом докладе Алексей Лесовский расскажет о ключевых моментах постгресовой статистики, что они означают, и почему они должны присутствовать в мониторинге; о том, какие графики должны быть в мониторинге, как их добавить и как интерпретировать. Доклад будет полезен администраторам баз данных, системным администраторам и разработчикам, которым интересен траблшутинг Postgres'а.
SQL HowTo: пишем while-цикл прямо в запросе, или «Элементарная трехходовка»
2020-01-31 в 9:56, admin, рубрики: array, dba, explain, explain.tensor.ru, postgresql, sql, sql tips and tricks, unnest, Администрирование баз данных, Алгоритмы, базы данных, ненормальное программирование, рекурсияПериодически возникает задача поиска связанных данных по набору ключей, пока не наберем нужное суммарное количество записей.
Наиболее «жизненный» пример — вывести 20 самых старых задач, числящихся на списке сотрудников (например, в рамках одного подразделения). Для различных управленческих «дашбордов» с краткими выжимками по участкам работы похожая тема требуется достаточно часто.

В статье рассмотрим реализацию на PostgreSQL «наивного» варианта решения такой задачи, «поумнее» и совсем сложный алгоритм «цикла» на SQL с условием выхода от найденных данных, который может быть полезен как для общего развития, так и для применения в других похожих случаях.
Читать полностью »
PostgreSQL 13: параллельный VACUUM
2020-01-30 в 13:28, admin, рубрики: parallelism, postgresql, sql, vacuum, Блог компании Postgres ProfessionalНа днях Амит Капила закоммитил патч Масахико Савады, который позволяет выполнять очистку в параллельном режиме. Сама таблица по-прежнему очищается одним (ведущим) процессом, но для очистки индексов он теперь может запускать фоновые рабочие процессы, по одному на каждый индекс. В ручном режиме это позволяет ускорить очистку больших таблиц с несколькими индексами; автоматическая очистка пока не использует эту возможность.
Читать полностью »
Знакомство с wal-g системой бекапирования PostgreSQL
2020-01-30 в 7:15, admin, рубрики: backup, postgresql, s3, sql, wal, wal-e, wal-g, Администрирование баз данных, бекапWAL-G — простой и эффективный инструмент для резервного копирования PostgreSQL в облака. По своей основной функциональности он является наследником популярного инструмента WAL-E, но переписанным на Go. Но в WAL-G есть одна важная новая особенность — дельта-копии. Дельта-копии WAL-G хранят страницы файлов, изменившиеся с предыдущей версии резервной копии. В WAL-G реализовано довольно много технологий по распараллеливанию бэкапов. WAL-G работает гораздо быстрее чем, WAL-E.
Почему нужна инструментальная поддержка пагинации на ключах
2020-01-22 в 13:35, admin, рубрики: jooq, oracle, performance optimization, postgresql, sql, sql alchemy, Блог компании Tinkoff.ru, Серверная оптимизацияВсем привет! Я бэкэнд-разработчик, пишу микросервисы на Java + Spring. Работаю в одной из команд разработки внутренних продуктов в компании Тинькофф.

У нас в команде часто встает вопрос оптимизации запросов в СУБД. Всегда хочется еще чуть-чуть быстрее, но не всегда можно обойтись продуманно выстроенными индексами — приходится искать какие-то обходные пути. Во время одного из таких скитаний по сети в поисках разумных оптимизаций при работе с БД я нашел бесконечно полезный блог Маркуса Винанда, автора книги SQL Performance Explained. Это тот самый редкий вид блогов, в котором можно читать все статьи подряд.
Хочу перевести для вас небольшую статью Маркуса. Ее можно назвать в какой-то степени манифестом, который стремится привлечь внимание к старой, но до сих пор актуальной проблеме производительности операции offset по стандарту SQL.


