|
06.12.2018, 08:27 | #1 |
Участник
|
Index hints in X++ again
Все же есть положительные моменты, что MS стала следить за работой продукта в реальной жизни. Вот теперь и Index hints решили вернуть(видно кто-то уже наткнулся parameters sniffing в виде неравном распределении продуктов по складам или кодов партий вида "Без партии")
https://docs.microsoft.com/en-us/dyn...form-update-23 |
|
|
За это сообщение автора поблагодарили: Logger (1). |
06.12.2018, 09:26 | #2 |
Участник
|
Они бы еще позволили выборочно forceliterals включать для отдельных полей а также для update_recordset.
Совсем была бы красота. |
|
06.12.2018, 10:21 | #3 |
Moderator
|
Цитата:
Сообщение от trud
Все же есть положительные моменты, что MS стала следить за работой продукта в реальной жизни. Вот теперь и Index hints решили вернуть(видно кто-то уже наткнулся parameters sniffing в виде неравном распределении продуктов по складам или кодов партий вида "Без партии")
https://docs.microsoft.com/en-us/dyn...form-update-23 P.S. Кстати - на хорошо администрируемом SQL Server должен крутиться скрипт, которые анализирует статистику запросов. И если какой-то запрос потребляет больше, скажем, 15% общих ресурсов, шлется какое-то оповещение админу. А тот уже анализирует план, вычищает его из кэша если он плохой и информирует разработчиков что такой-то запрос что-то часто кривит. |
|
06.12.2018, 11:13 | #4 |
Участник
|
Цитата:
Сообщение от fed
На мой взгляд, потребность в index hints говорит о том что SQL Server (точнее Azure SQL) не присмотрен. Если статистика регулярно обновляется, сервер кривые планы не особо часто генерит. Кроме того - мы ведь этот хинт можем только в свой код добавить, соответственно - проще туда же поставить forceliterals и добиться правильного плана исполнения более системным образом...
P.S. Кстати - на хорошо администрируемом SQL Server должен крутиться скрипт, которые анализирует статистику запросов. И если какой-то запрос потребляет больше, скажем, 15% общих ресурсов, шлется какое-то оповещение админу. А тот уже анализирует план, вычищает его из кэша если он плохой и информирует разработчиков что такой-то запрос что-то часто кривит. |
|
06.12.2018, 12:26 | #5 |
Участник
|
|
|
|
За это сообщение автора поблагодарили: trud (1), AlexeyS (2), alex55 (1). |
06.12.2018, 12:24 | #6 |
Участник
|
Вроде там в принципе невозможно победить parameters sniffing. т.е. forceliterals конечно поможет, но построение плана это очень затратная операция(я как-то давно тестил, там получились времена на порядки больше + нагрузка на CPU), т.е. на типовых вещах типа разноски журнала это не очень выход. остается или указывать index hint или прописывать план через sp_create_plan_guide. хотя обещают адаптивные планы, но по видимому еще не очень работает
|
|
06.12.2018, 12:33 | #7 |
Moderator
|
Цитата:
Сообщение от trud
Вроде там в принципе невозможно победить parameters sniffing. т.е. forceliterals конечно поможет, но построение плана это очень затратная операция(я как-то давно тестил, там получились времена на порядки больше + нагрузка на CPU), т.е. на типовых вещах типа разноски журнала это не очень выход. остается или указывать index hint или прописывать план через sp_create_plan_guide. хотя обещают адаптивные планы, но по видимому еще не очень работает
Плюс - заметные затраты на построение плана запроса происходят при большом числе таблиц в запросе (типа штук 8-10). А в такие запросы особо index hint не попихаешь, поскольку там скорее собака в типе джойна зарыта. (А тут всего один хинт есть - forcenestedloops, а этого явно не хватит). |
|
06.12.2018, 13:53 | #8 |
Участник
|
Цитата:
https://www.cpubenchmark.net/singleThread.html типичный пример - это InventSum.findsum, если туда впихнуть forceliteral то все очень замедлится. тестировал как-то давно, надо будет при случае повторить |
|
06.12.2018, 16:38 | #9 |
Moderator
|
Цитата:
Сообщение от trud
500 ты перегнул. мы же говорим о однопоточном выполнении. т.е. как был 10 лет назад пентиум 4, 2.5гц, так и сейчас ненамного ушли от этой частоты. т.е. в среднем сейчас процессор только в 2 раза быстрее чем был 10 лет назад.
https://www.cpubenchmark.net/singleThread.html Конечно компиляцию плана запроса не распараллелишь, но все равно реально сервер этим делом мне всерьез загрузить не удавалось А по поводу findSum() - попробуй проверить. Просто мне на моей практике неоднократно приходилось ставить в разные места forceliterals и ни разу это к ухудшению производительности не приводило (хотя таки да - такие популярные места, как этот метод, я не правил). Последний раз редактировалось fed; 06.12.2018 в 16:57. |
|
12.12.2018, 16:52 | #10 |
Участник
|
Цитата:
подробно в статье https://denistrunin.netlify.com/forc...ePlaceholders/ |
|
|
За это сообщение автора поблагодарили: fed (10), belugin (15), sukhanchik (8), Logger (8), gl00mie (5), axotnik88 (1). |
10.12.2018, 15:29 | #11 |
Участник
|
Цитата:
Сообщение от fed
Ты знаешь, с тех пор как я начал с аксаптой работать, производительность жестких дисков (если не держать базу на SDD) возросла раз в 20-30-40. Производительность процессоров - раз в 500 наверное. Поэтому накладняк на построение плана запроса с легкостью перекрывается экономией на времени исполнения кривого плана запроса.
Плюс - заметные затраты на построение плана запроса происходят при большом числе таблиц в запросе (типа штук 8-10). А в такие запросы особо index hint не попихаешь, поскольку там скорее собака в типе джойна зарыта. (А тут всего один хинт есть - forcenestedloops, а этого явно не хватит). |
|
10.12.2018, 15:55 | #12 |
Moderator
|
Цитата:
Сообщение от AlexeyS
Похоже БД все чаще становится бутылочным горлышком. Например X5 работают на SAP и пишут что вынесли на уровень сервера приложений часть join-запросов, чтобы снизить нагрузку на БД.
Ну и вообще ситуации когда система 300000 запросов в секунду к серверу отправляет, говорит о некоторой кривости функционала. |
|
11.12.2018, 13:22 | #13 |
Участник
|
Цитата:
Сообщение от fed
БД всегда была бутылочным горлышком. Я за те 10 лет, которые я всерьез занимаюсь тюнингом производительности Ax, столкнулся всего с одним случаем, когда проблема была не в БД: Разработчики заказчика поставили Full Table Cache на часто обновляемую таблицу. В результате, большую часть времени AOS в кластере тратил на перечитывание этой таблицы. (И, кстати, таблица была слишком большая чтобы в память поместиться, так что сервера ее на локальный диск складывали). Все остальные проблемы так или иначе вызывались торможением БД.
Ну и вообще ситуации когда система 300000 запросов в секунду к серверу отправляет, говорит о некоторой кривости функционала. Когда я занимался производительностью АХ, значительная часть проблем была не в базе как таковой, а в том, что по ней статистика была устаревшая и индексов не хватало, т.е просто недостаточно обслуживалась. А еще - проблемы с кривым кодом, когда, например, настроечная таблица не закеширована на ОАС и постоянно идут мелкие запросы, отжирающие ресурсы. Или запрос к большой таблице уходит с пустыми Range. Или нужно разделить одну большую транзакцию на несколько маленьких. С одной стороны это скорее проблемы приложения, но в итоге все равно если не разбираться почему, то мнение одно - тормозит БД. |
|
11.12.2018, 16:07 | #14 |
MCT
|
Цитата:
Сообщение от fed
...
Плюс - заметные затраты на построение плана запроса происходят при большом числе таблиц в запросе (типа штук 8-10). А в такие запросы особо index hint не попихаешь, поскольку там скорее собака в типе джойна зарыта. (А тут всего один хинт есть - forcenestedloops, а этого явно не хватит). Но есть ощущение то, что сделали с Axapta high load и не нужен. Главное - это показатели в фин отчетности, что прибыть растет, инвесторы инвестят, а на остальное нас@ть. Не знаю как это на индише.
__________________
Axapta book for developer |
|
10.12.2018, 15:43 | #15 |
Участник
|
Бесстрашные ребята. Подобная мультипликация обычно требует отдельного лицензирования! Хотя, Quod licet Jovi, non licet bovi - возможно, по их контракту все это входит в лицензионное соглашение, лишь бы работало...
|
|
13.12.2018, 12:42 | #16 |
Участник
|
Я просто оставлю это здесь http://www.sommarskog.se/query-plan-mysteries.html , много текста но лучше много чем мало
|
|
|
За это сообщение автора поблагодарили: trud (1), Logger (3). |
13.12.2018, 14:03 | #17 |
Участник
|
Цитата:
Сообщение от skuull
Я просто оставлю это здесь http://www.sommarskog.se/query-plan-mysteries.html , много текста но лучше много чем мало
http://www.queryprocessor.ru/fast-in...-in-app-part1/ |
|
Теги |
index hint, производительность |
|
Похожие темы | ||||
Тема | Ответов | |||
Где искать European Union Consumer Price Index? | 3 |
|