10 причин почему именно сейчас стоит попробовать Microsoft SQL Server
16 ноября 2016 года Microsoft опубликовал первую публичную кросплатформенную версию SQL Server VNext, которая теперь работает и под Linux: Public preview of the next release of SQL Server — Bring the performance and security of SQL Server to Linux and Windows
| Билд | Версия setup.exe | Ветка | KB / Описание | Дата релиза |
|---|---|---|---|---|
| 14.0.1.246 | 2016.140.1.246 | CTP | Microsoft SQL Server vNext Community Technology Preview 1 (CTP1) (Linux support) | 2016-11-16 |
Скачать дистрибутив для Windows можно по прямой ссылке без регистрации.
Причина №2 — Microsoft SQL Server Developer Edition бесплатен для разработки и тестирования
В апреле 2016 года Microsoft наконец-то сделала бесплатной версию для разработчиков, которая по своему функционалу полностью совпадает с Enterprise. До этого стоимость одной разработческой лицензии была в районе 2-3 тысяч рублей.
При этом фактически Microsoft разрешает использовать Developer Edition 2016 и для тестирования, подробнее это описано в данной статье Is User Acceptance Testing Covered Under Developer Edition?
Для того, чтобы скачать собственную версию SQL Server Developer Edition необходимо просто присоединиться к программе Visual Studio Dev Essentials. После регистрации по ссылке будут доступны следующие дистрибутивы для установки:
| Версия | Дата релиза | Размер, Мб | SHA1 |
|---|---|---|---|
| SQL Server 2016 Developer (x64) — DVD (English) | 2016-06-01 | 2103 | 1B23982FE56DF3BFE0456BDF0702612EB72ABF75 |
| SQL Server 2014 Developer Edition with Service Pack 1 (x64) — DVD (English) | 2015-05-21 | 3025 | BFEE1F300C39638DA0D2CD594636698C6207C852 |
| SQL Server 2014 Developer Edition with Service Pack 1 (x86) — DVD (English) | 2015-05-21 | 2462 | ED3C70507A73BCC63D67CFA272CD849B9418A18E |
| SQL Server 2014 Developer Edition (x64) — DVD (English) | 2014-04-01 | 2486 | F73F430F55A71DA219FC7257A3A28E8FC142530F |
| SQL Server 2014 Developer Edition (x86) — DVD (English) | 2014-04-01 | 2039 | 395B35FD80AA959B02B0C399DA1BB0C020DB6310 |
Причина №3 — Поддержка и развитие среды программирования R
Microsoft вкладывает огромные усилия в популяризацию и развитие языка R, стараясь сделать его лидером в области статистических расчетов. При этом Microsoft предлагает 2 собственные версии дистрибутивов среды R, разница между которыми и Open-Source R приведена в таблице ниже:
| Parameter/R Version | Open-Source R (OSR) | Microsoft R Open (MRO) | Microsoft R Server (MRS) |
|---|---|---|---|
| Processing | In-Memory | In-Memory | In-Memory + Disk |
| Analysis Speed | Single threaded | Multi threaded | Single threaded |
| Support | Community | Community | Community + Commercial |
| Analysis Breadth and depth | Over 7500 community packages | Over 7500 community packages | 7500 packages + Commercial Parallelized Algorithms and Functions |
| License | Open Source | Open Source | Commercial License — supported release with indemnity |
Причина №4 — Для Microsoft SQL Server существует бесплатная и ежемесячно обновляемая среда разработки SSMS
В свое время начинал работу с Microsoft SQL Server 2005 и в то далекое время SSMS представлял из себя глючный скудный интерфейс, который по сравнению с TOAD для Oracle и даже PLSQL Developer вызывал только слезы и боль. В общем,10 лет назад работа в среде SSMS представляла из себя сплошное наказание. Но вот уже более чем 4 года лучшего инструмента для работы c базой данных (к сожалению пока только с SQL Server, но вдруг он начнет работать и с другими) я не встречал, хотя в свое время перепробовал много чего Инструменты и утилиты Microsoft SQL Server. При этом если добавить несколько бесплатных расширений, то SSMS становится просто вне конкуренции среди аналогичных коммерческих и бесплатных продуктов.
Начиная с июля 2016 года SSMS стала выпускаться в виде отдельного дистрибутива ежемесячно, что позволило значительно ускорить процесс внедрения нового функционала и устранения текущих багов. На текущий момент список версий для SSMS выглядит так:
| Версия/Ссылка для загрузки | Билд | Дата релиза | Размер, Мб |
|---|---|---|---|
| 17.0 RC1 Release | 14.0.16000.64 | 2016-11-16 | 687 |
| 16.5 Release Latest | 13.0.16000.28 | 2016-10-26 | 894 |
| 16.4.1 Release | 13.0.15900.1 | 2016-09-23 | 894 |
| 16.4 Release Deprecated | 13.0.15800.18 | 2016-09-20 | |
| 16.3 Release | 13.0.15700.28 | 2016-08-15 | 806 |
| July 2016 Hotfix Update | 13.0.15600.2 | 2016-07-13 | 825 |
| July 2016 Release | 13.0.15500.91 | 2016-07-01 | |
| June 2016 Release | 13.0.15000.23 | 2016-06-01 | 825 |
| SQL Server 2014 | 12.0.4100.1 | 2015-05-14 | 815 |
| SQL Server 2012 | 11.0.6020.0 | 2015-11-21 | 964 |
| SQL Server 2008 R2 | 10.50.4000 | 2012-07-02 | 161 |
SQL Server Management Studio (17.0 RC1) замечания:
- Не рекомендована для использования на производственных серверах.
- Работает с CTP v.Next на Windows и Linux.
- Устранена проблема с ShowPlan.
- Вы можете использовать и 16.x и 17.x версии не зависимо друг от друга на одной машине, но при этом некоторые настройки (например, Tools/Options) будут общими.
Причина №5 Схема обновлений для Microsoft SQL Server была упрощена и обновления выходят теперь на регулярной основе
Если ранее обилие различных дистрибутивов и фиксов для SQL Server вызывало недоумение, а правильный порядок их установки был уделом избранных администраторов, то теперь с переходом на инкрементную модель обновления надо знать следующее:
- Устанавливаем нужную версию и редакцию SQL Server — Версии Microsoft SQL Server
- Устанавливаем последний пакет обновления для текущей версии SQL Server — SP Service Pack
- Устанавливаем последнее кумулятивное обновление для текущего пакета обновления — CU Cumulative Update
- Если есть определенные проблемы, то ищем необходимый для их устранения фикс — COD Critical On-Demand
Подробнее о преимуществах перехода на инкрементную модель обновления рассказано в статье Announcing updates to the SQL Server Incremental Servicing Model (ISM)
COD, CU, CTP, GDR, QFE, RC, RDP, RTM, RTW, TAP, SP — что все это и как с этим жить? Подробнее в замечательной статье #BackToBasics: Definitions of SQL Server release acronyms
Причина №6 Microsoft SQL Server теперь можно установить в 3 клика
Если вас пугает с первого взгляда громоздкий интерфейс установки SQL Server и множество кнопок Next, то специально для вас был разработана упрощенная версия инстраллера (так называемый базовый инсталятор), которая сводит все к 3 кликам: The SQL Server Basic Installer: Just Install It!.
Но я все таки рекомендую использовать стандартную схему или освоить установку через командую строку — Install SQL Server 2016 from the Command Prompt. Также можно посмотреть в сторону Open Source проекта SQL Server FineBuild.
Причина №7 — Очень развитое сообщество разработчиков
Количество ресурсов для изучения и решения проблем, связанных с SQL Server, просто огромно — по моей оценке более 170 качественных и действительно полезных проектов, часть из них собрано здесь: Ресурсы по Microsoft SQL Server. Само сообщество очень дружелюбно и всегда готово прийти на помощь, оперативно ответить на правильно поставленные вопросы, особенно активно используется twitter и slack каналы:
- SQLServerCentral Forum (> 10^6 Участников)
- Slack #sqlhelp (> 700 Участников )
- Slack #firstresponderkit (> 70 Участников )
- Twitter #sqlhelp (> 500 Участников)
- SQL.ru SQL Server Forum (> 10^5 Участников)
- VK.com #sqlcom (> 3600 Участников)
Наиболее активных представителей SQL Server сообщества с их блогами и данными для связи можно найти тут.
Причина №8 Microsoft Azure CloudDB
Если нет желания скачивать, устанавливать и настраивать SQL Server на своей машине, то можно очень быстро опробовать его в облаке Azure бесплатно. Начиная с версии CloudDB 2016 весь новый функционал внедряется именно в облачную платформу, а затем дорабатывается движок для необлачных версий. При этом вся головная боль по поддержке, сопровождению и обновлению SQL Server будет лежать на плечах инженеров Microsoft Azure.
Попробовать Microsoft Azure CloudDB можно бесплатно в тестовом режиме, зарегистрировавшись здесь SQL Database – Cloud Database as a Service.
Причина №9 — Множество улучшений и дополнений функционала в версии 2016
Кратко для T-SQL:
- CREATE OR ALTER
- DROP IF EXISTS
- STRING_SPLIT Function
- TRUNCATE TABLE with PARTITION
- FOR SYSTEM_TIME Clause
- FOR JSON Clause
- JSON Functions
- OPENJON Function
- FORMATMESSAGE Function
- Stored procedure sp_execute_external_script to execute R scripts
Причина №10 — С выходом SP1 для SQL Server 2016 большинство функционала из редакции для бизнеса доступно и в стандартной редакции
Данная новость была опубликована 16 ноября 2016 года и очень позитивно воспринята большинством разработчиков.
Кратко, что вошло в стандартную редакцию:
- Performance features – in-memory OLTP (Hekaton), in-memory columnstore, operational analytics
- Data warehousing features – partitioning, compression, CDC, database snapshots
- Some security features – Always Encrypted, row-level security, dynamic data masking
Так и осталось в редакции для бизнеса:
- Full Always On Availability groups (multiple databases, readable secondaries)
- Master Data Services, DQS
- Serious security features – TDE, auditing
- Serious BI – mobile reports, fuzzy lookups, advanced multi-dimensional models, tabular models, parallelism in R, stretch database
Подробнее о нововедении можно узнать на SQL Server 2016 SP1 editions
Заключение
Я ни в коем случае не утверждаю, что Microsoft SQL Server является лучшей реляционной базой данных в нашей Вселенной и тем более не агитирую бросать все дела и начинать ее использовать (и да, она не бесплатна для коммерческого использования и у нее хватает проблем). Просто за последние 2 года Microsoft приложил огромное количество усилий (чего только стоит выкладывание в Open Source PowerShell и ASP.NET Core MVC), чтобы сделать данный продукт удобным, быстрым и надежным. И мне, кажется, у него отчасти это получилось. Так это или нет, решать только вам.
10 причин перейти на Microsoft SQL Server 2019
За последние 10 лет SQL Server стал мощной платформой обработки данных. Решение рассчитано на критичные бизнес-приложения по надежности и отказоустойчивости.
SQL Server учитывает все современные требования по работе с данными разных форматов и становится естественным выбором для построения платформы интеграции, управления и анализа данных.
Основные требования к современным платформам обработки данных
В последние годы генерируется огромное количество данных, увеличивается их разнообразие, смысл, формы. Некоторые данные имеют реляционный формат и генерируется традиционными транзакционными инструментами. Эти данные всегда структурированы, их смысл и ценность хорошо понятны. Но большинство данных существут в сыром виде. Например, данные с сенсоров (Интернет вещей), датчиков, записывающих устройств, видеокамер. Все эти данные имеют большую ценность, которую пока сложно извлечь.
Современная платформа обработки данных должна принимать различные виды данных, обрабатывать их, интегрировать. Вместе с тем такая платформа должна уметь:
- переносить существующие инструменты обработки данных в облачную платформу без серьезных изменений;
- обрабатывать данные как в существующих локальных инфраструктурах, так и в облаках;
- разрабатывать современные облачные приложения с нуля.
Azure SQL отвечает за облачную часть обработки данных. SQL Server 2019 – за локальную.
Эволюция SQL Server
| Производительность | Самостоятельная бизнес-аналитика | Готовность к работе в облаке | Бизнес-критичная и облачная производительность | Docker и Linux | Интеллектуальная обработка всех данных |
| SQL Server 2008 | Прозрачное шифрование баз данных | ||||
| SQL Server 2008 R2 | PowerPivot | Интеграция SharePoint | Master Data Services | ||||
| SQL Server 2012 | AlwaysOn | ColumnStore в памяти | Data Quality Services | Power View | Облако | ||||
| SQL Server 2014 | Обработка в памяти для всех рабочих нагрузок | Производительность и масштабируемость | Оптимизация для гибридного облака | HDInsight | Облачная бизнес-аналитика | ||||
| SQL Server 2016 и 2017* | Лучшая производительность в отрасли | Сквозная мобильная бизнес-аналитика | Встроенный искусственный интеллект | Выбор языка и платформы | Простая миграция в облако | ||||
| SQL Server 2019 | Интеллектуальная обработка всех данных | Работа с кластерами больших данных при помощи Spark и HDFS | Встроенные R и Python | Классификация данных и контроль соответствия нормативным требованиям | Azure Data Studio | ||||
*поддержка Linux и Docker впервые реализована в SQL Server 2017
1. SQL Server упрощает развертывание, передачу и интеграцию больших данных
- В SQL Server встроено специальное решение для обработки больших данных на основе Kubernetes. Фреймворк Kubernetes обеспечивает развертывание хранилищ HDFS, реляционного модуля SQL Server и средств аналитики Spark в виде контейнеров.
- В состав SQL Server 2019 входят Spark и HDFS, с помощью которых можно выполнить чтение и запись именно в HDFS, используя SQL Server или Spark. Архитектура Kubernetes обеспечивает гибкое масштабирование вычислительных мощностей и хранилищ по запросу.
2. Интеграция структурированных и неструктурированных данных
На сегодняшний день при огромных объемах данных невыгодно конвертировать их в реляционные таблицы для хранения в СУБД. Два года назад компания Microsoft презентовала PolyBase. Технология позволяет экземпляру SQL Server обрабатывать запросы Transact-SQL, которые обращаются к данным Hadoop, и объединять данные из Hadoop и SQL Server. В SQL Server внешняя таблица или внешний источник данных обеспечивает соединение с Hadoop, виртуализируя внешние источники данных без необходимости их прямого импорта в реляционную базу, и потом позволяет обращаться к этим данным с запросами.
В итоге данные накапливаются в естественном формате и могут быть представлены в виде виртуальной таблицы. Виртуализация позволяет интегрировать данные разного формата, из разнородных источников и мест хранения без их репликации и перемещения, создавая единую виртуальную матрицу данных.

3. Высокая производительность
Microsoft ежегодно подтверждает высокую производительность SQL Server тестами производительности хранилищ данных и транзакционными тестами.
2019 версия получила отличные результаты в тестах:
- производительность OLTP;
- производительность DW для 1 ТБ, 10 ТБ и 30 ТБ;
- соотношение цены и производительности OLTP;
- соотношение цены и производительности DW для 1 ТБ, 10 ТБ и 30 ТБ.
4. Гибридная транзакционная/аналитическая обработка (HTAP)
Модель HTAP одновременно осуществляет операционные транзакции и аналитику на одних и тех же данных в одной и той же памяти. Данные операции реализуются также подходом in memory.
5. Поддержка постоянной памяти (РМЕМ)
Постоянная память (Persistent Memory, PMEM) – это быстрая память, которая хранит данные даже после отключения питания. Она обрабатывает данные in-memory, избавляется от необходимости передавать данные по каналам передачи и ускоряет обработку запросов на 30% для интенсивных рабочих нагрузок ввода-вывода.
Любой файл SQL Server, помещенный на устройство PMM, теперь доступен напрямую, минуя стек хранения операционной системы, используя при этом операции memcpy.
6. Интеллектуальная обработка запросов
Высокую производительность обеспечивает:
- параллелизация запросов;
- улучшенное масштабирование частых запросов благодаря механизмам их интеллектуальной обработки (отложенная компиляция табличных переменных ускоряет обработку запросов более чем на 50%).
Приложения и инструменты аналитики работают со всеми реляционными и большими данными через ведущий экземпляр SQL Server при помощи T-SQL.
Семейство функций интеллектуальной обработки запросов:

7. Безопасность и соответствие требованиям
Защиту конфиденциальных данных обеспечивает технология Always Encrypted с защищенными анклавами. Шифрование на месте позволяет выполнять криптографические операции с конфиденциальными данными без их перемещения за пределы базы данных.
Криптографические операции содержат шифрование столбцов. Теперь эти операции можно выполнять с помощью Transact-SQL, так как они не требуют перемещения данных из базы данных. Внутри защищенных анклавов поддерживаются все полнофункциональные вычисления, включая сопоставления и сравнения диапазонов, что значительно расширяет возможности их применения.
Always Encrypted с защищенными анклавами доступна в Windows Server 2019.

8. Выбор контейнеров и ОС
SQL Server 2019 достаточно гибкий в выборе платформы, языка программирования и средства доставки.
- Поддерживает Red Hat Enterprise Linux, SUSE Linux Enterprise Server, Ubuntu и Windows.
- Один и тот же уровень абстракции с SQL Server на Linux.
- Контейнеры Docker для Linux и Windows. Установка со встроенной поддержкой инструментов Linux: Yum lnstall, Apt-Get и Zypper.
- Возможность использования R, Python и Java при работе с T-SQL. Теперь расширение языка Java доступно для выполнения кода Java в SQL Server.
9. Azure Data Studio
Azure Data Studio (бывший SQL Operations Studio) – это упрощенное кроссплатформенное графическое средство управления и редактор кода. С помощью программы можно создавать запросы к реляционным и нереляционным базам данных с поддержкой разных операционных систем и источников данных. Azure Data Studio позволяет подключаться к SQL Server локально и в облаке, в Windows, macOS и Linux.
10. Интеллектуальный анализ данных
SQL Server поставляется вместе со Spark – популярным инструментом для машинного обучения, для продвинутой аналитики, с эффективной in memory машиной.
Правильный анализ и эффективное представление результатов напрямую влияет на эффективность анализа данных и возможность принимать на их основе управленческие решения.
Все, что необходимо знать про индексы MS SQL
Предлагаем расширить знания об индексах в MS SQL Server. Получите полное представление о них, преимуществах использования, структуре. Узнаете, как создавать индексы, оптимизировать и удалять. Все самое полезное читайте в одной статье.
Что такое индексы в sql server
Разберемся в понятии индексов (indexes) – это особые таблицы, используемые поисковыми системами для поиска данных. Их активное использование играет важнейшую роль в повышении производительности sql серверов.
Словно указатель в грамотно составленной книге, индекс помогает быстро получить доступ к строкам требуемых данных в таблице, соответствующих запросу. Таким образом, их использование позволяет ускорить выполнение требуемого запроса.
К примеру, для получения всех страниц в книге, касающихся выбранной тематики, сначала нужно обратиться к перечню тем, а затем выбрать нужные страницы. Для этого следует создать индекс по выбранной теме. На ее основе и будут выбираться ссылки на страницы книги по затронутой теме. Используя значения, заданные первичным ключом, sql server найдет нужный индекс и с его помощью быстро выберет все строки с необходимыми данными. Если не использовать индекс, то для поиска информации будет произведено сканирование каждой строки таблицы. Это значительно понизит производительность и увеличит время поиска.
Благодаря индексу процесс поиска данных сокращается за счет их упорядочивания как физического, так и логического. Таким образом, он выглядит как набор ссылок на данные, которые упорядочены по выбранному столбцу таблицы. Такой столбец называется индексированным. Индексы находятся в таблице и по сути выступают полезными внутренними механизмами системы sql-сервера, которые помогают сделать доступ к данным наиболее оптимальным.
Создать стандартный индекс можно на всех столбцах данных, кроме:
- столбцов, которые используются для хранения данных объектов, имеющих большие размеры, (LOB): TEXT, IMAGE, VARCHAR (MAX);
- представленных в XML. Для работы с данными, представлены в таком формате используются xml-index, которые отличаются от стандартных. О них рассказано ниже.
Об индексах и кучах
Как только таблица создана и в ней еще нет индексов, она выглядит как куча данных (Heap). В ней все записи хранятся хаотично, без определенного порядка. Потому их и называют «кучами».
Если в таблице необходимо найти определенные данные, sql server просканирует ее (Table scan). Пока в таблице не заданы индексы, поддерживающие ограничения (UNIQUE CONSTRAINT, UNIQUE INDEX или PRIMARY KEY), сервер прочитает все табличные записи (с первой до последней) и выберет те, которые удовлетворяют условиям поиска.
Это демонстрирует базовые функции indexes:
- повышение скорости поиска информации и производительности запросов;
- сохранение целостности данных через обеспечение уникальности строк таблицы.
Но не всегда индекс помогает ускорить поиск информации. Для таблиц небольших размеров обычный перебор данных может оказаться намного эффективнее выборки данных по индексам.
Indexes имеют и недостатки:
- требуется много места на дисковом пространстве и в оперативной памяти. Чем длиннее ключ, тем большего размера индекс и место для его хранения;
- замедляется производительность системы (медленнее выполняются операции вставок, обновления либо удаления записей).
Но современные методы их создания позволяют не только снижать негативный эффект для вышеперечисленных операций, но и увеличивать скорость выполнения.
Структура
Все индексы имеют одинаковую структуру (structure). Они состоят из:
- наборов страниц;
- узлов, имеющих древовидную структуру, иерархическую по природе.
Все они хранятся в виде сбалансированных B-деревьев (B-tree). Начало такого дерева расположено в корневом узле (находящимся на вершине иерархии) и по сути является «входной дверью». Этот узел имеет одну страницу, в которой содержатся указатели на ключи последующих уровней.
В нижней части иерархии расположены листья дерева (являющиеся конечными узлами). Длины веток одинаковы.
В таком дереве сбалансирована каждая ветка. Благодаря внутреннему механизму при любых изменениях в таблице дерево снова становится сбалансированным.
При формировании запроса к индексированному столбцу подсистема начинает процесс поиска с верхнего узла к нижним, проходя промежуточные и обрабатывая их. На каждом уровне располагается все более развернутая информация о запрашиваемых данных. Как только достигается нижний уровень листьев (leaf level) поиск прекращается, т.к. подсистема запросов находит необходимое значение.
Типы индексов
В Microsoft SQL Server используются следующие индексы: кластерные и некластерные. Рассмотрим их подробнее.
Кластерный индекс
Основная его задача — сохранение табличных данных в виде, отсортированном по значению ключа. Таблице или представлению может быть присущ лишь единственный кластеризованный индекс (Clustered index), потому что табличные данные могут отсортировываться в едином возможном порядке – либо возрастания, либо убывания. По возможности, у каждой таблицы должен быть Clustered index.
Табличные данные будут храниться отсортированными лишь в том случае, когда таблица имеет кластеризованный индекс. Строки табличных данных Clustered index хранит в уровнях листьев.
Если у таблицы нет Clustered index, в момент формирования ограничений PRIMARY KEY и UNIQUE, он формируется автоматически. Когда для таблиц/ куч созданы Nonclustered indexes, то в процессе создания Clustered index все некластеризованные должны быть перестроены.
Содержание листьев зависит от того, индекс кластерный или некластерный. Они могут содержать как табличные данные, так и ссылки, указывающие на строки с ними.
Некластерный индекс
Некластеризованными (Nonclustered) называют такие индексы, которые содержат:
- значения ключей – ключевые столбцы, по которым они определены;
- указатели на строки в таблице, содержащие реальные данные (значения ключа).
Чтобы обнаружить и получить запрашиваемые данные, для системы подзапросов потребуется совершение дополнительных операций. Содержимое указателей на запрашиваемые данные полностью зависит от того, как они хранятся.
Он может указывать на:
- кучу и тем самым приводить к идентификатору строки с искомыми данными;
- таблицу с Clustered index, указывая, что именно он используется что для поиска действительных данных.
Nonclustered indexes могут быть расширены дополнительными столбцами (included column). А значит, листья будут сохранять значения индексированных и дополнительных неиндексированных столбцов. Это свойство дает возможность обойти определенные ограничения, возложенные на индекс. Данный подход позволяет включать неиндексируемые столбцы либо обходить ограничения на длину индекса.
Главные свойства Nonclustered indexes:
- их нельзя отсортировать;
- на таблицу или представление можно сформировать свыше одного (до 999) некластеризованных индексов. Но не стоит создавать максимальное количество Nonclustered indexes. Нужно помнить, что они способны как повысить, так и понизить производительность.
Nonclustered indexes могут создаваться на любых таблицах, в том числе и имеющих кластерный индекс.
Специальные типы индексов
Существует большое число специальных индексов, которые могут быть как кластерными, так и некластерными. Рассмотрим некоторые из них.
Фильтруемый
Фильтруемым (Filtered) индексом называют оптимизированный Nonclustered index, в котором задействован предикат фильтра для индексации части строк в таблице.
Тщательно спроектированный Filtered index способен:
- увеличить производительность;
- уменьшить затраты на обслуживание и хранение индексов.
Составной
Составным называют индекс, который:
- может включать более одного (до 16) столбцов, выступающих ключевыми значениями;
- ограничивается общей длиной (не превышающей 900 байт);
- содержит поля, которые принадлежат единой таблице.
Простые индексы, в отличие от составных, создаются лишь по единственному столбцу.
Создание составных индексов целесообразно, когда:
- для поискового запроса ключами выступают два и более столбцов;
- в поисковом запросе используются все поля составного индекса. Поисковый запрос, в котором не задействованы все поля, вероятнее всего, использоваться не будет.
Отличным примером может служить телефонный справочник. Он сформирован по фамилии и имени, т.к. много людей имеют одинаковую фамилию. Следовательно, логично будет создать индекс одновременно и по фамилии, и по имени.
Отметим, что наивысший приоритет в процессе сортировки принадлежит первым колонкам, описываемым в CREATE INDEX. Потому, в числе первых должны указываться колонки уникальные. Чтобы индекс был задействован при выборке данных в таблице, сам запрос обязательно должен ссылаться именно на колонку, указанную первой.
Использование составных индексов поможет увеличить производительность за счет того, что для выполнения поиска данных сервер будет сканировать только его, что поможет снизить в таблице число индексов.
Query Optimizer использует их в зависимости от структуры запроса.
Уникальный
Уникальным (Unique) называют индекс, обеспечивающий уникальное значение всех строк по определенному ключу и гарантирующий, что в ключе индекса не будет значений одинаковых, повторяющихся. Для составного ключа понятие уникальности касается всех index columns, но не распространяется на каждый столбец в отдельности.
Если в таблице формируется Unique index одновременно по ряду столбцов, это означает, что абсолютно каждая вариация значений в ключе будет уникальной.
SQL сервером создается автоматически Unique index для ключевых столбцов при формировании ограничений UNIQUE либо PRIMARY KEY. Но он формируется лишь при выполнении условия отсутствия дублей в ключевых столбцах таблицы.
Уникальный индекс создается автоматом при определении ограничений столбца:
- первичным ключом (на один столбец либо сразу на несколько), при условии, что кластерный индекс ранее не создавался. В том случае, когда он все-таки уже создан, сервер создаст уникальный некластерный индекс по первичному ключу;
- ограничением на уникальность значений – сервером создается Unique Nonclustered index. Когда кластерный индекс не был сформирован заранее, есть возможность создания именно Unique Clustered index.
Колоночный
Колоночным (Columnstore) называют индекс, в котором данные хранятся в столбцах. Использование Columnstore indexes наиболее целесообразно применять для крупных хранилищ, т.к. они помогут:
- производительность запросов увеличить в несколько раз;
- размеры данных уменьшить (благодаря их сжатию).
Пространственный
Пространственным (Spatial) называют тип расширенного индекса, позволяющего индексировать столбцы с пространственными данными (представленные в типах Geography или Geometry). Spatial index позволяет наилучшим образом использовать определенные операции запросов относительно пространственных столбцов и может создаваться только для них.
Основное условие создания пространственного индекса – наличие PRIMARY KEY для таблиц.
Полнотекстовый
Полнотекстовые (Full-text) индексы применяются для повышения эффективности поиска определенных слов в строках, где данные представлены в символах.
Действия по созданию и обслуживанию Full-text indexes называются «заполнениями». Встречаются заполнения:
- полное – осуществляется SQL сервером после создания нового Full-text index. Размер таблицы влияет на затребованный объем ресурсов. При увеличении размера на операцию требуются ресурсы большего размера. Потому предусмотрена возможность откладывания этого процесса;
- основанное на отслеживании изменений – применяется для того, чтобы обслуживать Full-text index после полного заполнения (первоначального).
Покрывающий
Покрывающим (Covering) называют индекс, позволяющий на конкретный запрос получать запрашиваемую информацию в полном объеме с листьев индекса, не обращаясь к записям таблицы. А значит, в Covering index хранится достаточный объем данных для полноценного ответа на запрос. Потому нет необходимости обращаться к таблице.
Благодаря тому, что ответ можно получить без использования таблицы, покрывающие индексы быстрее остальных. Однако, они становятся достаточно большими, потому злоупотреблять ими не стоит.
XML-индекс
XML – специфический тип индекса, предназначенный для работы с данными в столбцах таблицы, представленными в соответствующем формате. Он делает более эффективной обработку поисковых запросов к ним.
- первичные – индексируют, хранят в столбцах XML теги, пути, значения. Целесообразно создавать, когда таблица по первичному ключу имеет кластерный индекс;
- вторичные – создаются лишь для таблиц с первичным XML-index. Применяются для увеличения производительности системы по определенному типу обращения к XML-столбцам. Встречаются типы XML-indexes: PATH, VALUE, PROPERTY.
Индексы, используемые в оптимизированных таблицах
Активно используются специальные индексы для таблиц данных:
- оптимизированные для памяти (In-Memory OLTP). К таковым относятся Хэш индексы (Hash);
- Nonclustered indexes, которые специально создаются для сканирования (как упорядоченного, так и диапазонного) и оптимизируются для памяти.
Создание и проектирование индексов в ms sql server
Польза индексов очевидна, потому и проектироваться они должны крайне аккуратно. Созданные тщательным образом способны улучшить производительность, а непрофессионально – понизить.
Индексы занимают достаточно много дискового места, потому не имеет смысла создавать их больше, чем нужно. Более того, при каждом обновлении строк, автоматически обновляются и индексы. Это в свою очередь может потребовать увеличения ресурсов и грозить снижением производительности.
Очень важно при проектировании соблюдать ряд требований как к базам данных, так и к запросам направленным к ним.
Базы данных
Как сказано выше, производительность системы напрямую зависит от индексов. При поступлении запроса они могут увеличивать ее, обеспечивая быстрый поиск данных либо снижать, т.к. при каждой операции с данными будут изменяться и они, дабы отражать действия, производимые над данными. И не важно, что происходит с ними – добавление, удаление или обновление.
Потому, при разработке плана стратегии по индексированию, необходимо придерживаться советов специалистов:
- Если предполагается частое обновление данных в таблице, то для нее нужно применять минимум индексов.
- Для таблицы со значительным количеством данных, которые предположительно будут редко изменяться, можно использовать то число индексов, которое улучшит производительность запросов. Но для таблиц небольшого объема не всегда целесообразно вообще их использовать. Такой поиск может выполняться дольше, чем обычное сканирование таблицы.
- Для Clustered indexes используйте самые короткие поля, которые только допустимы. Лучше всего их применять на столбцах с уникальными значениями и в которых не допускается использование NULL. По этой причине чаще всего PRIMARY KEY выступает в роли Clustered index.
- Производительность индекса напрямую зависит от того, насколько уникальны значения в столбце. Она снижается с увеличением дублей если в столбце и растет с уменьшением. Потому, при каждой возможности следует использовать уникальный индекс.
- Если используется составной индекс, то в нем нужно учитывать порядок столбцов. Первыми идут те, в которых в выражениях используется WHERE. За ними – столбцы с наивысшими показателями уникальных значений. Остальные выстраиваются по мере понижения этого показателя.
- Допускается использование индекса на вычисляемых столбцах таблицы, но лишь при условии соблюдения определенных требований (для вычисления значений такого столбца могут использоваться только детерминистические выражения, т.е. результат для определенного набора входящих параметров всегда должен быть одинаковым).
Запросы к базе данных
При проектировании вторым важным пунктом является понимание и учет того, какие выполняются запросы к базе данных. Необходимо учитывать частоту изменения данных, а также требуется соблюдение определенных принципов:
- Предпочтительнее, чтобы один запрос содержал наибольшее число строк, нежели разбивать их на соответствующее число отдельных запросов.
- На столбцах, используемых в запросах с WHERE чаще всего, предпочтительнее создавать Nonclustered index в качестве условия поиска и соединения в JOIN.
- Следует воспользоваться возможностями индексирования столбцов, используемых в поисковых запросах на соответствие конкретным значениям.
Способы создания индексов
Предусмотрено создание индексов ms sql server с помощью двух инструментов. В этом помогут:
- SSMS (MSSQL Management Studio);
- специальный язык Transact-SQL (T-SQL, поддерживающий Paging Queries).
Как создать кластеризованный индекс
Как отмечалось выше, создание кластеризованного индекса sql сервером происходит автоматически, когда определенный столбец выбирается в качестве первичного ключа (PRIMARY KEY). Когда такого не происходит, следует создать кластерный индекс своими руками.
Чтобы создать Clustered index воспользуемся Management Studio. Для этого следует:
- Открыть SSMS.
- Воспользовавшись обозревателем выбрать соответствующую таблицу.
- Остановившись на пункте «Индексы» кликнуть мышкой.
- Выбрать «Создать индекс» и соответствующий тип (выбираем «Кластеризованный»).
- В новом окне появится форма «Новый индекс». Здесь потребуется вписать наименование нового создаваемого индекса (в рамках одной таблицы требуется, чтобы оно было уникальным). Поставить галочку, что он уникальный.
- Выбрать столбец, который будет являться ключом индекса. Он ляжет в основу создаваемого Clustered index. Провести сортировку строк табличных данных кнопкой «Добавить».
- После ввода всех необходимых параметров кликнуть «ОК».
Результатом действий станет кластерный индекс.
Он может быть создан и с помощью инструкций Transact-SQL CREATRE INDEX.
Как создать некластеризованный индекс
Для создания Nonclustered index можно воспользоваться Management Studio либо инструкциями T-SQL.
Создание Nonclustered index с включенными столбцами
Коснемся вопроса, как создать Nonclustered index с условием, что в индекс включены столбцы, которые не являются ключевыми. Такой индекс принято использовать в тех случаях, когда индекс создается под конкретный запрос. К примеру, чтобы индексом покрывался запрос полностью, т.е. включал все столбцы. Вследствие того, что запрос покрыт, увеличивается производительность. Это становится возможным благодаря тому, что оптимизатор запросов может получить все значения столбцов в индексе без обращения к табличным данным. Это ведет к уменьшению числа операций ввода-вывода на диске.
Однако стоит учитывать, что с включением в индекс неключевых столбцов размер его увеличивается. А значит, для его хранения понадобится больше дискового пространства. Это также может снизить производительность операций INSERT, UPDATE, DELETE и MERGE в базовой таблице данных.
Для его создания также воспользуемся Management Studio:
- Открыть SSMS.
- Воспользовавшись обозревателем выбрать требуемую таблицу и щелкнуть мышкой по пункту «Индексы».
- Выбрать «Создать индекс», а затем «Некластеризованный» (не ставить галочку на уникальности).
- В открывшейся форме «Новый индекс» вписать наименование нового индекса, добавить один или несколько ключевых столбцов, воспользовавшись кнопкой «Добавить».
- Перейти во вкладку «Включено столбцы». Добавить все столбцы, которые должны быть включены в индекс, воспользовавшись кнопкой «Добавить».
- Когда введены все нужные параметры кликнуть «ОК».
При необходимости, можно легко создать фильтруемый Nonclustered index. Для этого следует воспользоваться T-SQL и в операторе CREATE NONCLUSTERED INDEX в WHERE указать условие фильтрации. Так можно отфильтровать практически любые данные, не важные в запросах.
Удаление индекса
Пришло время узнать о том, какими способами могут удаляться индексы. Для начала воспользуемся Management Studio. Для этого необходимо:
- Открыть SSMS.
- Выбрать индекс, подлежащий удалению.
- Щелкнуть мышкой по нему и из списка выбрать «Удалить».
- Выполненное действие подтвердить нажатием «ОК».
Удаление индексов выполняется и с помощью инструкций T-SQL DROP INDEX (DROP INDEX IX_NonClustered ON TestTable). Однако ею нельзя воспользоваться для удаления тех индексов, которые создавались через формирование ограничений PRIMARY KEY и UNIQUE. Чтобы удалить их, следует воспользоваться инструкцией ALTER TABLE с предложением DROP CONSTRAINT.
Как выполнить изменение значений коэффициента, который установлен по умолчанию
Чтобы внести изменения в значения коэффициента, которые установлены по умолчанию, следует воспользоваться:
- SSMS;
- инструкцией T-SQL, выполнив запуск системной сохраненной процедуры;
- sp configure.
Особенности индексов и условий предложения WHERE
Если предложение WHERE инструкции SELECT содержит условие поиска данных с одним столбцом, то необходимо для него создать индекс. Это условие очень важно при высокой селективности (selectivity) условия.
Но он будет абсолютно бесполезным при постоянном уровне селективности от 80% и выше. Простое сканирование табличных данных потребует меньше времени.
Если в часто применяемом запросе условие поиска включает оператор AND, то лучше всего – создать составной индекс, включив в него сразу все табличные столбцы, которые указывались в предложении WHERE инструкции SELECT.
Оптимизация индексов
После выполнения любых действий с табличными данными sql сервером в тот же момент производятся соответствующие правки в индексах. Спустя некоторое время все подобные исправления могут спровоцировать фрагментацию данных. В результате, их может разбросать по всей базе.
Подобная фрагментация данных может стать причиной понижения производительности. Потому крайне важно время от времени проводить дефрагментацию. К подобным операциям по обслуживанию индексов относят реорганизацию и перестроение индексов.
Чтобы понять, какую именно операцию требуется провести – реорганизацию или перестроение, следует выяснить степень фрагментации данных. Она поможет понять, какой способ дефрагментации будет наиболее эффективным и что выбрать.
Чтобы выяснить уровень фрагментации следует воспользоваться системной табличной функцией sys.dm_db_index_physical_stats. Для определения уровня фрагментации всего перечня таблиц для выбранной базы, можете воспользоваться следующим запросом:
SELECT OBJECT_NAME(T1.object_id) AS NameTable,
T1.index_id AS IndexId,
T2.name AS IndexName,
T1.avg_fragmentation_in_percent AS Fragmentation
FROM sys.dm_db_index_physical_stats (DB_ID(), NULL, NULL, NULL, NULL) AS T1
LEFT JOIN sys.indexes AS T2 ON T1.object_id = T2.object_id AND T1.index_id = T2.index_id
Согласно рекомендациям Microsoft, последующие действия будут зависеть от уровня фрагментации:
- меньше 5% – о дефрагментации следует пока забыть;
- от 5 до 30% – требуется выполнить реорганизацию индекса. Это потребует минимального количества ресурсов системы и ее можно провести без долговременной блокировки;
- свыше 30% – следует выполнить перестроение индекса. При значительном уровне фрагментации это наиболее эффективно.
Реорганизация индекса
Реорганизацией называют процесс устранения фрагментации индекса. В его ходе происходит дефрагментация конечного уровня кластерных и некластерных индексов по таблицам и представлениям. Говоря простым языком – выполняется простое переупорядочивание страниц. В основе переупорядочивания лежит логический порядок конечных узлов (выполняете слева направо).
Если хотите провести реорганизацию – воспользуйтесь:
- MSSQL Management Studio. На выбранном индексе следует щелкнуть мышкой, из списка выбрать и нажать «Реорганизовать»;
- соответствующими инструкциями T-SQL.
Перестроение индекса
Перестроением называется операция по устранению фрагментации индекса. Он заключается в устранении старого и формировании нового.
Перестроение индекс выполняется несколькими способами. В этом поможет:
- Management Studio. Для этого необходимо выбрать нужный индекс, мышкой кликнуть по нему и выбрать «Перестроить»;
- инструкция ALTER INDEX ix с предложением REBUILD, которая по сути является заменой инструкции DBCC DBREINDEX. Ею пользуются, когда возникла потребность в масштабной операции;
- инструкция CREATE NONCLUSTERED INDEX (CREATE INDEX) с предложением DROP_EXISTING. Подходит, чтобы перестроить индекс и изменить его определения (удалить либо добавить ключевые столбцы).
Это вся полезная информация по индексам в Microsoft SQL Server. Изучайте их, а если возникнут вопросы – задавайте. Удачи в изучении и применении indexes ms sql.
Купить лицензию Microsoft SQL Server 2022 (СSP) в Украине
Для консультаций или оформления заказа обращайтесь в наш отдел продаж по тел. +38 (044) 338-30-59 или e-mail sales@softonline.com.ua.
Корпорация Microsoft анонсировала первый публичный предварительный просмотр SQL Server 2022. В эту версию SQL Server добавлено множество новых функций для повышения производительности, интеграции ваших растущих объемов корпоративных данных, повышения безопасности и т. д.
SQL Server 2022 предлагает инновационные функции обеспечения безопасности и соответствия требованиям, ведущую в отрасли производительность, критически важную доступность и расширенную аналитику для всех ваших рабочих нагрузок данных.
Улучшенные функции, из-за которых стоит купить SQL Server 2022
- Ссылка Azure Synapse для SQL. Получите аналитику операционных данных практически в реальном времени в SQL Server 2022 (16.x). Благодаря бесшовной интеграции между операционными хранилищами в SQL Server 2022 (16.x) и выделенными пулами SQL Azure Synapse Analytics, Azure Synapse Link для SQL позволяет запускать сценарии аналитики, бизнес-аналитики и машинного обучения для ваших операционных данных с минимальным воздействием на источник. базы данных с новой технологией подачи изменений.
- Интеграция объектного хранилища. В SQL Server 2022 (16.x) представлена новая интеграция хранилища объектов с платформой данных, позволяющая интегрировать SQL Server с S3-совместимым хранилищем объектов в дополнение к службе хранилища Azure. Первый — это резервное копирование по URL -адресу, а второй — виртуализация озера данных.
- Виртуализация данных. Запрашивайте разные типы данных в разных типах источников данных из SQL Server.
ДОСТУПНОСТЬ
- Ссылка на Управляемый экземпляр Azure SQL. Подключите свой экземпляр SQL Server к Управляемому экземпляру Azure SQL.
- Содержащаяся группа доступности. Создайте группу доступности Always On, которая: 1) управляет собственными объектами метаданных (пользователями, именами входа, разрешениями, заданиями агента SQL и т. д.) на уровне группы доступности в дополнение к уровню экземпляра; 2) включает в группу доступности специализированные автономные системные базы данных.
- Распределенная группа доступности. Теперь используется несколько TCP-подключений для лучшего использования пропускной способности сети по удаленному каналу с большими задержками TCP.
- Улучшенные метаданные резервного копирования. backupset системная таблица возвращает последнее допустимое время восстановления.
- Интеграция Microsoft Defender для облака. Защитите свои SQL-серверы с помощью плана Defender for SQL. Для плана Defender for SQL требуется, чтобы расширение SQL Server для Azure было включено и включало функции для обнаружения и устранения потенциальных уязвимостей базы данных и обнаружения аномальных действий, которые могут указывать на угрозу вашим базам данных.
- Интеграция Microsoft Purview. Примените политики доступа Microsoft Purview к любому экземпляру SQL Server, который зарегистрирован как в Azure Arc, так и в управлении использованием данных Microsoft Purview. Новые роли SQL Performance Monitor и SQL Security Auditor соответствуют принципу наименьших привилегий с использованием политик доступа Microsoft Purview.
- Леджер. Функция леджера предоставляет возможности защиты от несанкционированного доступа в вашей базе данных. Вы можете криптографически засвидетельствовать другим сторонам, таким как аудиторы или другие деловые стороны, что ваши данные не были подделаны.
- Проверка подлинности Azure Active Directory. Используйте проверку подлинности Azure Active Directory (Azure AD) для подключения к SQL Server.
- Всегда шифруется безопасными анклавами. Поддержка JOIN, GROUP BY и ORDER BY, а также для текстовых столбцов с использованием параметров сортировки UTF-8 в конфиденциальных запросах с использованием анклавов. Улучшенная производительность.
- Контроль доступа: разрешения. Новые детализированные разрешения улучшают соблюдение принципа наименьших привилегий.
- Контроль доступа: роли на уровне сервера. Новые встроенные роли уровня сервера обеспечивают доступ с минимальными привилегиями для административных задач, которые применяются ко всему экземпляру SQL Server.
- Динамическое маскирование данных. Гранулированные разрешения UNMASK для динамического маскирования данных.
- Поддержка сертификатов PFX и другие криптографические улучшения. Новая поддержка импорта и экспорта сертификатов и закрытых ключей в формате файлов PFX. Возможность резервного копирования и восстановления главных ключей в хранилище BLOB-объектов Azure. Сертификаты, сгенерированные SQL Server, теперь имеют размер ключа RSA по умолчанию, равный 3072 битам. Добавлено резервное копирование симметричного ключа и восстановление симметричного ключа.
- Поддержка протокола MS-TDS 8.0. Новая итерация протокола MS-TDS. Делает шифрование обязательным. Выравнивает MS-TDS с HTTPS, делая его управляемым сетевыми устройствами для дополнительной безопасности. Удаляет пользовательское чередование MS-TDS/TLS и позволяет использовать TLS 1.3 и последующие версии протокола TLS.
- Усовершенствования параллелизма системной блокировки страниц. Параллельные обновления страниц глобальной карты распределения (GAM) и страниц общей карты глобального распределения (SGAM) снижают конфликты защелки страниц при выделении/освобождении страниц данных и экстентов. Эти усовершенствования применяются ко всем пользовательским базам данных и особенно полезны при tempdbвысоких рабочих нагрузках.
- Параллельное сканирование буферного пула. Повышает производительность операций сканирования пула буферов на компьютерах с большим объемом памяти за счет использования нескольких ядер ЦП.
- Упорядоченный кластеризованный индекс columnstore. Упорядоченный кластеризованный индекс columnstore (CCI) сортирует существующие данные в памяти, прежде чем построитель индекса сжимает данные в сегменты индекса. Это может привести к более эффективному удалению сегментов, что приведет к повышению производительности, поскольку количество сегментов, считываемых с диска, уменьшится. Также доступно в Synapse Analytics.
- Улучшено удаление сегментов columnstore. Все индексы columnstore выигрывают от расширенного исключения сегментов по типам данных. Выбор типа данных может существенно повлиять на производительность запросов на основе предикатов общих фильтров для запросов к индексу columnstore. Это исключение сегмента применялось к числовым типам данных, дате и времени, а также к типу данных datetimeoffset с масштабом, меньшим или равным двум. Начиная с SQL Server 2022 (16.x), возможности исключения сегментов распространяются на строковые, двоичные типы данных, типы данных guid и тип данных datetimeoffset для масштаба более двух.
- Управление OLTP в памяти. Улучшите управление памятью на больших серверах памяти, чтобы уменьшить количество случаев нехватки памяти.
- Рост файла виртуального журнала. В предыдущих версиях SQL Server, если следующий прирост превышал 1/8 текущего размера журнала и прирост составлял менее 64 МБ, создавались четыре VLF. В SQL Server 2022 (16.x) это поведение немного отличается. Создается только один VLF, если прирост меньше или равен 64 МБ и превышает 1/8 текущего размера журнала. Дополнительные сведения о росте VLF см. в разделе Виртуальные файлы журналов (VLF) .
- Управление потоками. ParallelRedoThreadPool: пул потоков на уровне экземпляра, совместно используемый всеми базами данных, выполняющими повторную работу. При этом каждая база данных может воспользоваться преимуществами параллельного повторения. Раньше было ограничение до 100 потоков. Параллельное повторное пакетное повторение. Повторное выполнение записей журнала группируется под одной защелкой, что повышает скорость. Это улучшает восстановление, повторение наверстывания и восстановление после сбоя.
- Уменьшено продвижение операций ввода-вывода буферного пула. Уменьшено количество случаев повышения уровня одной страницы до восьми страниц при заполнении пула буферов из хранилища, что приводило к ненужному вводу-выводу. Буферный пул может быть заполнен более эффективно с помощью механизма упреждающего чтения. Это изменение было введено в SQL Server 2022 (все выпуски) и включено в базу данных SQL Azure и Управляемый экземпляр Azure SQL.
- Усовершенствованные алгоритмы спин-блокировки. Спин-блокировки — огромная часть согласованности внутри движка для нескольких потоков. Внутренние корректировки ядра СУБД делают спин-блокировки более эффективными. Это изменение было введено в SQL Server 2022 (все выпуски) и включено в базу данных SQL Azure и Управляемый экземпляр Azure SQL.
- Улучшенные алгоритмы виртуального файла журнала (VLF). Виртуальный файловый журнал (VLF) — это абстракция физического журнала транзакций. Наличие большого количества небольших VLF на основе роста журнала может повлиять на производительность таких операций, как восстановление. Изменено алгоритм того, сколько VLF-файлов создается во время определенных сценариев роста журнала. Это изменение было введено в SQL Server 2022 (все выпуски) и включено в базу данных SQL Azure.
- Мгновенная инициализация файла для событий роста файла журнала транзакций. Как правило, файлы журналов транзакций не могут использовать мгновенную инициализацию файлов (IFI). Начиная с SQL Server 2022 (16.x) (все выпуски) и в базе данных SQL Azure мгновенная инициализация файлов может помочь увеличить размер журнала транзакций до 64 МБ. Приращение размера автоматического увеличения по умолчанию для новых баз данных составляет 64 МБ. События автоматического увеличения файла журнала транзакций размером более 64 МБ не могут получить преимущества от мгновенной инициализации файла.УПРАВЛЕНИЕ
ХРАНИЛИЩЕ ЗАПРОСОВ И ИНТЕЛЕКТУАЛЬНАЯ ОБРАБОТКА ЗАПРОСОВ
Семейство функций интеллектуальной обработки запросов (IQP) включает функции, повышающие производительность существующих рабочих нагрузок с минимальными усилиями по внедрению.
- Хранилище запросов на вторичных репликах. Хранилище запросов во вторичных репликах обеспечивает те же функции хранилища запросов для рабочих нагрузок вторичной реплики, которые доступны для первичных реплик.
- Подсказки хранилища запросов. Подсказки хранилища запросов используют хранилище запросов, чтобы предоставить метод формирования планов запросов без изменения кода приложения. Подсказки хранилища запросов, которые ранее были доступны только в базе данных SQL Azure и управляемом экземпляре Azure SQL, теперь доступны в SQL Server 2022 (16.x). Требуется, чтобы Хранилище запросов было включено и находилось в режиме «Чтение-запись».
- Отзыв о предоставлении памяти. Обратная связь о предоставлении памяти регулирует размер памяти, выделенной для запроса, на основе предыдущей производительности. В SQL Server 2022 (16.x) представлена обратная связь по предоставлению памяти в режиме Percentile и Persistence. Требуется включить хранилище запросов. Постоянство: возможность, которая позволяет сохранять отзыв о выделении памяти для данного кэшированного плана в хранилище запросов, чтобы отзыв можно было повторно использовать после удаления кэша. Постоянство улучшает обратную связь по предоставлению памяти, а также новые функции обратной связи DOP и CE. Процентиль: новый алгоритм повышает производительность запросов с сильно меняющимися требованиями к памяти, используя информацию о выделении памяти из нескольких предыдущих выполнений запроса, а не только выделение памяти из непосредственно предшествующего выполнения запроса. Требуется включить хранилище запросов. Хранилище запросов включено по умолчанию для вновь созданных баз данных, начиная с SQL Server 2022 CTP 2.1.
- Оптимизация плана с учетом параметров. Автоматически включает несколько активных кэшированных планов для одного параметризованного оператора. Планы выполнения в кэше поддерживают различные размеры данных в зависимости от значений параметров времени выполнения, предоставленных заказчиком.
- Степень параллелизма (DOP) обратной связи. Новый параметр конфигурации на уровне базы данных DOP_FEEDBACK автоматически регулирует степень параллелизма для повторяющихся запросов, чтобы оптимизировать рабочие нагрузки, когда неэффективный параллелизм может вызвать проблемы с производительностью. Аналогично оптимизации в базе данных SQL Azure. Требуется, чтобы хранилище запросов было включено и находилось в режиме «Чтение-запись». Начиная с RC 0, при каждой перекомпиляции запроса SQL Server сравнивает статистику времени выполнения запроса, используя существующую обратную связь, со статистикой времени выполнения предыдущей компиляции с существующей обратной связью. Если производительность не такая же или лучше, удаляются все отзывы DOP и запускается повторный анализ запроса, начиная с скомпилированного DOP.
- Отзыв об оценке количества элементов. Выявляет и исправляет неоптимальные планы выполнения запросов для повторяющихся запросов, когда эти проблемы вызваны неправильными предположениями модели оценки. Требуется, чтобы хранилище запросов было включено и находилось в режиме «Чтение-запись».
- Оптимизированное принудительное выполнение плана. Использует повтор компиляции, чтобы сократить время компиляции для принудительного создания плана за счет предварительного кэширования неповторяемых шагов компиляции плана.
- Интегрированный процесс настройки расширения Azure для SQL Server. Установите расширение Azure для SQL Server во время установки. Требуется для функций интеграции с Azure.
- Управление расширением Azure для SQL Server. Используйте диспетчер конфигурации SQL Server для управления расширением Azure для службы SQL Server. Требуется для создания экземпляра SQL Server с поддержкой Azure Arc и для других подключенных функций Azure.
- Максимальный расчет памяти сервера. Во время установки программа установки SQL рекомендует значение максимального объема памяти сервера в соответствии с документированными рекомендациями. Базовый расчет в SQL Server 2022 (16.x) отличается, чтобы отразить рекомендуемые параметры конфигурации памяти сервера.
- Улучшения ускоренного восстановления базы данных (ADR). Существует несколько улучшений, направленных на решение проблем с хранилищем постоянного хранилища версий (PVS) и повышение общей масштабируемости. SQL Server 2022 (16.x) реализует поток очистки постоянного хранилища версий для каждой базы данных, а не для каждого экземпляра, а объем памяти для средства отслеживания страниц PVS был улучшен. Существует также несколько улучшений эффективности ADR, таких как улучшения параллелизма, которые помогают процессу очистки работать более эффективно. ADR очищает страницы, которые ранее не могли быть очищены из-за блокировки.
- Улучшенная поддержка резервного копирования моментальных снимков. Добавлена поддержка Transact-SQL для замораживания и размораживания операций ввода-вывода без использования клиента VDI. Создайте резервную копию моментального снимка Transact-SQL.
- Уменьшение базы данных WAIT_AT_LOW_PRIORITY. В предыдущих выпусках сжатие баз данных и файлов баз данных для освобождения места часто приводило к проблемам параллелизма. SQL Server 2022 (16.x) добавляет WAIT_AT_LOW_PRIORITY в качестве дополнительной опции для операций сжатия (DBCC SHRINKDATABASE и DBCC SHRINKFILE). Когда вы указываете WAIT_AT_LOW_PRIORITY, новые запросы, требующие блокировки Sch-S или Sch-M, не блокируются ожидающей операцией сжатия до тех пор, пока операция сжатия не прекратит ожидание и не начнет выполняться.
- XML-сжатие. Сжатие XML предоставляет метод сжатия внестрочных XML-данных как для XML-столбцов, так и для индексов, улучшая требования к емкости. Дополнительные сведения см. в разделах CREATE TABLE (Transact-SQL) и CREATE INDEX (Transact-SQL).
- Параллелизм статистики асинхронного автоматического обновления. Избегайте потенциальных проблем с параллелизмом, используя асинхронное обновление статистики, если вы включите конфигурацию ASYNC_STATS_UPDATE_WAIT_AT_LOW_PRIORITY на уровне базы данных.
- Резервное копирование и восстановление в объектное хранилище, совместимое с S3. SQL Server 2022 (16.x) расширяет синтаксис BACKUP/ RESTORE TO/ FROM URL, добавляя поддержку нового соединителя S3 с использованием REST API.
- Собственный клиент SQL Server (SNAC) удален. Собственный клиент SQL Server (часто сокращенно SNAC) был удален из SQL Server 2022 (16.x) и SQL Server Management Studio 19 (SSMS). Собственный клиент SQL Server (SQLNCLI или SQLNCLI11) и устаревший поставщик Microsoft OLE DB для SQL Server (SQLOLEDB) не рекомендуются для новой разработки. Переключитесь на новый драйвер Microsoft OLE DB (MSOLEDBSQL) для SQL Server или последнюю версию драйвера Microsoft ODBC для SQL Server.
- Гибридный буферный пул с прямой записью. Сокращает количество memcpyкоманд, которые необходимо выполнить для измененных данных или страниц индекса, находящихся на устройствах PMEM. Это просветление теперь доступно как для Windows 2022, так и для Linux.
- Интегрированное ускорение и разгрузка. SQL Server 2022 (16.x) использует технологии ускорения от таких партнеров, как Intel, для обеспечения расширенных возможностей. На момент выпуска технология Intel® QuickAssist (QAT) обеспечивает сжатие резервных копий и аппаратную разгрузку.
- Улучшенная оптимизация. SQL Server 2022 (16.x) использует новые аппаратные возможности, в том числе расширение Advanced Vector Extension (AVX) 512 для улучшения операций в пакетном режиме. Требуется флаг трассировки 15097. См. раздел DBCC TRACEON — флаги трассировки (Transact-SQL).
- Возобновляемое добавление ограничений таблицы. Поддерживает приостановку и возобновление операции ALTER TABLE ADD CONSTRAINT. Возобновляйте такую операцию после периодов обслуживания, отказоустойчивости или системных сбоев.СОЗДАТЬ ИНДЕКС WAIT_AT_LOW_PRIORITY с добавленным пунктом онлайн-индексных операций.
- СОЗДАНИЕ ИНДЕКСА. WAIT_AT_LOW_PRIORITY с добавленным пунктом онлайн-индексных операций.
- Транзакционная репликация. Одноранговая репликация позволяет обнаруживать и разрешать конфликты, что дает преимущество последнему писателю. Впервые представлено в SQL Server 2019 (15.x) CU 13.
- СОЗДАТЬ СТАТИСТИКУ. Добавляет опцию AUTO_DROP.
- SELECT . предложение WINDOW. Определяет разделение и порядок набора строк перед применением оконной функции, которая использует окно в предложении OVER.
- [НЕ] ОТЛИЧАЕТСЯ ОТ. Определяет, дают ли два выражения при сравнении друг с другом значение NULL, и гарантирует истинное или ложное значение результата.
- Функции временных рядов. Вы можете хранить и анализировать данные, которые изменяются с течением времени, используя возможности временного окна, агрегирования и фильтрации. — DATE_BUCKET () — GENERATE_SERIES () Следующее добавляет поддержку IGNORE NULLS и RESPECT NULLS: — FIRST_VALUE () — LAST_VALUE ()
- JSON-функции. — ISJSON () — JSON_PATH_EXISTS () — JSON_OBJECT () — JSON_ARRAY ()
- Агрегатные функции. — APPROX_PERCENTILE_CONT () — APPROX_PERCENTILE_DISC ()
- Функции T-SQL. — GREATEST () — LEAST () — STRING_SPLIT () — DATETRUNC () — LTRIM () — RTRIM () — TRIM ()
- Функции управления битами. — LEFT_SHIFT () — RIGHT_SHIFT () — BIT_COUNT () — GET_BIT () — SET_BIT ()
Как получить консультацию или купить лицензию MS SQL Server 2022 в Украине?
Наша компания является официальным партнером Мicrosoft в Украине и предлагает своим клиентам 100% официальное программное обеспечение.
Для получения консультаций и оформления заказа необходимо связаться с менеджерами нашего отдела продаж по тел. +38 (044) 338-30-59, e-mail: sales@softonline.com.ua или онлайн-чату (кнопка в левом нижнем углу).
КОРОТКО О ЛИЦЕНЗИРОВАНИИ
Microsoft CSP – программа лицензирования, позволяющая покупать онлайн-сервисы Microsoft по подписке. К таким относятся такие продукты как Office 365, Microsoft 365, Exchange Online, Microsoft Teams, SharePoint Online, Power BI, Windows Server, SQL, Windows 10 Enterprise, Azure и многое другое. Также, по данной программе можно приобрести бессрочные лицензии, такие как Windows Server, SQL Server, Exchange Server, Project Server, Project Server, Windows GGWA — Windows 11 Pro — Legalization Get Genuine, Office LTSC.
Cхемы лицензирования SQL Server
1. Microsoft SQL Server Standard по схеме лицензирования Server + CAL предполагает покупку лицензии на сервер вместе с клиентскими подключениями (SQL Server CAL) для подключения каждого пользователя. CAL можно выбрать «на устройство» или «на пользователя».
2. Microsoft SQL Server Standard Core и Enterprise Core. Лицензия Core покрывает 2 ядра физического процессора (2Lic). Клиентские лицензии, SQL Server CAL, не требуются. Минимальная покупка — 2 лицензии.
СПОСОБ И СРОКИ ПОСТАВКИ
- Поставка по прогрограмме CSP происходит полностью в электронном виде. Мы создаем новый портал клиента на платформе Microsoft (office.com), добавляем в него купленные лицензии и передаем доступ или добавляем лицензии в действующий аккаунт, если такой имеется у клиента. Срок поставки от 5 минут до 1 дня.
