добавлено: 05 фев 17
понравилось:0
просмотров: 2659
комментов: 0
теги:
понравилось:0
просмотров: 2659
комментов: 0
теги:
- use hint
- sql server 2016 sp1
- force_default_cardinality_estimation
- force_legacy_cardinality_estimation
- tf 2312
- tf 9481
Автор: SomewhereSomehow
Продолжаем рассматривать примеры использования хинтов при помощи USE HINT.
В этой заметке мы посмотрим, как управлять версией механизма оценки кардинальности с помощью хинтов FORCE_DEFAULT_CARDINALITY_ESTIMATION и FORCE_LEGACY_CARDINALITY_ESTIMATION.
Cardinality Estimation, СЕ (оценка кардинальности) – это оценка предполагаемого числа строк, которое будет обработано тем или иным оператором запроса. Оценка – один из ключевых факторов при построении плана запроса (более подробно я рассматривал эту тему в докладе кардинальность и планы выполнения). Оценку числа строк осуществляет компонент Cardinality Estimator.
До 2014 сервера, была всего одна версия этого компонента, разработанная для SQL Server 7.0, постепенно адаптируемая к новым версиям, но принципиально не меняющаяся. Со временем, разработчики сиквела поняли, что старую модель больше развивать нельзя – ее трудно расширять, трудно тестировать, любые изменения в одном месте могут приводить к поломкам в другом, кроме того, те предположения о реальности, которые были верны во времена SQL Server 7.0, сейчас устарели.
Начиная с SQL Server 2014 у сервера появилась новая модель оценки строк, адаптированная к современным рабочим нагрузкам. Эта модель оценки имеет новую архитектуру, расширяема и дополняема, версия этой модели получила номер 120 (по аналогии с уровнем совместимости БД, соответствующим серверу 2014 – 120). В 2016 сервере современная модель была расширена и получила номер версии 130, при этом версия 120 сохранилась. В еще не вышедшем, на момент написания статьи, RTM сервере vNext уже есть модель версии 140.
Читать дальше...
В этой заметке мы посмотрим, как управлять версией механизма оценки кардинальности с помощью хинтов FORCE_DEFAULT_CARDINALITY_ESTIMATION и FORCE_LEGACY_CARDINALITY_ESTIMATION.
Cardinality Estimation, СЕ (оценка кардинальности) – это оценка предполагаемого числа строк, которое будет обработано тем или иным оператором запроса. Оценка – один из ключевых факторов при построении плана запроса (более подробно я рассматривал эту тему в докладе кардинальность и планы выполнения). Оценку числа строк осуществляет компонент Cardinality Estimator.
До 2014 сервера, была всего одна версия этого компонента, разработанная для SQL Server 7.0, постепенно адаптируемая к новым версиям, но принципиально не меняющаяся. Со временем, разработчики сиквела поняли, что старую модель больше развивать нельзя – ее трудно расширять, трудно тестировать, любые изменения в одном месте могут приводить к поломкам в другом, кроме того, те предположения о реальности, которые были верны во времена SQL Server 7.0, сейчас устарели.
Начиная с SQL Server 2014 у сервера появилась новая модель оценки строк, адаптированная к современным рабочим нагрузкам. Эта модель оценки имеет новую архитектуру, расширяема и дополняема, версия этой модели получила номер 120 (по аналогии с уровнем совместимости БД, соответствующим серверу 2014 – 120). В 2016 сервере современная модель была расширена и получила номер версии 130, при этом версия 120 сохранилась. В еще не вышедшем, на момент написания статьи, RTM сервере vNext уже есть модель версии 140.
Читать дальше...
Комментарии