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

Microsoft SQL Server *

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

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

Delayed durability поможет вашему ORM увеличить производительность на 50% и более, если Вы только будете использовать …

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

 ORM (Object‑Relational Mapping) используется во многих языках программирования, в том числе и в 1С. Однако реализация высоконагруженных решений, приводит к мысли что разработчики ORM не учитывали ее влияния на производительность СУБД. Такая ситуация и в 1С и ORM на Java, и наверняка в других ORM.  В предыдущих частях показана глубина проблемы

Концепция ORM как двигатель прогресса — выдержит ли ее ваша СУБД? / Хабр (habr.com)

Концепция ORM как двигатель прогресса – выявит слабое место Вашей СУБД / Хабр (habr.com)

В этой части предложено решение со стороны СУБД (MS SQL , Oracle, Postgres)

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

Концепция ORM как двигатель прогресса – выявит слабое место Вашей СУБД

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

ORM (Object‑Relational Mapping) используется во многих языках программирования, в том числе и в 1С. Однако реализация высоконагруженных решений, приводит к мысли что разработчики ORM не учитывали ее влияния на производительность СУБД. Такая ситуация и в 1С и ORM на Java, и наверняка в других ORM. В предыдущей части статьи Концепция ORM как двигатель прогресса — выдержит ли ее ваша СУБД? были изложены результаты теста, в этой статье ответы на самые часто задаваемые вопросы и новый тест.

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

Внутренняя оптимизация для индексов в «широком» плане запроса

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

В предыдущей статье было показано как SQL Server выполняет изменения в некластерных индексах, но пока только в тех случаях, когда данные в индексе действительно изменяются. В примере из прошлой статьи использовался простой оператор UPDATE, который порождает построчный или «узкий» план запроса. В этой статье будет показано как оптимизируется план с изменениями данных с индексами в «широком» плане запроса.

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

Внутренняя оптимизация операций изменения для индексов

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

Планы запросов на вставку, изменение и удаление состоят из двух частей. Первая часть называется курсор чтения, и она определят то множество строк, которое необходимо вставить, изменить или удалить. Вторая часть называется курсор записи, и в этой части непосредственно происходит вставка, изменение или удаление данных. Давайте рассмотрим простой пример:

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

Истории

Использование фейковых функций в tSQLt для тестирования T-SQL кода

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

Применение практик модульного тестирования для кода базы данных улучшает качество и архитектуру кода, а также позволяет своевременно обнаруживать и устранять ошибки.

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

Работа с SQL Server в C# с помощью скриптинга. Часть 1

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

В этой статье я покажу вам, как работать с Microsoft SQL Server в C# проектах посредством скриптинга. Реализовать это можно как в Windows, так и в macOS. Поскольку Windows, очевидно, является намного более популярной целевой платформой для C# и SQL Server, больше внимания я уделю настройке под macOS. В конце концов, код для этих платформ будет одним и тем же.

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

Введение в модульное тестирование T-SQL помощью tSQLt

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

tSQLt — это мощный фреймворк с открытым исходным кодом для модульного тестирования кода SQL Server. 

Модульное тестирование SQL-кода — полезная практика в разработке баз данных, которая позволяет обнаруживать ошибки до попадания их в продакшн. Хотя надо сказать, есть разные мнения, и некоторые разработчики все еще спорят о необходимости модульного тестирования SQL-кода. Модульное тестирование очень важно для контроля и проверки поведения отдельных частей базы данных и не стоит игнорировать написание модульных тестов кода базы данных. По сути, модульные тесты позволяют автоматически проверять поведение объектов базы данных (хранимых процедур, триггеров, функций и т. д.) при регрессионном тестировании. 

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

Оптимизация поиска по большому полю

Время на прочтение10 мин
Количество просмотров5.9K
Вновь привет, уважаемые читатели Хабра! Работая с одной из систем хранения метаданных о файлах в «Лаборатории Касперского» вспомнил, что давно хотел написать об оптимизации поиска по большому полю в базах данных. О чем далее и расскажу более подробно.

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



Итак, представьте: у вас есть таблица в базе данных MS SQL, в которой десятки миллиардов строк данных. И в эту таблицу вставляются и удаляются суммарно десятки и сотни тысяч строк в секунду. Назовем эту таблицу dbo.metadata.

Замечание. Для проведенного анализа ниже была создана новая база данных TEST, в которой были созданы две таблицы dbo.metadata и dbo.sha256_checksum (о второй таблице будет написано ниже) и сгенерированы синтетические данные на 1+ млрд строк в каждую. После каждого вызова запроса проводился полный сброс кэша планов для базы данных TEST (DBCC FREEPROCCACHE), чтобы план для запроса каждый раз строился заново, а не брался уже готовый.

Таблица dbo.metadata упрощенно выглядит так:

Определение таблицы dbo.metadata
Определение таблицы dbo.metadata
Читать дальше →
Всего голосов 42: ↑42 и ↓0+42
Комментарии10

Автоматизация обработки данных

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

Основная статья Взаимодействие DWH Oracle и MS SQL

Завершающим этапом для загрузки, обработки данных и наполнения данных куба, можно назвать автоматизацию выполнения задач по расписанию. Для реализации этого в MS SQL Server имеется SQL Agent.

Предварительно необходимо создать учетную запись (Credential) (см. Рис. 1), из-под которой будет выполняться запуск заданий (Job).  Эта учетная запись должна быть связана с доменной учетной записью, которой будет предоставлены привилегии. Этой учетной записи можно выдавать доступы, например, в каталогах для загрузки и выгрузки файлов, доступа к серверам и т.п. Если данную учетную запись не создавать, то необходимо выдавать доступы для учетной записи SQL Agent, что может не соответствовать с вашей политикой безопасности в организации.

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

Оптимизация данных в MS SQL

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

Основная статья Взаимодействие DWH Oracle и MS SQL

Одним из методов для оптимизации обработки, хранения и администрирования данных в базе данных и кубах MS SQL — это процесс создании партицирования данных.

Partitioning (партицирование или по-другому секционирование) —  это разбиение таблицы на несколько частей, а эти части на одну или несколько файловых групп. Партицирование необходимо для целей ускорения доступа чтения или изменения данных и администрирования. Так как выровненный индекс по таблице будет содержаться в каждой условно своей секции, то при чтении или изменении данных будет обращение к конкретной секции и конкретному индексу в этой секции.

Со стороны администрирования для процесса переноса (например архивирования) данных в другую таблицу без физического перемещения данных, а перемещения только логической секций, подлежащих этой операции, выполнение этого действия происходит мгновенно, что экономит время и ресурсы машины. Для этого необходимо подготовить таблицу «архив» — копию по структуре с таблицей источника, она может быть не партицированна.

Пример кода для переноса в таблицу:

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

Визуализация данных

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

Финальным результатом при построении аналитического хранилища является передача готовых данных пользователям.

Для отображения данных из OLAP кубов используется настольное приложение Business Analytics tools (BAT). Данное приложение состоит фактически из двух приложений: приложение для просмотра, редактирования отчетов пользователями и приложение для
администрирования, в котором создается подключение к кубам данных, выполняется настройка ролей для распределения прав доступов и создается базовая структура отчетов.

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

Проектирование SSAS кубов

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

Первым этапом для проектирования данных под OLAP кубы является распределение загруженных данных по таблицам по структуре Ральфа Кимбалла. Необходимо создать таблицы измерений, которые будут хранится в третьей нормальной форме. Создать, например, таблицы сущностей Договора, Клиенты, Счета, различные справочники и т.п. И так же создать таблицу фактов, т.е. та таблица, где будет происходить движение. Например, такой может быть таблица, в которой хранятся остатки по счетам клиента на определенную дату. Таблица фактов должна содержать в себе все ключевые поля, которые ссылаются на таблицы измерений. Такой классический вид имеет название: тип «Снежинка».

Таблицы измерений должный иметь primary key на ключевое поле. Таким образом таблица будет содержать unique clustered index (уникальный кластеризованный индекс), и таблица будет в нужном нам отсортированном порядке.

Таблица фактов должна иметь партицирование по отчетной дате и clustered index с составным ключом. И если это позволяет наш режим работы иметь партицирование по отчетной дате и clustered column store index (колоночный индекс). Данный тип хранения таблицы имеет ряд преимуществ - это 10-ти кратное сжатие данных и ускорение считывания данных при наборе их в куб, но обязательным условием для эффективного применения данного индекса является необходимость хранить более 1 миллиона строк на одну секцию.

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

Взаимодействие DWH Oracle и MS SQL

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

В ряде статей планирую рассказать о подготовке данных, основных этапах разработки и дальнейшего использования данных в Microsoft Analysis Services (SSAS), о процессе построения аналитического хранилища данных на Microsoft SQL Server (MS SQL), о взаимодействии с базами данным Oracle и другими источниками нашего банка Совкомбанк, а также рассказать о возможностях MS SQL которые мы используем.  

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

Чаще всего аналитики сталкиваются с проблемами оперативного изменения агрегированных данных и выявлении факторов влияющими на эти данные. Довольно часто аналитики получают и анализирую данных в плоском сгруппированном виде, не всегда есть возможность без подключения технических специалистов разложить составляющие на самый низкий уровень гранулярности, определить неточности в данных. И физически человек не способен воспринимать многомиллионные строки данных, например в excel. Для этого на помощь приходит SSAS. В него можно загрузить большой объем данных и при необходимости развернуть до основных составляющих данных.

Дополнительно поставлю вопросы как цели: как мы упрощаем жизнь для бизнес – аналитиков, как вовремя и качественно сдаем отчетность в ЦБ, как с легкостью обрабатываем терабайты данных для предоставления их пользователям?

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

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

Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн

«Зачем ты вообще туда полез?»: как переход на уровень вниз помог построить карьеру

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

Привет! Меня зовут Александр Денисов, и я не боюсь перемен. Будучи сеньором-программистом, я перешёл на мидл-позицию и стал заниматься СУБД. А восемь лет спустя, уже став опытным аудитором и экспертом по MS SQL Server, снова шагнул на ступеньку вниз, чтобы устремиться к новым высотам, на этот раз в дата-аналитике. 

Под катом расскажу, почему не стоит терять время на работе, которая не нравится, и как скилы и перки из прошлой жизни становятся подспорьем в освоении интересных и перспективных специальностей.

Читать далее
Всего голосов 29: ↑27 и ↓2+25
Комментарии10

Подробнее о TOP

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

В прошлой статье я писал об особом виде оператора TOP, известного как ROWCOUNT TOP. Теперь рассмотрим несколько других интересных сценариев появления в плане оператора TOP. 

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

Что нового в SQL Server 2022 для DBA

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

Новшеств довольно много, о некоторых можно сказать кратко, а что-то лучше описать более развёрнуто. Те новшества, которые относятся к облачным хранилищам, мы тут и вовсе опустим ввиду неактуальности на сегодняшний день. Также тут не будет ничего про новый синтаксический «сахар» T-SQL и небольшие улучшения там и сям, типа сжатия XML.

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

Статистики по нескольким столбцам

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

Автор Liwei Yin

В статье SQL Server Cardinality Estimation: несколько статистик по одному столбцу рассказывалось о том, как SQL Server вычисляет статистику по одному столбцу. Сегодня поговорим о статистике по нескольким столбцам.

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

Анализ больших данных в Excel: используем сводную таблицу для работы с BigQuery, Snowflake и ClickHouse

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

BigQuery и другие аналитические хранилища в сочетании с современными BI инструментами перевернули работу с данными за последние годы. Возможность обрабатывать терабайты информации за секунды, интерактивные дашборды в DataStudio и PowerBI, сделали работу очень комфортной.

Однако если посмотреть глубже, можно увидеть - выиграли от этих изменений в основном профессионалы, владеющие SQL и Python и бизнес пользователи на руководящих позициях, для которых разрабатываются дашборды.
А как быть с сотнями миллионов сотрудников, для которых главным инструментом анализа был и остается Microsoft Excel?

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

Миграция микросервиса с геоданными с MS SQL на PostgreSQL

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

Не секрет, что тема перехода в IT-сфере на технологии, не требующие дорогостоящего лицензирования становится всё более актуальной. В то же время, очевидно и стремление компаний попасть в Реестр отечественного ПО, чтобы получить разного рода преференции для себя и своих сотрудников.

С точки зрения обновления технологического стека, мы воспользовались методическими рекомендациями Реестра отечественного ПО и приняли решение о переводе наших проектов на технологии со свободными лицензиями, в частности .NET 6 и PostgreSQL. Это открыло путь как к оптимизации производительности приложений и уменьшению расходов на лицензирование, так и добавлению решений компании в реестр.

В данной статье предлагаю рассмотреть путь по миграции географического микросервиса с MS SQL на PostgreSQL с фокусом на пространственные (spatial) типы данных.

Вопрос стоимости лицензий и непосредственного сравнения MS SQL vs PostgreSQL опустим, т.к. эта тема весьма хорошо раскрыта в DotNext-докладе моего коллеги, Стаса Флусова. Рекомендую к просмотру!

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

SQL Server Cardinality Estimation: несколько статистик по одному столбцу

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

Автор Liwei Yin

Опубликовано 06.09.2021

Оптимизатор SQL Server оценивает запросы на основе затрат ресурсов. Для каждого конкретного запроса SQL Server создает план на основе оценки числа возвращаемых из таблицы строк. Именно поэтому понимание того, как SQL Server вычисляет предполагаемое число возвращаемых строк помогает находить и устранять неоптимальные элементы плана запроса. Эта статья начинает серию рассказов о SQL Server Cardinality Estimation (SQL Server CE) старых и новых версий.

Способ, используемый SQL Server для оценки числа строк, возвращаемых запросом с одним предикатом прост и понятен. Всё становится немного сложнее когда в запросе к SQL Server присутствует больше одного предиката. В отличие от случая с одним предикатом, у SQL Server разные стратегии в старой и новой реализации SQL Server CE.

Для прежних версий SQL Server CE предполагается что распределение данных по разным столбцам не зависят друг от друга. В новом SQL Server CE предполагается, что распределение данных по разным столбцам коррелируется. Короче говоря, ожидаемое количество строк у нового CE предсказывается лучше, чем количество строк для такого же запроса, но с CE прежних версий.

Читать далее
Всего голосов 5: ↑5 и ↓0+5
Комментарии2
Изменить настройки темы

Вклад авторов