Как стать автором
Обновить
7

Microsoft SQL Server *

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

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

План запроса с оператором PIVOT

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

По материалам статьи Craig Freedman: PIVOT Query Plans

В предыдущей статье был дан обзор оператора PIVOT. В этой статье рассмотрим планы запросов при использовании оператора PIVOT. Как мы далее увидим, SQL Server создаёт простой план запроса, который, по сути, представляет собой вариацию плана с агрегацией.

Читать далее
Всего голосов 1: ↑1 и ↓0+1
Комментарии0

1С Миссия невыполнима. Общие реквизиты разделители против временных таблиц

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

Механизм общих реквизитов разделителей 1С создает излишнюю\негативную нагрузку на структуру базы данных, но еще больше проблем доставляет при использовании временных таблиц.

Читать далее
Всего голосов 5: ↑4 и ↓1+3
Комментарии11

SQL Server & Powershell: быстро, просто, параллельно. И больше не нужно выбирать 2 из 3-х

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

В настоящей статье описывается процесс параллельного выполнения операций над объектами базы данных Microsoft SQL Server (таблицы, индексы и т.д.) с использованием инструментария Powershell. Наиболее часто используемый сценарий - обслуживание таблиц в базе, но возможно исполнение любых ваших запросов в параллельном режиме. Если для вас это интересно, то...

...добро пожаловать
Всего голосов 4: ↑4 и ↓0+4
Комментарии2

Приключения при настройке сервисов машинного обучения в MS SQL Server 2019

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

В статье описано, как настроить сервисы машинного обучения для R и Python. Несмотря на большой опыт в IT, сразу у меня не работает примерно ничего. Поэтому будут ссылки на то, что делать, если сразу не завелось. В итоге я поставила новый экземпляр с сервисами машинного обучения, которые, наконец! заработали. 

Читать далее
Всего голосов 11: ↑10 и ↓1+9
Комментарии3

Истории

Разбор тестового задания в Тиньков [SQL]

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

Недавно нам прилетело большое тестовое задание от Тиньков-Банка на должность аналитика данных. Там очень много задач, но сегодня мы разберем несколько — остановимся на мелочах и обратим внимание на тонкие моменты.

И, конечно, попишем SQL-запросы!

Читать далее
Всего голосов 10: ↑7 и ↓3+4
Комментарии60

1С БодиПозитив

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

Удаление архивных данных из базы это непростая задача как в 1С так и для любой базы данных. В статье изложены различные способы решения задачи, включая самый эффективный для 1С

Читать далее
Всего голосов 3: ↑3 и ↓0+3
Комментарии13

Как сменить базу данных, если у вас Entity Framework

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

Entity Framework — это удобный фреймворк для работы .NET-приложения с базой данных. По сути, это такая удобная абстракция над БД, которая сама пишет за разработчика оптимальные (ну, почти) SQL-запросы прямо из высокоуровневых LINQ-конструкций. Одной из киллер-фич фреймворка является возможность относительно легко сменить СУБД приложения на какую-нибудь другую. Предположим, разочаровались вы в MySQL или, наоборот, хотите сменить MSSQL на что-то менее дорогое — пожалуйста, EF как абстракция над СУБД в теории может это предоставить, так сказать, by design.

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

Читать далее
Всего голосов 22: ↑21 и ↓1+20
Комментарии15

Оператор PIVOT

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

По материалам статьи Craig Freedman: The PIVOT Operator.

Несколько статей будут посвящены тому как в SQL Server реализован оператор PIVOT и UNPIVOT. Начнем с оператора PIVOT. Оператор PIVOT берет нормализованную таблицу и преобразует ее в другой вид, в котором столбцы результирующей таблицы получаются из значений исходной таблицы. Например, предположим, что мы хотим хранить данные о суммарной выручке от продаж за год по каждому из сотрудников. Для этих целей можно создать следующую таблицу:

Читать далее
Всего голосов 7: ↑7 и ↓0+7
Комментарии6

1C MSSQL Против Матрицы  виртуализации – Перезагрузка

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

Продолжение статьи 1С + MS SQL против Матрицы виртуализации о методах анализа производительности 1С + MS SQL в виртуальной среде. Заключительная развязка оказалась одновременно неожиданной и банальной в духе современной эпохи.

Читать далее
Всего голосов 4: ↑1 и ↓3-2
Комментарии8

Скрипт архивации баз данных Microsoft SQL Server с полной моделью восстановления

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

В продолжение своей предыдущей статьи по архивации БД MSSQL и негативному отклику в связи с отсутствием возможности архивации логов транзакций, работаю я теперь в компании, где понадобилось автоматизировать этот момент для баз в том числе с полной моделью восстановления.

Скрип работает универсально для баз с различной моделью восстановления, в начале скрипта добавлены настройки для относительно гибкого формирования расписания. Скрипт можно поставить с SQL Agent и удобным интервалом (у меня, например, 1 раз час), первый запуск в сутках будет проверять, надо создавать или нет полную или разностную копию сегодня и далее в течении дня для БД с полной моделью восстановления будут создаваться бэкапы лога журнала транзакций.

Читать далее
Всего голосов 2: ↑1 и ↓10
Комментарии15

1С + MS SQL против Матрицы виртуализации

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

Виртуализация в облака стала модным трендом. Однако если вы захотите поместить нагруженную систему в облако - Вас ожидает много разочарований. В статье на реальном примере показано, что Вас ожидает под облаками. Пример приведен для связки MS SQL + 1C но такие же эффекты могут быть и в других приложениях.

 

Читать далее
Всего голосов 10: ↑10 и ↓0+10
Комментарии16

Decorrelating Subqueries

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

По материалам статьи Craig Freedman: Decorrelating Subqueries

В статье про скалярные подзапросы было несколько примеров, в которых оптимизатор мог переписать запрос с коррелированным подзапросом как запрос с соединением. Например, можно было видеть, как представленный ниже простой подзапрос с «in»:

Читать далее
Всего голосов 7: ↑7 и ↓0+7
Комментарии0

Альтернативные методы организации и создания файловых информационных ресурсов

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

Ранее разработки в данном направлении уже велись, и в результате проделанной работы был создан продукт в виде десктопного приложения. К сожалению, он не получил широкого применения, так как использовался узким кругом сотрудников в довольно ограниченной сфере деятельности.

Приложение было разработано на языке программирования Visual Basic 6.0. Для описания содержимого файлов использовалось хранилище, реализованное на SQL server с типом данных varbinary(max).

Читать далее
Всего голосов 3: ↑0 и ↓3-3
Комментарии3

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

One day offer от ВСК
Дата16 – 17 мая
Время09:00 – 18:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн
Антиконференция X5 Future Night
Дата30 мая
Время11:00 – 23:00
Место
Онлайн
Конференция «IT IS CONF 2024»
Дата20 июня
Время09:00 – 19:00
Место
Екатеринбург
Summer Merge
Дата28 – 30 июня
Время11:00
Место
Ульяновская область

Технология SQL-файл, препроцессор для T-SQL, “бок-о-бок” файлы и др

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

Завершив в недавнем прошлом очередную доработку своей легковесной технологии SQL-файл, применяемой для эффективной трансляции файлового SQL-кода в базу данных, автор данной статьи решил в очередной раз представить (в этой заметке теперь, на популярном ресурсе) свои реализованные, хотя бы отчасти, идеи касательно программирования MSSQL, а также некоторые соображения относительно применения SQL вообще. Автор полагает, что несмотря на форму предлагаемой им частной реализации SQL-файл (для MSSQL), лежащая в основе подхода концепция имеет определённую силу и смысл.

Выше на картинке: SQL-трансляция исходных файлов из нескольких директорий (скрипты *.sql), запуск fill_with_data.cmd

Читать далее
Всего голосов 5: ↑3 и ↓2+1
Комментарии14

Анализ степени наслоения (одновременности) процессов

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

Полезная программка ведь не обязана быть большой, правда? Пусть у нас есть процессы, для которых известны времена их начала и завершения. Таких в любой системе пруд пруди. Тот же ExecutionLogStorage в MS SQL Reporting Server, SQL server Profiler Trace, плюс куча кастомных метрик, которые есть у каждого.

Как выполняются эти процессы? Спокойно, один за другим, их хотят маршировать все в ногу? Какова средняя и максимальная степень параллелизма выполнения этих процессов? Хотелось бы получить что-то такое (процессы показаны черточками вверху):

Читать далее
Всего голосов 1: ↑1 и ↓0+1
Комментарии2

MS SQL 2022 killer feature

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

В совсем раннем превью MS SQL мне вежливо отказали. И вот, наконец вышел публичный evaluation релиз! Давайте посмотрим, как MS SQL отнесется к самому неприятному - values with irregular selectivity. У меня про это даже была статья.

Читать далее
Всего голосов 13: ↑9 и ↓4+5
Комментарии10

Эффективная генерация сортируемых GUID для первичных ключей БД на клиенте

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

Использовать Guid.NewGuid() в качестве первичного ключа в базе данных — плохая с точки зрения производительности идея. Это связано с тем, что в SQL Server, MySQL и некоторых других БД для первичных ключей создаются кластерные индексы, которые определяют, как строки будут храниться на диске. GUID — это по сути случайное значение, поэтому новая строка может попасть в начало, середину или конец таблицы. Серверу БД в этом случае придётся перемещать другие строки, что приведёт к фрагментации данных, а их извлечение может занять больше времени, если вам нужно извлечь несколько добавленных последовательно записей (например, когда вы добавляете набор связанных сущностей, которые потом будут извлекаться вместе — БД понадобится прочитать данные из разрозненных страниц вместо последовательного чтения набора данных).

Поэтому, чаще всего, лучше пользоваться сгенерированными БД первичными ключами. В SQL Server, например, есть функция NEWSEQUENTIALID(), которая генерирует последовательные GUIDы. Зачем может понадобиться генерировать ключи именно на клиенте и как это правильно сделать?

Читать далее
Всего голосов 21: ↑21 и ↓0+21
Комментарии35

Read Committed and Updates

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

По материалам статьи Craig Freedman: Read Committed and Updates

create table t1 (a int, b int)

create clustered index t1a on t1(a)

insert t1 values (1, 1)

insert t1 values (2, 2)

insert t1 values (3, 3)

create table t2 (a int)

insert t2 values (9)

Проведём эксперимент. Начнем с создания следующей простой схемы:

Читать далее
Всего голосов 3: ↑3 и ↓0+3
Комментарии2

Serializable vs. Snapshot Isolation Level

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

Эта статья была опубликована на SQL.RU Другие опубликованные там статьи на тему MS SQL Server можно найти в блоге https://mssqlforever.blogspot.com/ Telegram-канал блога тут: https://t.me/mssqlhelp

По материалам статьи Craig Freedman: Serializable vs. Snapshot Isolation Level

Уровни изоляции транзакций Serializable и Snapshot обеспечивают согласованное чтение из базы данных. На любом из этих уровней изоляции транзакция может читать только зафиксированные данные. Более того, транзакция может читать одни и те же данные несколько раз, не заботясь о каких-либо параллельных транзакциях, вносящих изменения в эти же данные. Те нежелательные эффекты, которые были продемонстрированы в предыдущих статьях при Read Committed и Repeatable Read, на уровнях изоляции Serializable и Snapshot просто невозможны.

Читать далее
Всего голосов 8: ↑7 и ↓1+6
Комментарии12

Уровень изоляции «Repeatable Read»

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

Эта статья была опубликована на SQL.RU Другие опубликованные там статьи на тему MS SQL Server можно найти в блоге https://mssqlforever.blogspot.com/ Telegram-канал блога тут: https://t.me/mssqlhelp

По материалам статьи Craig Freedman: Repeatable Read Isolation Level

В двух предыдущих статьях (12) было продемонстрировано как запросы с уровнем изоляции «read committed» могли порождать неожиданные результаты. Это становилось возможным из-за выполняющихся в одно и то же время изменений затронутых запросом строк. Чтобы недопустить подобных неожиданностей (но не всех), следует использовать для выборки уровень изоляции «repeatable read». В этой статье мы как раз и рассмотрим как одновременные изменения ведут себя с уровнем изоляции «repeatable read» (повторяемое чтение).
В отличие от просмотра с «read committed», просмотр с «repeatable read» удерживает блокировки каждой затронутой строки до окончания транзакции. На всём протяжении транзакции заблокированными могут оказаться даже некоторые строки, которые не соответствуют выборке в результате запроса. Такое блокирование гарантирует, что затронутые запросом строки не будут изменены или удалены в параллельном сеансе, пока текущая транзакция не будет завершена (независимо от того, будет ли она зафиксирована или произойдёт её откат). Эти блокировки не защищают от изменения или удаления те строки, которые еще не были охвачены просмотром, и не препятствуют вставке новых строк межу уже заблокированными строками.

Читать далее
Всего голосов 4: ↑4 и ↓0+4
Комментарии0