Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как временно попросить оптимизатор не использовать тот или иной индекс?
|
|||
|---|---|---|---|
|
#18+
Есть крупная 24/7 OLTP система. На проблемой таблице куча индексов. При этом все индексы используются в разных хранимках (но нигде нет прибивания индекса хинтом INDEX). Требуется посмотреть на то как поведет себя система если бы какого-то индекса "не было". При этом удалять индекс нельзя. Отключить индекс тоже нельзя, что равносильно DROP но с сохранением метаданных об обьекте. Фактически нужно глобально запретить оптимизатору использовать определенный индекс. Причина таких извращений в том, что пересоздание индекса крайне сильно ударит по перфомансу. Взываю к великим мастерам своего дела. Кто поможет поможет или хотя бы на умную мысль натолкнет? Microsoft SQL Server 2012 (SP4) (KB4018073) - 11.0.7001.0 (X64) Developer Edition (64-bit) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2018, 15:34 |
|
||
|
Как временно попросить оптимизатор не использовать тот или иной индекс?
|
|||
|---|---|---|---|
|
#18+
Интуиция подсказывает что-то подшаманить в статистике, чтобы оптимизатор не захотел такой индекс использовать. А после экспериментов обновить статистику и все бы "вернулось на круги своя". В общем хотелось бы попросить совета у сообщества. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2018, 15:39 |
|
||
|
Как временно попросить оптимизатор не использовать тот или иной индекс?
|
|||
|---|---|---|---|
|
#18+
Эксперементируйте - https://sqlsunday.com/2016/02/27/update-statistics-with-rowcount/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2018, 17:05 |
|
||
|
Как временно попросить оптимизатор не использовать тот или иной индекс?
|
|||
|---|---|---|---|
|
#18+
invm, такой вариант уже пробовал, но будет работать не всегда: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. У кого какие еще есть идеи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2018, 17:33 |
|
||
|
Как временно попросить оптимизатор не использовать тот или иной индекс?
|
|||
|---|---|---|---|
|
#18+
AlanDenton, дубль таблицы нельзя создать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2018, 17:41 |
|
||
|
Как временно попросить оптимизатор не использовать тот или иной индекс?
|
|||
|---|---|---|---|
|
#18+
KRS544, можно конечно. Потом переименовать и подменить. Но штука в том что таблица весит под 1Тб (без индексов). Плодить еще одну таблицу - печаль. И данные в ней могут апдейтится хоть за вчера, хоть за сегодня, хоть за год назад. Долго потом синхронизировать. Как вариант триггер и тогда синхронизация упроститься. Но у клиента такие финты ушами не пройдут. Взываю к адептам тайным трейс-флагов ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2018, 17:49 |
|
||
|
Как временно попросить оптимизатор не использовать тот или иной индекс?
|
|||
|---|---|---|---|
|
#18+
Идеальный вариант к которому стремлюсь. Как-то хитро отключить индекс, чтобы он продолжал жить и апдейтится. Но не использовался никак оптимизатором. Если за некое время по метрикам не будет печали, то удалить его. В противном случае - вернуть в строй. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2018, 17:52 |
|
||
|
Как временно попросить оптимизатор не использовать тот или иной индекс?
|
|||
|---|---|---|---|
|
#18+
AlanDenton, Plan guide? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2018, 18:06 |
|
||
|
Как временно попросить оптимизатор не использовать тот или иной индекс?
|
|||
|---|---|---|---|
|
#18+
invm, хм. Вариант, но тут вопрос как мне план закрепить за 500 хранимок? Планов с участием этой таблицы - тьма. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2018, 18:09 |
|
||
|
Как временно попросить оптимизатор не использовать тот или иной индекс?
|
|||
|---|---|---|---|
|
#18+
Сорри за орфографию. Реально буду благодарен помощи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2018, 18:10 |
|
||
|
Как временно попросить оптимизатор не использовать тот или иной индекс?
|
|||
|---|---|---|---|
|
#18+
AlanDenton, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Но это требует добавления хинта с NOEXPAND на все вызовы, и удаления его потом при откате, так что не вариант, наверное, просто направление "на подумать". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2018, 18:19 |
|
||
|
Как временно попросить оптимизатор не использовать тот или иной индекс?
|
|||
|---|---|---|---|
|
#18+
AlanDenton, ALTER INDEX .. DISABLE Помечает индекс как отключенный и недоступный для использования компонентом Компонент Database Engine. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2018, 18:19 |
|
||
|
Как временно попросить оптимизатор не использовать тот или иной индекс?
|
|||
|---|---|---|---|
|
#18+
Комменты ваши не убрал, у меня там в плане везде [pk_view] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2018, 18:20 |
|
||
|
Как временно попросить оптимизатор не использовать тот или иной индекс?
|
|||
|---|---|---|---|
|
#18+
KRS544, лол :) AlanDenton имхо нет такого... извращениями переместить индексы в отдельную группу и отключить... но моя не уверена в здравости :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2018, 18:21 |
|
||
|
Как временно попросить оптимизатор не использовать тот или иной индекс?
|
|||
|---|---|---|---|
|
#18+
MinamotoКомменты ваши не убрал, у меня там в плане везде [pk_view] материализовать терабайтную таблицу? ну ну ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2018, 18:22 |
|
||
|
Как временно попросить оптимизатор не использовать тот или иной индекс?
|
|||
|---|---|---|---|
|
#18+
KRS544, выше написал что юзать DISABLE не вариант увы. Если мне нужно потом включить индекс - это будет ребилд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2018, 18:22 |
|
||
|
Как временно попросить оптимизатор не использовать тот или иной индекс?
|
|||
|---|---|---|---|
|
#18+
TaPaK, ну да, туплю )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2018, 18:23 |
|
||
|
Как временно попросить оптимизатор не использовать тот или иной индекс?
|
|||
|---|---|---|---|
|
#18+
TaPaK, вот так и живем ))) В общем я не теряю боевого настроя. Только начал исследовать и всех мучать. Может ребята с майкрософта что скажут :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2018, 18:24 |
|
||
|
Как временно попросить оптимизатор не использовать тот или иной индекс?
|
|||
|---|---|---|---|
|
#18+
Кстати, способ таки есть, не добавляя хинты везде, но с понятными ограничениями в виде второй копии этой таблицы: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2018, 18:26 |
|
||
|
Как временно попросить оптимизатор не использовать тот или иной индекс?
|
|||
|---|---|---|---|
|
#18+
AlanDentonKRS544, выше написал что юзать DISABLE не вариант увы. Если мне нужно потом включить индекс - это будет ребилд. А ну да. Ну тут похоже индекс или жив или мертв. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2018, 18:27 |
|
||
|
Как временно попросить оптимизатор не использовать тот или иной индекс?
|
|||
|---|---|---|---|
|
#18+
Minamoto, авторКстати, способ таки есть, не добавляя хинты везде, но с понятными ограничениями в виде второй копии этой таблицы: ещё раз, затраты на материализацию таблицы будут даже больше чем ребилд индекса после DISABLE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2018, 18:31 |
|
||
|
Как временно попросить оптимизатор не использовать тот или иной индекс?
|
|||
|---|---|---|---|
|
#18+
Minamoto, идея конечно хорошая. Не буду спорить. Но ix не должен юзаться в Вашем примере. Фактически мы приходим к ситуации что делаем вью с таким именем как у таблицы и хардкодим там кластреный индекс. Но в таком случае другие сценарии начинают нагибать сервер. Всего на таблице 4 NC индекса. Проверить "на проф пригодность" нужно лишь один. Сорри что детали по кусочкам так даю. Не подумал что будет важно сказу сказать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2018, 18:32 |
|
||
|
Как временно попросить оптимизатор не использовать тот или иной индекс?
|
|||
|---|---|---|---|
|
#18+
имхо, 1. подобные задачи нужно решать на тестовом окружении где объём данных не терабайты 2. не вижу смысла изобретать хитро выдуманные велосипеды. если суть теста действительно нужна, убирайте индекс и пересоздавайте если нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2018, 18:33 |
|
||
|
Как временно попросить оптимизатор не использовать тот или иной индекс?
|
|||
|---|---|---|---|
|
#18+
Дедушка, тут 100% согласен, на тестовом окружение пробуем потом переносим... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2018, 18:35 |
|
||
|
|

start [/forum/topic.php?fid=46&fpage=162&tid=1690213]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
27ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 251ms |
| total: | 367ms |

| 0 / 0 |
