|
30.01.2024, 17:41 | #1 |
Moderator
|
Цитата:
Сообщение от Lankey
Кстати, зодно заметила, что на форме DirPartyTable, если посмотреть используемый запрос (Form info->show hidden elements), то там в (стандартном, форма не модифицирована) запросе есть
DirPartyTable.INVALID FIELD = DirNAmeAffix.RecId и DirPartyTable.INVALID FIELD = DirNameSequence.RecId То есть, будто база не синхнонизирована. У вас тоже так? Installed product version 10.0.37 Platform version Update61 А по поводу индексов - я бы тупо написал небольшие скриптики для переиндексации нужных таблиц (через классы Connection и Statement) и выполнил бы их в PROD через вот этот механизм. |
|
|
За это сообщение автора поблагодарили: Logger (3), MorpheusX (1), Lankey (1). |
31.01.2024, 17:31 | #2 |
Участник
|
Извините, что снова к вам...
За ночь обновили базу в PrePROD новой версией с PROD. Заново прогнала reindex, чтобы убедиться, что точно дело в индексах (вчера, как только переиндексировала, то сразу стала форма открываться) и .... никакого эффекта. Создание новой записи в GAB (кнопка "New") висит снова по полчаса. За эти полчаса два раза появляется сообщение, что предлагает продолжать ждать. И в конце концов вываливается сообщение,что запись в DirPartyRelationship не может быть выбрана В LCS посмотрела, нет блокировок (и заодно в dbo.sysprocesses перепроверила. Там тоже нет блокировок. Зато у моего процесса заметила lastwaittype = SOS_SCHEDULER_YIELD) На SQL сервере ничего больше нет, только "мой" запрос и у него ... logical reads = 1 366 710 036 и растет. Ну то есть, просто умопомрачительно много, хотя все индексы переделала в используемых таблицах. Может быть, что кэш старый и обновленные индексы не влияют на исполнение запроса? DROPCLEANBUFFERS не могу прогнать(прав нет) , как и FREEPROCCACHE(plan_handle) для конкретного плана. Хотя, надо сказать, что у плана creation_time свежий, то есть, он создан уже после индексации создан. План этот содержит placeholders, т.е параметры с @ Если запускаю через sql server management studio запрос, отловленый traceParcer , т.е уже с подставленными параметрами, то мгновенно выполняется. Что делать-то ? Последний раз редактировалось Lankey; 31.01.2024 в 17:45. |
|
31.01.2024, 18:39 | #3 |
Moderator
|
Вообще в Azure SQL DBCC Freeproccache() не работает. Надо пользоваться синтаксисом
Код: ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE <plan_handle> Код: ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE Еще есть вариант, что у вас там самооптимизатор SQL Server ухитрился сам себе прописать plan guide. (Я, правда, такого никогда не видел, но как гипотеза). Так что если чистка кэша не поможет, ищите список plan guide и нету ли там вашего запроса. Еще любопытно, а как, собственно, этот висящий запрос выглядит ? Я сталкивался с тем, что если у вас в форме определены saved views, то генератор запросов сходит с ума и добавляет в запрос многократно продублированные копии какой-то таблицы и десятки (если не сотни) каких-то достаточно странных range. Если такое случилось, SQL может вместо обычных миллисекунд думать эдак минуту-полторы. |
|
31.01.2024, 18:53 | #4 |
Участник
|
X++: (@P1 bigint,@P2 bigint,@P3 int,@P4 int,@P5 int,@P6 int,@P7 int,@P8 int) SELECT T1.CHILDPARTY,T1.LEGALENTITYDATAAREAID,T1.PARENTPARTY,T1.RELATIONSHIPTYPEID, T1.VALIDFROM,T1.VALIDFROMTZID,T1.VALIDTO,T1.VALIDTOTZID,T1.SCHEMAVERSION,T1.RECVERSION, T1.PARTITION,T1.RECID,T2.CHILDPARENTNAME,T2.CHILDPARTYTYPE,T2.DESCRIPTION, T2.ISSYMMETRIC,T2.PARENTCHILDNAME,T2.PARENTPARTYTYPE,T2.RELATIONSHIPTYPEID,T2.SYSTEMTYPE, T2.RECVERSION,T2.PARTITION,T2.RECID,T3.NAME,T3.RECVERSION,T3.RECID,T3.INSTANCERELATIONTYPE,T4.NAME,T4.RECVERSION,T4.RECID, T4.INSTANCERELATIONTYPE FROM DIRPARTYRELATIONSHIP T1 CROSS JOIN DIRRELATIONSHIPTYPETABLE T2 LEFT OUTER JOIN DIRPARTYTABLE T3 ON ((T3.PARTITION=5637144576) AND (T1.CHILDPARTY=T3.RECID)) LEFT OUTER JOIN DIRPARTYTABLE T4 ON ((T4.PARTITION=5637144576) AND (T1.PARENTPARTY=T4.RECID)) WHERE ((T1.PARTITION=5637144576) AND ((T1.PARENTPARTY=@P1) OR (T1.CHILDPARTY=@P2))) AND ((T2.PARTITION=5637144576) AND (((T2.SYSTEMTYPE<@P3) OR (T2.SYSTEMTYPE>@P4)) AND (T1.RELATIONSHIPTYPEID=T2.RELATIONSHIPTYPEID))) AND (EXISTS (SELECT 'x' FROM DIRPARTYRELATIONSHIPSUNIONVIEW T5 WHERE ((T5.PARTITION=5637144576) AND (((T5.SYSTEMTYPE<@P5) OR (T5.SYSTEMTYPE>@P6)) AND (T1.CHILDPARTY=T5.OTHERPARTY))))) AND (EXISTS (SELECT 'x' FROM DIRPARTYRELATIONSHIPSUNIONVIEW T6 WHERE ((T6.PARTITION=5637144576) AND (((T6.SYSTEMTYPE<@P7) OR (T6.SYSTEMTYPE>@P8)) AND (T1.PARENTPARTY=T6.OTHERPARTY))))) ORDER BY T1.VALIDFROM DESC OPTION(FAST 8) В dirPartyRelationship 284046 записи В dirRelationshipTypeTable 42 записи В трейспарсере то же самое, но с подставленными значениями Последний раз редактировалось Lankey; 31.01.2024 в 18:57. |
|
31.01.2024, 19:02 | #5 |
Участник
|
X++: SELECT T1.CHILDPARTY, T1.LEGALENTITYDATAAREAID, T1.PARENTPARTY, T1.RELATIONSHIPTYPEID, T1.VALIDFROM, T1.VALIDFROMTZID, T1.VALIDTO, T1.VALIDTOTZID, T1.SCHEMAVERSION, T1.RECVERSION, T1.PARTITION, T1.RECID, T2.CHILDPARENTNAME, T2.CHILDPARTYTYPE, T2.DESCRIPTION, T2.ISSYMMETRIC, T2.PARENTCHILDNAME, T2.PARENTPARTYTYPE, T2.RELATIONSHIPTYPEID, T2.SYSTEMTYPE, T2.RECVERSION, T2.PARTITION, T2.RECID, T3.NAME, T3.RECVERSION, T3.RECID, T3.INSTANCERELATIONTYPE, T4.NAME, T4.RECVERSION, T4.RECID, T4.INSTANCERELATIONTYPE FROM DIRPARTYRELATIONSHIP T1 CROSS JOIN DIRRELATIONSHIPTYPETABLE T2 LEFT OUTER JOIN DIRPARTYTABLE T3 ON ((T3.PARTITION=5637144576) AND (T1.CHILDPARTY=T3.RECID)) LEFT OUTER JOIN DIRPARTYTABLE T4 ON ((T4.PARTITION=5637144576) AND (T1.PARENTPARTY=T4.RECID)) WHERE ((T1.PARTITION=5637144576) AND ((T1.PARENTPARTY=0) OR (T1.CHILDPARTY=0))) AND ((T2.PARTITION=5637144576) AND (((T2.SYSTEMTYPE<29) OR (T2.SYSTEMTYPE>40)) AND (T1.RELATIONSHIPTYPEID=T2.RELATIONSHIPTYPEID))) AND ( EXISTS ( SELECT 'X' FROM DIRPARTYRELATIONSHIPSUNIONVIEW T5 WHERE ((T5.PARTITION=5637144576) AND (((T5.SYSTEMTYPE<29) OR (T5.SYSTEMTYPE>40)) AND (T1.CHILDPARTY=T5.OTHERPARTY))))) AND ( EXISTS ( SELECT 'X' FROM DIRPARTYRELATIONSHIPSUNIONVIEW T6 WHERE ((T6.PARTITION=5637144576) AND (((T6.SYSTEMTYPE<29) OR (T6.SYSTEMTYPE>40)) AND (T1.PARENTPARTY=T6.OTHERPARTY))))) ORDER BY T1.VALIDFROM DESC OPTION(FAST 9) Последний раз редактировалось Lankey; 31.01.2024 в 19:08. |
|
31.01.2024, 23:15 | #6 |
Участник
|
( а из формы GlobalAddressBook->New около 30 минут висит, а потом выдается сообщение, что запись в DirPartyRelationship не может быть выбрана )
|
|
Теги |
d365 |
|
|