Skip to content

Введение в управление параллелизмом в PostgreSQL

Пересказ статьи Paul S.Randal. An Introduction to PostgreSQL Concurrency Control


Будучи длительное время консультантом по базам данных, я разрешил больше проблем, связанных с блокировками в базах данных, чем могу сосчитать. Зачастую эти блокировки возникали из-за конфликта между процессами, которым требовалось читать строки, модифицируемым в это время.

PostgreSQL использует оптимистическую систему изоляции, известную как Многоверсионный Контроль Параллелизма (MVCC). MVCC гарантирует, что транзакции, записывающие данные в базу, не блокируют параллельные транзакции, которым требуется читать модифицируемые данные. Это работает посредством магии версионности строк - PostgreSQL создает версии строк в таблицах базы данных для минимизации блокировок при параллельном доступе. По мере того, как все больше версий создается, для обеспечения надлежащего обслуживания таблиц должен использоваться механизм управления сборкой мусора, называемый VACUUM. В настоящей статье я объясню, как все это работает на ряде примеров. Continue reading "Введение в управление параллелизмом в PostgreSQL"

Новости за 2022-12-24 - 2022-12-30

§ С наступающим Новым годом, коллеги! Здоровья и успехов.


§ В ответ на замечания Шведа Сауля усилена проверка задачи 180 (обучающий этап).


§ Популярные темы недели на форуме


Топик		Сообщений
190 (Learn) 6
Guest's book 4
29 (Learn) 3
189 (Learn) 2
37 (Learn) 2
Continue reading "Новости за 2022-12-24 - 2022-12-30"

Простая лабораторная работа для демонстрации опасности NOLOCK в операторах INSERT

Пересказ статьи William Assaf. A simple lab to demonstrate the danger of NOLOCKs in INSERT statements


Уровню изоляции READ UNCOMMITTED, который активирует табличный хинт NOLOCK, не следует доверять, когда он используется при записи данных. Вы не всегда защищены ошибкой 1065 в случаях, когда запись сталкивается с NOLOCK. Continue reading "Простая лабораторная работа для демонстрации опасности NOLOCK в операторах INSERT"

Введение в B-Tree и хэш-индексы в PostgreSQL

Пересказ статьи Paul S. Randal. An Introduction to B-Tree and Hash Indexes in PostgreSQL


В этой статье изучаются реализация B-Tree (B означает сбалансированное) и структуры данных хэш-индекса в PostgreSQL. По мере роста популярности PostgreSQL в качестве системы баз данных с открытыми кодами для разработчиков и как цель для переноса рабочей нагрузки Oracle, понимание работы индексов в PostgreSQL исключительно важно для разработчиков и администраторов баз данных. PostgreSQL имеет несколько других типов индексов, таких как индексы GIN, индексы GiST и индексы BRIN. В этой статье я не буду их рассматривать, поскольку они специфичны для поиска в тексте, географических и других сложных типов данных. И, хотя использование индекса B-Tree покрывает примерно 90% случаев использования, хэш-индексы и их концепция также важны для понимания.
Continue reading "Введение в B-Tree и хэш-индексы в PostgreSQL"

EXECUTE AS USER или EXECUTE AS LOGIN

Пересказ статьи Kenneth Fisher. EXECUTE AS USER vs EXECUTE AS LOGIN


Я часто использую имперсонализацию. Это действительно простой способ проверки, имеет ли кто-то разрешения, которые у него должны быть. Итак, коллега недавно задал интересный вопрос. Они тестировали разрешения на синоним.

EXECUTE AS User='Domain/NetworkName';
SELECT Col1, Col2 FROM SynonymName;
-- SynonymName == OtherDB.dbo.TableName
Continue reading "EXECUTE AS USER или EXECUTE AS LOGIN"

SQL Server 2022: Появление функции DATETRUNC, поэтому вы можете обрезать даты и прочее

Пересказ статьи Erik Darling. SQL Server 2022: Introduces the DATETRUNC Function, So You Can Truncate Your Dates And Stuffr


Важность


Когда я впервые сел за написание этой статьи, то делал забавную ошибку: я постоянно продолжал писать DATE_TRUNC.

В SQL Server это называется DATETRUNC.

Почему? Потому что так она реализована в PostgreSQL и DB2. В Oracle, конечно, она просто называется TRUNC.

Так что, хотя было бы неплохо иметь одинаковое поведение (как казалось), это точно не помогает, если у вас нет эквивалента 1:1 вызова с другими платформами. Continue reading "SQL Server 2022: Появление функции DATETRUNC, поэтому вы можете обрезать даты и прочее"

Хранимые процедуры или sp_executesql в SQL Server: что лучше?

Пересказ статьи Erik Darling. Stored Procedures vs sp_executesql In SQL Server: Is One Better Than The Other


Мне часто задают этот вопрос клиенты, главным образом, в следующих двух конкретных случаях:

  • Кто-то мне говорил, что им потребовалось использовать динамический SQL в хранимой процедуре.

  • Приложения, отправляющие параметризованные операторы SQL, которые выполняются с помощью sp_executesql.

Continue reading "Хранимые процедуры или sp_executesql в SQL Server: что лучше?"

Как работает конфигурация MySQL?

Пересказ статьи Lukas Vileikis. How Does MySQL Configuration Work?


Если вы хоть немного времени работали с MySQL, то вероятно слышали об одном из её хорошо известных файлов: my.cnf. my.cnf - это конфигурационный файл, специфичный для MySQL и всех ее вариантов, и это то место, куда нужно обращаться всякий раз, когда возникают ошибки конфигурации MySQL. Конечно, мы можем установить пару настроек при запуске MySQL с помощью опций "--", но это не так много, более эффективно установить параметры конфигурации в самом файле. Continue reading "Как работает конфигурация MySQL?"

Введение в новое предложение SELECT WINDOW в SQL Server

Пересказ статьи Hasan Savran. Introduction to new the SELECT WINDOW Clause in SQL Server


Операции WINDOW в SQL Server бывает трудно понять. Я полагаю, что одна из главных причин этого заключается в длинном и повторяющемся коде, который они требуют. Предложение SELECT...WINDOW поможет удалить повторяющийся код и, надеюсь, сделает операции WINDOW более дружественными.

Давайте взглянем сначала на следующий пример. Когда вы смотрите на это впервые, то кажется, что происходит много всего. Потом вы понимаете, что здесь много повторяющегося кода. Continue reading "Введение в новое предложение SELECT WINDOW в SQL Server"

Исчерпывающее руководство по генерируемым столбцам в MySQL

Пересказ статьи Antonello Zanini. A Complete Guide to Generated Columns in MySQL


Генерируемые столбцы в MySQL позиционируются как мощный, легкий в использовании и продвинутый инструмент, позволяющий добавить автоматически сгенерированные данные в свои таблицы. Здесь мы изучим все, что необходимо знать для работы с ними.

Генерируемые столбцы позволяют хранить в таблице автоматически генерируемые данные без использования предложений INSERT и UPDATE. Эта полезная функциональность стала частью MySQL, начиная с версии 5.7, и представляет альтернативу триггерам для генерации данных. Помимо этого, генерируемые столбцы могут помочь вам написать более простой и более эффективный запрос. Continue reading "Исчерпывающее руководство по генерируемым столбцам в MySQL"