AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 01.06.2017, 10:58   #1  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
870 / 637 (23) +++++++
Регистрация: 14.10.2004
Быстродействие метда TaxParameters::find
AX20012 R2
На таблице TaxParameters метод find интенсивно вызывается при разноске накладной. Журнал трассировки операторов SQL показывает, что этот метод выполняется в среднем 0,1 - 0,15 секунды. Но из-за того, что он вызывается сотни раз, получается задержка.

Почему-то этот метод генерирует на SQL-сервере создание нескольких временных таблиц при каждом своем вызове. Таблица TaxParameters - обычная, не временная.
Вот стек вызовов:
https://yadi.sk/i/u5NxMX2L3JignR

Вот код метода find
PHP код:
public static TaxParameters find()
{
    
TaxParameters parameter;

    
select firstonly parameter
        index key
        where parameter
.Key == 0;

    if (!
parameter && !parameter.isTmp())
    {
       
Company::createParameter(parameter);
    }

    return 
parameter
Временные таблицы генерирует вот этот код:
X++:
    select firstonly parameter
        index key
        where parameter.Key == 0;
Вот какой SQL-запрос по созданию временных таблиц генерирует этот код
CREATE TABLE tempdb."DBO".t435_835E0CB815E343869072DE3F542E1E75
(TAXGROUP NVARCHAR(10) COLLATE CYRILLIC_GENERAL_CI_AS NOT NULL DEFAULT '' ,TAXITEMGROUP NVARCHAR(10) COLLATE CYRILLIC_GENERAL_CI_AS
NOT NULL DEFAULT '' ,TAXSPECIFYLINE INT NOT NULL DEFAULT 0 ,JOURNALINCLTAX INT NOT NULL DEFAULT 0 ,CALCULATEPRINCIPLE INT NOT NULL
DEFAULT 0 ,PURCHTAXONOPERATIONS INT NOT NULL DEFAULT 0 ,KEY_ INT NOT NULL DEFAULT 0 ,CASHDISCONINVOICE INT NOT NULL DEFAULT 0 ,
TAXLESSCASHDISC INT NOT NULL DEFAULT 0 ,REVERSEONCASHDISC INT NOT NULL DEFAULT 0 ,TAXCALCULATIONDATETYPE INT NOT NULL DEFAULT 0 ,TAXONOVERPAYMENT INT NOT NULL DEFAULT 0 ,
REPORTADJUSTMENT INT NOT NULL DEFAULT 0 ,CONDITIONALTAX INT NOT NULL DEFAULT 0 ,CHECKINTERSECTION INT NOT NULL DEFAULT 0 ,ALLOWDUPLICATES INT NOT NULL DEFAULT 0 ,
VALIDATETAXCODE INT NOT NULL DEFAULT 0 ,TAXREPORT_JP INT NOT NULL DEFAULT 0 ,MANDATORYTAXDIRECTION INT NOT NULL DEFAULT 0 ,CUSTOMS_IN INT NOT NULL DEFAULT 0 ,
SERVICETAX_IN INT NOT NULL DEFAULT 0 ,EXCISE_IN INT NOT NULL DEFAULT 0 ,SALESTAX_IN INT NOT NULL DEFAULT 0 ,VAT_IN INT NOT NULL DEFAULT 0 ,
VENDORCALCULATIONDATETYPE_IN INT NOT NULL DEFAULT 0 ,CUSTOMERCALCULATIONDATETYPE_IN INT NOT NULL DEFAULT 0 ,TAXRECOVERABLE_IN INT NOT NULL DEFAULT 0 ,
REVERSESETTLEMENTDATEPRINCIPLE_W INT NOT NULL DEFAULT 0 ,EXIMINCENTIVESCHEMES_IN INT NOT NULL DEFAULT 0 ,RESTOREDVATGAINCALCMETHOD_RU INT NOT NULL DEFAULT 0 ,
RESTOREDVATCALCMETHOD_RU INT NOT NULL DEFAULT 0 ,PERSONTITLE_CZ NVARCHAR(30) COLLATE CYRILLIC_GENERAL_CI_AS NOT NULL DEFAULT '' ,TAXREPORTFACTOR_CZ NUMERIC(32,16) NOT NULL DEFAULT 0 ,
MAINECONOMICACTIVITYCODE_CZ NVARCHAR(6) COLLATE CYRILLIC_GENERAL_CI_AS NOT NULL DEFAULT '' ,NATURALPERSONFIRSTNAME_CZ NVARCHAR(20) COLLATE CYRILLIC_GENERAL_CI_AS NOT NULL DEFAULT ''
,NATURALPERSONLASTNAME_CZ NVARCHAR(36) COLLATE CYRILLIC_GENERAL_CI_AS NOT NULL DEFAULT '' ,TAXPAYERSTATUS_CZ INT NOT NULL DEFAULT 0 ,TAXPAYERTYPE_CZ INT NOT NULL DEFAULT 0
,MAINECONOMICACTIVITYCODE_LT NVARCHAR(6) COLLATE CYRILLIC_GENERAL_CI_AS NOT NULL DEFAULT '' ,DEDUCTIONPERCENT_LT NUMERIC(32,16) NOT NULL DEFAULT 0 ,
TAXSPECPOSTING_RU INT NOT NULL DEFAULT 0 ,INCOMINGVATPAYMENT_RU INT NOT NULL DEFAULT 0 ,EXCHRATEDIFFDOCTYPE_RU INT NOT NULL DEFAULT 0 ,BANKEXCHRATE_W INT NOT NULL DEFAULT 0 ,
REPORTUSEVATDUEDATE_W INT NOT NULL DEFAULT 0 ,SALESTAXPAYABLEEXCHANGERATETYPE BIGINT NOT NULL DEFAULT 0 ,SALESTAXRECEIVABLEEXCHANGERATETYPE BIGINT NOT NULL DEFAULT 0
,SERVICETAXACBASIS_IN INT NOT NULL DEFAULT 0 ,TAXBRANCHENABLED INT NOT NULL DEFAULT 0 ,MODIFIEDDATETIME DATETIME NOT NULL DEFAULT dateadd(ms, -datepart(ms,getutcdate()), getutcdate()) ,
DEL_MODIFIEDTIME INT NOT NULL DEFAULT 0 ,MODIFIEDBY NVARCHAR(8) COLLATE CYRILLIC_GENERAL_CI_AS NOT NULL DEFAULT '?' ,DATAAREAID NVARCHAR(4) COLLATE CYRILLIC_GENERAL_CI_AS NOT NULL
DEFAULT 'dat' ,RECVERSION INT NOT NULL DEFAULT 1 ,PARTITION BIGINT NOT NULL DEFAULT 5637144576 ,RECID BIGINT IDENTITY NOT NULL CHECK (RECID <> 0) )
CREATE TABLE tempdb."DBO".t435_835E0CB815E343869072DE3F542E1E75 (TAXGROUP NVARCHAR(10) COLLATE CYRILLIC_GENERAL_CI_AS NOT NULL DEFAULT '' ,TAXITEMGROUP NVARCHAR(10)
COLLATE CYRILLIC_GENERAL_CI_AS NOT NULL DEFAULT '' ,TAXSPECIFYLINE INT NOT NULL DEFAULT 0 ,JOURNALINCLTAX INT NOT NULL DEFAULT 0 ,CALCULATEPRINCIPLE INT NOT NULL
DEFAULT 0 ,PURCHTAXONOPERATIONS INT NOT NULL DEFAULT 0 ,KEY_ INT NOT NULL DEFAULT 0 ,CASHDISCONINVOICE INT NOT NULL DEFAULT 0 ,TAXLESSCASHDISC INT NOT NULL DEFAULT 0 ,
REVERSEONCASHDISC INT NOT NULL DEFAULT 0 ,TAXCALCULATIONDATETYPE INT NOT NULL DEFAULT 0 ,TAXONOVERPAYMENT INT NOT NULL DEFAULT 0 ,REPORTADJUSTMENT INT NOT NULL DEFAULT 0 ,
CONDITIONALTAX INT NOT NULL DEFAULT 0 ,CHECKINTERSECTION INT NOT NULL DEFAULT 0 ,ALLOWDUPLICATES INT NOT NULL DEFAULT 0 ,VALIDATETAXCODE INT NOT NULL DEFAULT 0 ,TAXREPORT_JP
INT NOT NULL DEFAULT 0 ,MANDATORYTAXDIRECTION INT NOT NULL DEFAULT 0 ,CUSTOMS_IN INT NOT NULL DEFAULT 0 ,SERVICETAX_IN INT NOT NULL DEFAULT 0 ,EXCISE_IN INT NOT NULL DEFAULT 0 ,
SALESTAX_IN INT NOT NULL DEFAULT 0 ,VAT_IN INT NOT NULL DEFAULT 0 ,VENDORCALCULATIONDATETYPE_IN INT NOT NULL DEFAULT 0 ,CUSTOMERCALCULATIONDATETYPE_IN INT NOT NULL DEFAULT 0 ,
TAXRECOVERABLE_IN INT NOT NULL DEFAULT 0 ,REVERSESETTLEMENTDATEPRINCIPLE_W INT NOT NULL DEFAULT 0 ,EXIMINCENTIVESCHEMES_IN INT NOT NULL DEFAULT 0 ,RESTOREDVATGAINCALCMETHOD_RU INT
NOT NULL DEFAULT 0 ,RESTOREDVATCALCMETHOD_RU INT NOT NULL DEFAULT 0 ,PERSONTITLE_CZ NVARCHAR(30) COLLATE CYRILLIC_GENERAL_CI_AS NOT NULL DEFAULT '' ,TAXREPORTFACTOR_CZ NUMERIC(32,16)
NOT NULL DEFAULT 0 ,MAINECONOMICACTIVITYCODE_CZ NVARCHAR(6) COLLATE CYRILLIC_GENERAL_CI_AS NOT NULL DEFAULT '' ,NATURALPERSONFIRSTNAME_CZ NVARCHAR(20) COLLATE CYRILLIC_GENERAL_CI_AS
NOT NULL DEFAULT '' ,NATURALPERSONLASTNAME_CZ NVARCHAR(36) COLLATE CYRILLIC_GENERAL_CI_AS NOT NULL DEFAULT '' ,TAXPAYERSTATUS_CZ INT NOT NULL DEFAULT 0 ,TAXPAYERTYPE_CZ INT NOT NULL
DEFAULT 0 ,MAINECONOMICACTIVITYCODE_LT NVARCHAR(6) COLLATE CYRILLIC_GENERAL_CI_AS NOT NULL DEFAULT '' ,DEDUCTIONPERCENT_LT NUMERIC(32,16) NOT NULL DEFAULT 0 ,TAXSPECPOSTING_RU INT
NOT NULL DEFAULT 0 ,INCOMINGVATPAYMENT_RU INT NOT NULL DEFAULT 0 ,EXCHRATEDIFFDOCTYPE_RU INT NOT NULL DEFAULT 0 ,BANKEXCHRATE_W INT NOT NULL DEFAULT 0 ,REPORTUSEVATDUEDATE_W INT
NOT NULL DEFAULT 0 ,SALESTAXPAYABLEEXCHANGERATETYPE BIGINT NOT NULL DEFAULT 0 ,SALESTAXRECEIVABLEEXCHANGERATETYPE BIGINT NOT NULL DEFAULT 0 ,SERVICETAXACBASIS_IN INT NOT NULL
DEFAULT 0 ,TAXBRANCHENABLED INT NOT NULL DEFAULT 0 ,MODIFIEDDATETIME DATETIME NOT NULL DEFAULT dateadd(ms, -datepart(ms,getutcdate()), getutcdate()) ,DEL_MODIFIEDTIME INT NOT
NULL DEFAULT 0 ,MODIFIEDBY NVARCHAR(8) COLLATE CYRILLIC_GENERAL_CI_AS NOT NULL DEFAULT '?' ,DATAAREAID NVARCHAR(4) COLLATE CYRILLIC_GENERAL_CI_AS NOT NULL DEFAULT 'dat' ,
RECVERSION INT NOT NULL DEFAULT 1 ,PARTITION BIGINT NOT NULL DEFAULT 5637144576 ,RECID BIGINT IDENTITY NOT NULL CHECK (RECID <> 0) ) EXECUTE (prepare, bind, attributes, etc)
__________________
Мои утилиты для Аксапты версий 3.0-2012: http://aceofdatabase.blogspot.com/

Последний раз редактировалось Ace of Database; 01.06.2017 в 11:03.
Старый 01.06.2017, 11:04   #2  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Конфигурационный ключ на таблице - отключен ?
__________________
-ТСЯ или -ТЬСЯ ?
Старый 01.06.2017, 11:04   #3  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
870 / 637 (23) +++++++
Регистрация: 14.10.2004
Когда я вызываю джобом TaxParameters::find() - ничего подобного не происходит.
Почему так?
__________________
Мои утилиты для Аксапты версий 3.0-2012: http://aceofdatabase.blogspot.com/
Старый 01.06.2017, 11:06   #4  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
870 / 637 (23) +++++++
Регистрация: 14.10.2004
Цитата:
Сообщение от Vadik Посмотреть сообщение
Конфигурационный ключ на таблице - отключен ?
Да, отключен
__________________
Мои утилиты для Аксапты версий 3.0-2012: http://aceofdatabase.blogspot.com/
Старый 01.06.2017, 11:18   #5  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Сообщение от Ace of Database Посмотреть сообщение
Да, отключен
Самое простое - почистить ключ на таблице. Нормально кэширование заработает
__________________
-ТСЯ или -ТЬСЯ ?
За это сообщение автора поблагодарили: Ace of Database (5).
Старый 01.06.2017, 11:33   #6  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
870 / 637 (23) +++++++
Регистрация: 14.10.2004
Извините, не совсем понял, что значит "почистить ключ на таблице"?
__________________
Мои утилиты для Аксапты версий 3.0-2012: http://aceofdatabase.blogspot.com/
Старый 01.06.2017, 11:42   #7  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
870 / 637 (23) +++++++
Регистрация: 14.10.2004
До меня дошло: надо очистить свойство ConfigurationKey на таблице.
Спасибо! Посмотрим как пойдет.
__________________
Мои утилиты для Аксапты версий 3.0-2012: http://aceofdatabase.blogspot.com/

Последний раз редактировалось Ace of Database; 01.06.2017 в 11:45.
Старый 01.06.2017, 11:46   #8  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
870 / 637 (23) +++++++
Регистрация: 14.10.2004
Перепутал SecurityKey и ConfigurationKey.
Просто одновременно урывками общаюсь с разными людьми в этот момент.
__________________
Мои утилиты для Аксапты версий 3.0-2012: http://aceofdatabase.blogspot.com/
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
workflowax: Stopped (error): Failed to find workflow instance. Failed to find workflow instance. Blog bot DAX Blogs 1 06.08.2020 16:22
palleagermark: Use tags to find related bits and pieces in your code base Blog bot DAX Blogs 0 19.05.2017 12:11
dynamicsaxhints: When is it best to use Table::find().Field or select Field from Table? Blog bot DAX Blogs 0 22.03.2016 09:11
DAX: Official Dynamics AX 2012 R2 Content (update) - Where is it, and how can you find out about updates? Blog bot DAX Blogs 0 03.12.2012 11:11
Dynamics AX Geek: cross-references & find Blog bot DAX Blogs 0 28.10.2006 16:40
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 10:18.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.