Пересказ статьи Lorenzo Uriel. Everything you Need to Know About Index in SQL Server
Цель настоящей статьи - рассказать просто об индексах в SQL Server, объяснив фундаментальные понятия и предложив практические советы по обслуживанию.
Я обязуюсь обеспечить легкое и быстрое чтение, упрощающее понимание этого важного аспекта в области баз данных и управлении запросами.
Темы
- Обзор индексов
- Типы индексов в SQL Server
- Кластеризованные индексы.
- Некластеризованные индексы.
- Поколоночный и построчный индексы.
- Фрагментация индексов
- Внутренняя и внешняя.
- Перестройка и реорганизация.
Continue reading "Все, что вам нужно знать об индексе в SQL Server"
Пересказ статьи Julien Van Beveren. Forcing the Postgres query planner into using the correct index using OFFSET 0
MySQL имеет возможность применять хинт USE INDEX для указания, какие индексы использовать при выполнении конкретного запроса. PostgreSQL не имеет такой особенности, полагая, что он лучше знает, когда и какие индексы использовать.
Перед выполнением запроса PostgreSQL строит "план". Это сложный процесс, который я хотел бы понимать досконально, но планировщик запросов главным образом смотрит на существующие индексы, распределение данных и фильтры запроса, чтобы найти различные способы вернуть затребованные вами данные. Затем он оценивает "стоимость" каждой операции и выполняет "самый дешевый" план. Это работает отлично до тех пор, пока не...
Continue reading "Принудительное использование планировщиком запросов Postgres правильного индекса с помощью OFFSET 0"
Пересказ статьи Steve Jones. Friday Flyway Tips – Inserting Column in the Middle of a Table
Заказчик мне задал вопрос, может ли Flyway Desktop (FWD) вызвать проблемы, если разработчики добавили столбцы в середину таблицы. Это обоснованное беспокойство, и данная статья показывает, что FWD не вызывает проблем, даже если ваши разработчики глупят.
Если только они не захотят это сделать специально.
Я много работал с Flyway Desktop с тех пор, как мы перешли с устаревших плагинов для SSMS на автономный инструмент.
Сценарий
Представим, что у вас есть подобная таблица с несколькими столбцами.
CREATE TABLE Product
( ProductID INT NOT NULL CONSTRAINT ProductPK PRIMARY KEY
, ProductName VARCHAR(50)
, ProductDesc VARCHAR(1000)
, ProductSize CHAR(1)
, ProductWeight INT
, ProductColor VARCHAR(20)
, StatusID int
)
GO
Эта таблица имеет одинаковую структуру на сервере разработки и на продакшене, и мне нужно добавить новый столбец. Нам необходимо знать количество в упаковке, поскольку у новых товаров в коробке содержится несколько штук, так что необходимо добавить в таблицу столбец ProductQtyPerUnit.
Continue reading "Вставка столбца в середину таблицы"
Пересказ статьи Andy Brownsword. Comparing Performance of TOP vs. MAX
Как TOP(1), так и MAX могут использоваться для нахождения наибольшего значения в наборе данных. Хотя они приводят к одному и тому же результату, но делают это разными способами.
Для начала разберемся, в чем разница между ними?
Предложение TOP ограничивает число результатов, возвращаемых запросом; тут мы рассматриваем единственный результат. При использовании MAX, напротив, мы применяем функцию к нашим данным, чтобы выбрать из них максимальное значение.
Давайте перейдем к нескольким примерам с данными StackOverflow, а конкретно таблицы Votes.
Continue reading "Сравнение производительности TOP и MAX"
Пересказ статьи Bitnine Global. Converting Oracle PL/SQL to PostgreSQL PL/pgSQL
Добро пожаловать в мир программирования баз данных, в котором языки Oracle PL/SQL и PostgreSQL PL/pgSQL помогают привнести структуру и логику в данные. Эти процедурные языки являются основой внедрения бизнес-правил и манипуляции данными в сами базы данных, играя важную роль в администрировании баз данных.
Оба языка предоставляют возможность использовать переменные, операторы управления типа IF, CASE и LOOP, а также управлять исключениями - инструменты, необходимые для адаптивных и динамичных процедур работы с базами данных. Когда бы вы ни создавали новые функции или выполняли сложные процедуры, синтаксис CREATE PROCEDURE и CREATE FUNCTION станет частью вашего стандартного инструментария.
По мере того, как мы погружаемся в процесс преобразования из Oracle PL/SQL в PostgreSQL PL/pgSQL, мы будем открывать важные детали, необходимые для гладкого перехода.
Continue reading "Преобразование Oracle PL/SQL в PostgreSQL PL/pgSQL"
Пересказ статьи Kasper Junge. A Brief Guide to the PostgreSQL CLI
Использование интерфейса командной строки PostgreSQL (CLI) в первую очередь включает взаимодействие с двумя главными утилитами: psql, интерактивный терминал для работы с PostgreSQL, и различные инструменты командной строки типа pg_dump для резервных копий базы данных. Вот руководство, с которого можно начать:
Начнем с psql
Доступ к CLI:
- Откройте ваш интерфейс командной строки (терминал на Linux/macOS, командную строку или PowerShell на Windows
- Наберите psql -U [имя пользователя] -d [база данных] для подключения к вашей базе данных PostgreSQL. Замените [имя пользователя] на имя реального пользователя PostgreSQL, а [база данных] - на имя базы данных.
- Вам может потребоваться указать хост (-h [хост]) и порт (-p [порт]), если ваша база не находится на локальном севере и не использует порт по умолчанию.
Continue reading "Краткое руководство по PostgreSQL CLI"
Пересказ статьи Victor Magallanes. A Step-by-Step Guide: Restoring a PostgreSQL Database from a Dump SQL File
PostgreSQL является мощной системой управления реляционными базами данных с открытыми кодами, широко используемой для хранения и управления данными в различных приложениях. Иногда вам необходимо восстановить базу данных PostgreSQL из файла дампа SQL в случаях повреждения в результате сбоя, переноса или тестирования. В этой статье мы представим полное руководство по восстановлению базы данных PostgreSQL из файла дампа SQL, описав необходимые шаги и лучшую практику.
Понятие файлов дампа базы данных
Прежде чем перейти к процессу восстановления, давайте разберемся с тем, что представляет собой файл дампа базы данных. Дамп базы данных - это файл, содержащий снимок схемы базы данных и данных на конкретный момент времени. Этот файл обычно генерируется утилитой pg_dump, входящей в пакет PostgreSQL, и содержит команды SQL для воссоздания структуры базы данных и вставки в нее данных.
Continue reading "Пошаговая инструкция восстановления базы данных PostgreSQL из файла дампа SQL"
Пересказ статьи Dileep kumar. Bulk Insert with postgres_fdw in PostgreSQL 14
В этой статье мы обсудим представление модулем postgres_fdw обертки внешних данных, которая может использоваться для доступа к данных, хранящимся на внешних серверах PostgreSQL.
Этот новый модуль подобен старому модулю dblink. Функционально postgres_fdw является обработчиком данных полей для удаленных таблиц в PostgreSQL, который делает это более прозрачно и в соответствии со стандартом.
Continue reading "Массовая вставка в PostgreSQL 14 с помощью postgres_fdw"
Пересказ статьи Exploring Performance: Raw SQL Queries vs. ORM in Python
В приложениях, управляемых данными, очень важна оптимизация производительности. Когда приходится взаимодействовать с данными, разработчики часто оказываются на распутье: следует ли им непосредственно использовать запросы SQL или выбрать фреймворк объектно-реляционного отображения (ORM)? Эта статья углубляется в эту дискуссию, выделяя преимущества и недостатки обоих подходов, сопровождая их реальными примерами кода Python для более глубокого понимания.
Понимание ландшафта
Прямые запросы SQL встраиваются непосредственно в ваш код для взаимодействия с данными. Они предоставляют разработчикам детальное управление структурой и выполнением запроса, что делает их привлекательными для сложных запросов. С другой стороны, фреймворки ORM типа SQLAlchemy абстрагируют взаимодействие с базой данных в объекты Python, снижая необходимость писать непосредственно на SQL, улучшая при этом читабельность кода.
Continue reading "Исследование производительности: прямые SQL-запросы или ORM в Python"
Пересказ статьи Rich Benner. SQL Server Antipatterns: Common Mistakes with SQL Code
В современном технически насыщенном мире от разработчиков требуется широкий диапазон навыков и языков программирования. Язык SQL обычно является одним из них. Это гарантирует, что в команде возможна взаимная поддержка на ежедневной основе, но это также может приводить к ошибкам в коде SQL.
Одной из потенциальных проблем здесь является нехватка времени для того, чтобы действительно глубоко вникать в каждый язык программирования, имеющийся в вашем арсенале. Что касается SQL Server, то язык, который там используется, весьма отличается от, скажем, C#. Эти языки основаны на обработке в итерационном процессе каждой строки отдельно в наборе данных. Это достаточно хорошо работает в подобных языках, но совершенно ужасно в SQL Server. Будучи языком, основанном на теории множеств, SQL Server предпочитает иметь дело сразу со всем множеством данных.
Continue reading "Антипаттерны SQL Server: характерные ошибки кода SQL"
Пересказ статьи Andy Brownsword. A Bit About Trivial Plans
Тривиальный план создается, когда у SQL Server нет никакого выбора по реализации. Вот пример из базы данных StackOverflow с удаленными индексами:
SELECT *
FROM dbo.Users
WHERE Id = 1234;
Здесь действительно нет никакого выбора помимо поиска в кластеризованном индексе. Это единственный индекс и это настолько же эффективно, насколько это возможно, учитывая, что мы фильтруем по ключу кластеризации для конкретного значения:
Continue reading "Немного о тривиальных планах"