|
21.08.2019, 15:45 | #1 |
Участник
|
А чтение данных из модели никто не пробовал оптимизировать ?
Там такие же безумные тысячи запросов через вызовы хранимых процедур. Хранимки нам доступны, можно переписать как душе угодно. Например при запросе к [AXJW12_TEST_model].[dbo].[XU_ReadHeaderExt] (а именно эта хранимка самая популярная при начитке узлов AOT) в случае обращения к EDT или полям таблички передается параметр LoadType = 273 т.е. начитывается заодно и исходный текст узла, которого в данном случае нет по определению, т.е. лишний outer join идет. Можно его убрать. Ну и.т.д. Все можно пофиксить, поправив текст времянки, делая в зависимости от типа объекта разный запрос. Правда начитка EDT - это мелочи по сравнению с начитыванием методов таблиц при открытии форм. Вот на них и идут основные запросы. Каждый табличный метод отдельным вызовом типа такого (похоже начитываются все методы таблички, даже если они не используются) : X++: exec [AXJW12_TEST_model].[dbo].[XU_ReadHeaderExt] 12,30441,0,N'buf2con',15,5,1,273 X++: exec [AXJW12_TEST_model].[dbo].[XU_ReadHeaderExt] 12,30441,0,N'buf2con',15,5,1,273 exec [AXJW12_TEST_model].[dbo].[XU_ReadHeaderExt] 12,30441,0,N'canSubmitToWorkflow',15,5,1,273 exec [AXJW12_TEST_model].[dbo].[XU_ReadHeaderExt] 12,30441,0,N'caption',15,5,1,273 exec [AXJW12_TEST_model].[dbo].[XU_ReadHeaderExt] 12,30441,0,N'clear',15,5,1,273 exec [AXJW12_TEST_model].[dbo].[XU_ReadHeaderExt] 12,30441,0,N'con2buf',15,5,1,273 exec [AXJW12_TEST_model].[dbo].[XU_ReadHeaderExt] 12,30441,0,N'defaultField',15,5,1,273 exec [AXJW12_TEST_model].[dbo].[XU_ReadHeaderExt] 12,30441,0,N'defaultRow',15,5,1,273 exec [AXJW12_TEST_model].[dbo].[XU_ReadHeaderExt] 12,30441,0,N'equal',15,5,1,273 exec [AXJW12_TEST_model].[dbo].[XU_ReadHeaderExt] 12,30441,0,N'fieldAccessRight',15,5,1,273 exec [AXJW12_TEST_model].[dbo].[XU_ReadHeaderExt] 12,30441,0,N'fieldBufferAccessRight',15,5,1,273 exec [AXJW12_TEST_model].[dbo].[XU_ReadHeaderExt] 12,30441,0,N'getAllowRedefault',15,5,1,273 exec [AXJW12_TEST_model].[dbo].[XU_ReadHeaderExt] 12,30441,0,N'getDefaultingDependencies',15,5,1,273 exec [AXJW12_TEST_model].[dbo].[XU_ReadHeaderExt] 12,30441,0,N'getExtension',15,5,1,273 exec [AXJW12_TEST_model].[dbo].[XU_ReadHeaderExt] 12,30441,0,N'getPresenceFieldData',15,5,1,273 exec [AXJW12_TEST_model].[dbo].[XU_ReadHeaderExt] 12,30441,0,N'getSQLStatement',15,5,1,273 exec [AXJW12_TEST_model].[dbo].[XU_ReadHeaderExt] 12,30441,0,N'helpField',15,5,1,273 exec [AXJW12_TEST_model].[dbo].[XU_ReadHeaderExt] 12,30441,0,N'initValue',15,5,1,273 exec [AXJW12_TEST_model].[dbo].[XU_ReadHeaderExt] 12,30441,0,N'isFormDataSource',15,5,1,273 exec [AXJW12_TEST_model].[dbo].[XU_ReadHeaderExt] 12,30441,0,N'modifiedField',15,5,1,273 exec [AXJW12_TEST_model].[dbo].[XU_ReadHeaderExt] 12,30441,0,N'modifiedFieldValue',15,5,1,273 exec [AXJW12_TEST_model].[dbo].[XU_ReadHeaderExt] 12,30441,0,N'postCacheLoad',15,5,1,273 exec [AXJW12_TEST_model].[dbo].[XU_ReadHeaderExt] 12,30441,0,N'postLoad',15,5,1,273 exec [AXJW12_TEST_model].[dbo].[XU_ReadHeaderExt] 12,30441,0,N'preRemoting',15,5,1,273 exec [AXJW12_TEST_model].[dbo].[XU_ReadHeaderExt] 12,30441,0,N'setSQLTracing',15,5,1,273 exec [AXJW12_TEST_model].[dbo].[XU_ReadHeaderExt] 12,30441,0,N'setXDSContext',15,5,1,273 exec [AXJW12_TEST_model].[dbo].[XU_ReadHeaderExt] 12,30441,0,N'tableAccessRight',15,5,1,273 exec [AXJW12_TEST_model].[dbo].[XU_ReadHeaderExt] 12,30441,0,N'tableBufferAccessRight',15,5,1,273 exec [AXJW12_TEST_model].[dbo].[XU_ReadHeaderExt] 12,30441,0,N'takeOwnershipOfTempDBTable',15,5,1,273 exec [AXJW12_TEST_model].[dbo].[XU_ReadHeaderExt] 12,30441,0,N'toolTipField',15,5,1,273 exec [AXJW12_TEST_model].[dbo].[XU_ReadHeaderExt] 12,30441,0,N'toolTipRecord',15,5,1,273 exec [AXJW12_TEST_model].[dbo].[XU_ReadHeaderExt] 12,30441,0,N'useExistingTempDBTable',15,5,1,273 exec [AXJW12_TEST_model].[dbo].[XU_ReadHeaderExt] 12,30441,0,N'validateDelete',15,5,1,273 exec [AXJW12_TEST_model].[dbo].[XU_ReadHeaderExt] 12,30441,0,N'validateField',15,5,1,273 exec [AXJW12_TEST_model].[dbo].[XU_ReadHeaderExt] 12,30441,0,N'validateFieldValue',15,5,1,273 exec [AXJW12_TEST_model].[dbo].[XU_ReadHeaderExt] 12,30441,0,N'validateWrite',15,5,1,273 exec [AXJW12_TEST_model].[dbo].[XU_ReadHeaderExt] 12,30441,0,N'xml',15,5,1,273 А если там 100 методов ? То будет 100 запросов. А табличка там не одна. В некоторых стандартных формах по десятку и больше датасорсов нагромождено. Правила построения запросов SQL, когда за один запрос лучше получать всю выборку ? Не, не слышали такого Правда справедливости ради скажу, что когда трассировал открытие формы то из 6 секунд время выполнения этих запросов было порядка 1,5 секунд. Остальные 4,5 секунды аос что-то думал внутри себя. возможно раскладывал это все в кешах. Но есть вероятность того что профайлер не совсем точно время посчитал. Тем более что длительность каждого запроса была 0,120 - 0,180 миллисекунд. Сразу добавлю, что времена привожу по начитке формы из AOT т.е. из базы модели. Запрос самих данных в БД - это отдельная тема, время на это сюда не включено и там все было нормально. Последний раз редактировалось Logger; 21.08.2019 в 16:14. |
|
|
За это сообщение автора поблагодарили: raz (5), sukhanchik (5), chunga_changa (1). |
Теги |
ax2012, ax2012r3, performance, обновление, производительность, синхронизация |
|
|