Columnstore индексы в SQL Server 2014

Примерно полтора года назад я писал о columnstore индексах, которые были одним из новшеств MS SQL Server 2012. Для тех, кто не в курсе, напомню, чем columnstore индекс отличается от обычного: Индекс Columnstore (он же xVelocity) группирует и сохраняет данные каждого столбца в отдельности с последующим объединением всех столбцов в единое целое. Они отличаются от традиционных индексов, которые группируют и сохраняют данные для каждой строки…

Еще про сканирование таблиц и сжатие данных

Вы все еще боитесь сканирования таблиц? Тогда мы идем к вам! поговорим про сжатие данных! Сканирование таблиц фактов – это операция, как правило, ограниченная производительностью дисковой подсистемы сервера. Масштабировать эту часть серверов долгое время было очень проблематично. Точнее, традиционные принципы масштабирования приводили к тому, что можно было часто увидеть систему, в которой ради относительно небольшой базы данных использовались десятки или даже сотни жестких дисков. С…

How I stopped worrying about table scans and loved data compression

Меня часто спрашивают, можно ли ускорить процессинг OLAP куба с помощью индексов. Вообще – “да”, но по-хорошему – “нет”. Стоит ли оптимизировать процесс загрузки данных в куб? Да! Стоит ли пытаться сделать это с помощью индексов? Скорее нет. Пример из учебника Давайте представим типичную таблицу фактов хранилища данных: Вроде все просто: продажи (в штуках и в деньгах) в разрезе клиента, продукта, даты и менеджера. Поля…

Работа с отчетами Reporting Services в браузерах Chrome и Safari

Службы SQL Server Reporting Services предоставляют широкий спектр готовых к использованию средств и служб для создания, разворачивания и управления отчетами организации, а также функции программирования, которые позволяют расширить и настроить функциональность отчетов. С помощью служб Reporting Services можно создать интерактивные, табличные, графические отчеты и отчеты свободной формы из реляционных, многомерных и XML-источников данных. Отчеты могут включать визуализацию сложных данных, в том числе диаграммы, карты и…

Наш опыт использования SSD дисков для баз данных, ч.2

Как я и обещал, публикую результаты анализа состояния SSD дисков Intel SSD 320 Series после года эксплуатации в сервере БД. Напомню, что на этом дисковом массиве находилась реляционная БД хранилища + OLAP кубы. Более подробное описание сервера здесь.   Скриншоты сделаны в Intel SSD Toolbox. На первом скриншоте видно оценку текущего состояния диска и прогноз по остатку “времени жизни”: Как видно по скриншоту, состояние диска…

Генерация суррогатных ключей для Parent-Child измерений

Загрузка данных в измерения, построенные по принципу Parent-Child, средствами SQL Server Integration Services в некотором смысле задача нетривиальная. Допустим, наша таблица имеет следующую структуру: create table dbo.Employee ( EmployeeId long primary key, ManagerId long, Name nvarchar(100), Surname nvarchar(100) ) Соответственно, таблица измерения имеет структуру: create table dbo.DimEmployee ( SK_Employee_ID int primary key, SK_Manager_ID int, Name nvarchar(100), Surname nvarchar(100), EmployeeID long )   Для того, чтобы…

Наш опыт использования SSD дисков для баз данных

Почти год назад я рассказывал, что на одном из наших проектов мы начали использовать SSD диски для хранения баз данных. Напомню, что речь идет о проекте из области торговли (дистрибуция FMCG) в котором мы имеем транзакционную базу, базу данных хранилища (реляционную) и ОЛАП-кубы. В качестве сервера БД используется MS SQL Server 2008 R2 Enterprise. Схема развертывания комплекса была следующая: Транзакционная БД находится на отказоустойчивом кластере…

Software Inventory

  Недавно прочитал интересную статью “Software Inventory” от Joel Spolsky: http://www.joelonsoftware.com/items/2012/07/09.html В ней Joel рассказывает о способах минимизировать издержки путем оптимизации процесса управления жизненным циклом продуктов. К идеям, изложенным в статье, я в тезисной форме вернусь в конце поста, а сейчас хотелось бы поговорить о том, на чем базируется идеология экономного производства и как ей можно воспользоваться в производстве программного обеспечения. Не так давно в…

Размер всех баз данных на сервере

Еще один запросик из серии карманных инструментов администратора сервера БД. Показывает сколько места занимает каждая БД из всех, что есть на сервере. Как и предыдущие, написан по просьбе коллеги. select db_name(dbid), sum(size) * 8 / 1024 / 1024 as SizeGB, sum(case when f.groupid = 0 then 0 else size end) * 8 / 1024 / 1024 as DataSizeGB, sum(case when f.groupid != 0 then 0…

Количество рабочих дней в периоде

Коллега обратился с просьбой помочь ему написать запрос, который бы позволял вычислить количество рабочих (пн-пт) дней в периоде, заданном двумя произвольными датами. Т.к. по его словам поиск в Сети ничего не дал, я, конечно же, отозвался на его просьбу. В результате получилось так: set datefirst 1; declare @DateFrom datetime, @DateTo datetime, @WorkingDays int; set @Datefrom = ‘2012-05-19’; set @DateTo = ‘2012-05-23’; set @WorkingDays = datediff(dd,…