Как стать автором
Поиск
Написать публикацию
Обновить
-0.2

Microsoft SQL Server *

Система управления реляционными базами данных

Сначала показывать
Порог рейтинга
Уровень сложности

MSSQL: сравниваем data compression и backup compression

Время на прочтение2 мин
Количество просмотров2.4K

MSSQL поддерживает компрессию бэкапов на лету - легковесную и быструю. Также данные можно внутри базы упаковать с помощью DATA_COMPRESSION = PAGE или ROW. Как мы помним, упакованные данные плохо пакуются. Как упаковка данных повлияет на размер бэкапа?

Читать далее

Как неПросто сделать холодный бэкап Postgres

Уровень сложностиПростой
Время на прочтение10 мин
Количество просмотров8.2K

File system level backup  в Postgres это первое чему нужно научится при использовании Postgres . Никакие pg_dump \ pg_restore не заменят Полный бэкап на уровне файлов. File system level backup это первая ступень для подготовки к Continuous archiving. Понимание архитектуры хранения – это фундамент, по которому можно понять сможете ли Вы жить с Postgres на больших объемах или у Вас другой путь?

Начать копировать кластер правильно

Стартуем без транзакции. Альтернативный вариант вопросов на собеседовании «по SQL»

Уровень сложностиСредний
Время на прочтение29 мин
Количество просмотров14K

Статей о селектах хватает, попробуем про апдейты. "ТОП-100" вопросов не обещаю - тут бы с одним разобраться. Разработчиков OLTP-систем под MS SQL Server и кандидатов на подобные вакансии приглашаю под кат.

Код на T-SQL, и он идеален. Атомарности нет, целостность вернём ручными апдейтами, изоляция с дюрабилити только мешают. Программируем без оглядки на ACID, который жив лишь в статье википедии.

ACID поломать, код не исправить

Частичная агрегация

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров2K

В нескольких предыдущих статьях обсуждалось, как в SQL Server реализована агрегация, были рассмотрены операторы агрегирования потока и хеш-агрегат. Я также использовал хеш-агрегат в качестве примера в статье Введение в распараллеливание исполнения запроса. В этой статье мы рассмотрим частичную агрегацию. Частичная агрегация — это метод, который SQL Server использует для оптимизации параллельной агрегации. Прежде чем начать, я хочу отметить, что рассуждения о частичной агрегацию можно найти в книге Inside Microsoft SQL Server 2005 : Query Tuning and Optimization (см. страницу 187 внизу).

Читать далее

Простая выгрузка из БД Microinvest в 1С Битрикс

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров989

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

Читать далее

Бэкап, бэкап и еще раз бэкап

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров14K

Речь сегодня пойдет об отказоустойчивости и даже о катастрофоустойчивости.

Почему вроде бы правильно настроенное архивирование базы данных не всегда помогает спасти систему в случае инцидентов? Этим вопросом я, наверное, многих даже задел за живое. Одних тем, что сама постановка вопроса им кажется абсурдной – у этой группы админов все настроено идеально, работает как часы и они готовы к любым катаклизмам. А кого-то тем, что напоминаю о тех самых инцидентах, когда возвращаться в тот день, даже мысленно, совсем не хочется.

В рамках проектов аудита производительности мы обязательно проверяем систему заказчика на предмет используемых средств отказоустойчивости и катастрофоустойчивости. И если есть основания, обязательно предоставляем рекомендации по улучшениям. Соответствующий раздел в своё время стал обязательным в каждом отчёте аудита не на пустом месте. За долгие годы мы встречались с таким количеством ситуаций, что можно начинать писать книгу :) Сама по себе ситуация краха системы редкая, поэтому вопросы отказоустойчивости далеко не везде в приоритете, а с учетом распространения в последние годы разнообразных ЦОД’ов, появляется большой соблазн снять с себя ответственность за целостность базы данных и непрерывного доступа к ней. Так что, с появлением ЦОД’ов люди совсем расслабились. А зря.

 Опишу несколько характерных примеров из нашей практики, с которыми мы столкнулись, причем в роли спасателей клиентской инфраструктуры и данных. Иногда на кону стояло само существование БД, иногда – интервал потерянных данных, иногда – время простоя бизнеса.

Читать далее

Эволюция системы разработки на SQL

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров5.9K

Мы — SQL команда Срочного рынка Московской Биржи, занимаемся разработкой и сопровождением бэкофиса торгово-клиринговой системы Spectra с момента ее возникновения. Срочный рынок Московской Биржи — это более 500 фьючерсных и 30000 опционных инструментов, несколько миллионов сделок в день.

Торгово-клиринговая система Срочного рынка (ТКС Spectra) изначально строилась на основе MS SQL, и за пару десятков лет прошла сложный путь от нескольких серверов БД до огромной системы с сервис-ориентированной архитектурой. Долгое время вся бизнес-логика системы разрабатывалась в программном слое на серверах MS SQL: и матчинг заявок, и расчет обеспечения, и управление клиентами были реализованы на T-SQL.

На сегодняшний день весь высоконагруженный функционал вынесен в отдельные сервисы, но в базах данных остаются сотни таблиц и тысячи программных объектов. Особенностью кода является высокая когнитивная и цикломатическая сложность. Управлять этим кодом с учетом всех требований по надежности и быстродействию – очень интересная задача.

В этой статье мы хотим рассказать об эволюции нашей системы разработки на SQL.

Читать далее

Рекурсивные CTE

Уровень сложностиСложный
Время на прочтение10 мин
Количество просмотров11K

Одним из наиболее важных применений CTE являются рекурсивные запросы, для которых CTE является фактически единственным средством реализации. Как отмечалось в предыдущей статье, в Books Online есть несколько примеров использования CTE, включая и рекурсивный CTE. Тут мы будем использовать эти примеры из Books Online, используя один из ранних образов базы данных AdventureWorks.

Рекурсивные CTE все сделаны по одному шаблону. Тело CTE представляет собой запрос с UNION ALL, который объединяет один или несколько подзапросов называемых закреплёнными элементами, которые заполняют набор результатов. Кроме закреплённых элементов есть один или несколько рекурсивных подзапросов, называемых рекурсивными элементами, которые возвращают оставшуюся часть результирующего набора. Эти рекурсивные подзапросы ссылаются на сам рекурсивный CTE. Получается, у нас есть один или несколько закреплённых подзапросов и один или несколько рекурсивных подзапросов, объединенных UNION ALL. 

Читать далее

Инструкция по бэкапу одной базы в Postgres – миф или реальность

Уровень сложностиПростой
Время на прочтение10 мин
Количество просмотров14K

Бэкап в Postgres состоит из набора граблей, которые нужно обойти для успешного восстановления. Они заложены в самых неожиданных местах от предмета резервного копирования (база или кластер), до структуры каталогов. Один неверный шаг и восстановление будет невозможным. Почему нельзя  было сделать проще как в MS SQL или Oracle? Почему бэкап в Postgres оставляет впечатление чьей то лабораторной работы? Статья адресована прежде всего специалистам 1С избалованным комфортом в MS SQL, в суровых буднях импортозамещения на Postgres.

Сохранить в бэкап

Common Table Expressions

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров48K

Common Table Expressions (CTE) или обобщенное табличное выражение, впервые появилось в версии SQL Server 2005, и это простой способ разбить сложный запрос T-SQL на несколько запросов, что придаёт больше гибкости и управляемости. CTE во многом очень похожи на представления. В отличие от представления, которое можно создать один раз и потом использовать в других запросах, CTE привязан только к одному запросу. В Books Online есть несколько отличных примеров CTE, включая и рекурсивные CTE. Вместо того, чтобы продемонстрировать их устройство на своих примерах, в этой статье будут использоваться примеры из Books Online. Чтобы попробовать эти примеры у себя, используйте один из ранних образов базы данных AdventureWorks.

Читать далее

Самый старый код в MSSQL

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров9.3K

Ваш покорный слуга работал с MSSQL с версии 6.5, но в качестве экзотики застал версии 6.0 и 4.2. Да, я супер стар!

Но осталось ли в MS SQL что-либо с тех времен?

Читать далее

GROUPING SETS

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров2.9K

В двух последних статьях приводились примеры агрегации WITH ROLLUP и WITH CUBE. В SQL Server 2008 появился новый, более мощный синтаксис, совместимый с ANSI SQL 2006. В этой статье будет рассказано об этих изменениях.

Читать далее

Немного про OR в SQL запросах

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров14K

Несмотря на избитость темы и многочисленные рекомендации избегать OR в выражениях WHERE/ON SQL запросов, жизнь вносит свои коррективы. Иногда сама постановка задачи подразумевает необходимость использовать OR. Я не собираюсь здесь рассматривать простые случаи, а сразу возьму быка за рога и рассмотрю случай, когда OR должно привести к двум разным выборкам по разным индексам одной и той же таблицы.

Читать далее

Ближайшие события

Новое в SQL Server 2022: Microsoft.Data.Sqlclient

Уровень сложностиСредний
Время на прочтение2 мин
Количество просмотров2.9K

Популярная среди администраторов баз данных SQL Server Management Studio (SSMS) для подключения к серверам баз данных (по версию 18.12.1 включительно) использовала System.Data.Sqlclient (SDS). Новая версия SQL Server теперь поставляется с библиотеками Microsoft.Data.Sqlclient (MDS). Пакет Microsoft.Data.SqlClient теперь доступен на NuGet и становится основным способом доступа к данным для SQL Server. Этот пакет поддерживает как .NET Core, так и .NET Framework. Создание нового SqlClient в новом пространстве имен позволяет старому System.Data.SqlClient и новому Microsoft.Data.SqlClient жить бок о бок, хотя это и не происходит автоматически.

Читать далее

Агрегат WITH CUBE

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров2.8K

В предыдущей статье говорилось о том как  работает агрегат WITH ROLLUP. В этой статье мы рассмотрим, как реализована агрегация WITH CUBE. Как и предложение WITH ROLLUP, предложение WITH CUBE позволяет просчитать несколько «уровней» агрегации в одном операторе. Разницу между двумя этими агрегатами давайте рассмотрим на примере. Мы будем использовать те же вымышленные данные о продажах, что и в прошлый раз.

Читать далее

Новое в SQL Server 2022: изменения в функции ISJSON

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров2.2K

SQL Server поддерживает работу с данными типа JSON, и имеет для этого необходимый функционал, в который входит функция ISJSON, для проверки, соответствует ли значение типу JSON. Она вернет 0, если это не правильный JSON, и 1, если JSON правильный. Если JSON содержит недопустимые данные, функция помогает это обнаружить.

Читать далее

Записки оптимизатора 1С (часть 5). Ускорение RLS-запросов в 1С системах

Уровень сложностиСредний
Время на прочтение81 мин
Количество просмотров9.3K

Замахнемся сегодня на RLS.

Обсуждать будем проблемы по нашему профилю, связанные с производительностью 1С:Предприятие. Но, в целом, этот материал может быть полезен и не только 1С-никам.

Почему запросы с RLS часто такие долгие?

Какие есть варианты их ускорить?

Читать далее

Рекомендации по ведению SQL-кода

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров24K
В этом материале разберем общие рекомендации по ведению SQL-кода на примере СУБД MS SQL (T-SQL). Однако, многие пункты можно также применить и к другим СУБД.
Читать дальше →

Новое в SQL Server 2022: опция WAIT_AT_LOW_PRIORITY в команде DBCC SHRINKDATABASE

Уровень сложностиСредний
Время на прочтение2 мин
Количество просмотров1.4K

Новая опция WAIT_AT_LOW_PRIORITY в команде DBCC SHRINKDATABASE предоставляет возможность снизить конкуренцию за блокировки во время сжатия базы или файла, заставляя сжатие пережидать окончание других операций на сервере, блокирующих сжатие. Это похоже на опцию WAIT_AT_LOW_PRIORITY для онлайн операций с индексами, но с некоторыми отличиями.

Читать далее

Проблемы при переходе с MS SQL на PostgreSQL. Типы данных

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров12K

Исходя из того, что предыдущую статью не заминусовали и даже не сильно критиковали, попробую продолжить серию и поделиться с проблемами некоторых различий типов данных в MS SQL и PostgreSQL.

Читать далее