08.02.2005, 13:45 | #1 |
Участник
|
Мониторинг запросов SQL
В Сервис->Параметры включаю мониторинг запросов SQL. Запускаю операцию обработки входящего НДС. Трассировка показывает, что система тормозит на методе initRecordSortedList() класса BookDataCalc_VAT_Process_RU. Здесь идет перебор записей из queryRun, который генерится в методе qrMarkupsInLine() этого же класса. В этом методе запрос строится с использованием 8 таблиц: FactureJour_RU, FactureTrans_RU, MarkupTrans, VendInvoiceTrans, VendInvoiceJour, VendTrans, VendSettlement, VendTrans.
Все эти таблицы как раз и перечислены на вкладке "Таблицы" трассировщика. Однако, когда я смотрю в запрос, который ушел на сервер БД (или рассчитываю его план), то там фигурируют только две таблицы: FactureJour_RU и FactureTrans_RU SELECT A.FACTUREID, A.FACTUREDATE, A.FACTUREAMOUNT, A.FACTURETAX,A.CURRENCYCODE, A.CUSTVENDINVOICEACCOUNT, A.FACTUREEXTERNALID, A.NUMBERSEQUENCEGROUPID, A.NONREALREVENUE, A.OFFSESSIONID, A.CONSIGNEE, A.FACTUREROUNDOFF, A.CONSIGNOR, A.PRINTINMST, A.MODULE,A.FACTURETYPE, A.DOCUMENTNUM, A.DOCUMENTDATE, A.REVERSED, A.VOUCHER,A.CUSTVENDTRANSRECID, A.POSTINGLOGRECID, A.LANGUAGEID, A.DELIVERYADDRESS, A.FACTUREDATE_EXTERNAL, A.REVERSEDATE,A.UNM_PRINTCOPIES, A.UNM_PRINTORIGINALS, A.MODIFIEDDATE, A.MODIFIEDTIME, A.CREATEDBY, A.RECID, B.FACTUREID, B.INVOICEID, B.INVOICEDATE, B.LINENUM, B.INTERNALINVOICEID, B.QTY, B.LINEAMOUNT, B.COSTVALUE, B.DISCAMOUNT, B.UNIT, B.TAXAMOUNT, B.MULTILNDISC, B.LINEDISC, B.EXCISE, B.INVENTTRANSID, B.DIMENSION,B.DIMENSION2_, B.DIMENSION3_, B.DIMENSION4_, B.DIMENSION5_, B.INVENTGTDID, B.COUNTRY, B.FACTURELINETYPE, B.MODULE, B.INVOICELINENUM, B.EXCHRATE, B.VATVALUE, B.PRICE, B.VAT, B.ITEMNAME, B.EXCISEVALUE, B.MARKUPREFRECID, B.VATTYPE, B.DEL_CONFIGID, B.ITEMID, B.NUMBERSEQUENCEGROUP, B.SALESPURCHID, B.INVENTDIMID, B.TAXGROUP, B.TAXITEMGROUP, B.TAXCODE, B.TAXLEDGERACCOUNT, B.CREATEDBY, B.RECID FROM FACTUREJOUR_RU A,FACTURETRANS_RU B WHERE (SUBSTR(NLS_LOWER(A.CUSTVENDINVOICEACCOUNT),1,20)=NLS_LOWER('поставщик1')) AND (((B.FACTURELINETYPE=1) AND (SUBSTR(NLS_LOWER(A.FACTUREID),1,20)=SUBSTR(NLS_LOWER(B.FACTUREID),1,20))) AND (A.MODULE=B.MODULE)) ORDER BY SUBSTR(NLS_LOWER(A.FACTUREID),1,20),A.MODULE Что-то я не очень понимаю - а куда подевались остальные таблицы и какой запрос мне показывает трассировщик? Заранее спасибо!
__________________
Спокойствие, только спокойствие! (Астрид Линдгрен) |
|
08.02.2005, 14:32 | #2 |
Участник
|
Вообще говоря, Аксапта умеет один query разбивать на несколько запросов, если внутри есть временная таблица. В коде никто не объявлял таблицы, входящие в запрос временными?
|
|
09.02.2005, 06:59 | #3 |
Участник
|
Временных таблиц в запросе не было.
Как выяснилось, у меня был отключен конфигурационный ключ "Накладные расходы". А так как таблицы в query подмапливались ровно в той последовательности, которую я указал в первом посте, то запрос в трассировщике и обрезался на таблице MarkupTrans.
__________________
Спокойствие, только спокойствие! (Астрид Линдгрен) |
|
09.02.2005, 12:03 | #4 |
Участник
|
Цитата:
Изначально опубликовано exceptor
...обрезался на таблице... |
|
09.02.2005, 13:24 | #5 |
Участник
|
Именно обрезался.
__________________
Спокойствие, только спокойствие! (Астрид Линдгрен) |
|
09.02.2005, 13:53 | #6 |
Участник
|
не может быть!
|
|
09.02.2005, 14:22 | #7 |
Участник
|
Наверное я чего-то не понимаю, но тогда, mazzy, подскажите, пожалуйста - каким образом мог разбиться на два запрос, генерируемый в методе qrMarkupsInLine() класса BookDataCalc_VAT_Process_RU.
3.0 CIS, SP2. Все таблицы, входящие в запрос не временные.
__________________
Спокойствие, только спокойствие! (Астрид Линдгрен) |
|
09.02.2005, 15:21 | #8 |
Участник
|
позже, если можно.
я просто хотел узнать, в профайлере точно не было других запросов? |
|
20.02.2006, 19:37 | #9 |
Moderator
|
(...прошло чуть больше года...)
Цитата:
Сообщение от exceptor
В Сервис->Параметры включаю мониторинг запросов SQL. Запускаю операцию обработки входящего НДС... В этом методе запрос строится с использованием 8 таблиц: FactureJour_RU, FactureTrans_RU, MarkupTrans, VendInvoiceTrans, VendInvoiceJour, VendTrans, VendSettlement, VendTrans.
Все эти таблицы как раз и перечислены на вкладке "Таблицы" трассировщика. Я уже умею включать "Мониторинг запросов SQL". Знаю, что этот функционал умеет писать инфу в лог-файл и в таблицы SysTraceTableSQL и SysTraceTableSQLTabRef, откуда я могу почитать данные, например, неаксаптовскими средствами СУБД. А где же вкладка? (или я опять не увидел чего-то явного в меню? в профайлере?...) |
|
20.02.2006, 21:27 | #10 |
Участник
|
Администрирование/Запросы/База данных/Журнал трассировки операторов SQL
PS Должна стоять галка Настройки/SQL/Множественные запросы SQL/Таблица (база данных)
__________________
Axapta v.3.0 sp5 kr2 Последний раз редактировалось AndyD; 20.02.2006 в 21:46. |
|
21.02.2006, 09:12 | #11 |
Moderator
|
Цитата:
Сообщение от AndyD
Администрирование/Запросы/База данных/Журнал трассировки операторов SQL
Цитата:
Сообщение от AndyD
PS Должна стоять галка Настройки/SQL/Множественные запросы SQL/Таблица (база данных)
|
|
21.02.2006, 09:16 | #12 |
Участник
|
Сори, именно Параметры
__________________
Axapta v.3.0 sp5 kr2 |
|