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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 14.12.2006, 15:38   #21  
sparur is offline
sparur
Участник
 
334 / 25 (1) +++
Регистрация: 19.05.2006
Цитата:
Сообщение от mazzy Посмотреть сообщение
ВСЕ - не убьет.
Убьет только те ссылки, которые находятся в полях с типом, не унаследованнsм от recRefId.
под словом ВСЕ я это и подразумевал хорошо что непоспешили и не запустили эту процедуру
Старый 14.12.2006, 15:48   #22  
sparur is offline
sparur
Участник
 
334 / 25 (1) +++
Регистрация: 19.05.2006
Цитата:
Сообщение от AndyD Посмотреть сообщение
...
По существу - попробовал добавить этот метод - запись нормально находится
Да, как оказалось проблема несколько в другом (если это можно назвать проблемой)

у нас ситуация была в следующем:
при удалении накл. расходов мне нужна была ссылка на "владельца" этих расходов, ее я пытался найти в табличном методе delete таблицы markupTrans. Это корректно срабатывает если удалять непосредственно накладные расходы (из формы накл. расходов). Однако, при попытки удалить скажем закупку естесственно система ДОЛЖНА удалять все. что связано с этой закупкой, в принципе все реализовано. НО реализовано так, что удаление накладных расходов, связанных с этой закупкой реализовано "каскадно"(см раздел DeleteActions на таблице PurchTable), то есть уже ПОСЛЕ удаления самой закупки, в итоге я ничего и не мог найти, т.к. запись уже была физически удалена.
Конечно, наверное стоит извиниться за поднятый сыр бор... однако узнал много нового и полезного

Всем участвующим в обсуждении данной темы выражается благодарность за попытки помочь страждующим

P.S. осталось найти другой вариант решения первоначальной задачи , но это уже завтра.
Старый 15.12.2006, 06:26   #23  
sparur is offline
sparur
Участник
 
334 / 25 (1) +++
Регистрация: 19.05.2006
Возвращаясь к теме об отрицательных RecId, дефрагментации этого самого RecId, его разрядности и пр....

Меня вот интересует такой вопрос:

допустим гипотетическую ситуацию, когда у нас имеется идеальное состояние, т.е. нет никакой дефрагментации, все ок, дырок нет в принципе (хоть это и невозможно) что будет когда значение recId превысит волшщебную цифру в 2^32 (~4млрд).

Что в этом случае делать?? ведь данная цифра хоть и велика, но все же recId распределяется по ВСЕМ таблицам в пределах отдельной компании. А это значит если контора крупная с большим ежедневным оборотом, то год-два и как не крути, а проблема встанет!!!

Какой выход из ситуации?
Старый 15.12.2006, 08:18   #24  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 909 (40) +++++++
Регистрация: 10.06.2002
Адрес: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
Вы уверены?

Предположим, средний размер записи с учетом индексов 400 байт.

4 294 967 296 * 400 = 1 717 986 918 400

т.е. свыше полутора терабайт.

В принципе, цифра теоретически достижимая. Но на практике кто-то видел базу на Аксапте, которая приближалась бы к таким размерам (да еще и при разумном подходе к ее администрированию ( http://axapta.mazzy.ru/lib/dbgrowthsolution/ ))?
__________________
С уважением,
glibs®
Старый 15.12.2006, 09:18   #25  
sparur is offline
sparur
Участник
 
334 / 25 (1) +++
Регистрация: 19.05.2006
Цитата:
Сообщение от glibs Посмотреть сообщение
Вы уверены?

Предположим, средний размер записи с учетом индексов 400 байт.

4 294 967 296 * 400 = 1 717 986 918 400

т.е. свыше полутора терабайт.

В принципе, цифра теоретически достижимая. Но на практике кто-то видел базу на Аксапте, которая приближалась бы к таким размерам (да еще и при разумном подходе к ее администрированию ( http://axapta.mazzy.ru/lib/dbgrowthsolution/ ))?
кхм, ну возможно Вы и правы ладно оставим вопрос риторическим

тема закрыта, всем спасибо за участие и понимание
Старый 15.12.2006, 10:56   #26  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2455 (87) +++++++++
Регистрация: 20.08.2005
RecId не может превысить 2^32-1 (0xFFFFFFFF) - это максимальное число, которое может быть в нем сохранено. А это число, собственно, -1 в знаковом целом. Т.е. все пойдет опять по кругу. 1, 2, 3 и т.д.

Кстати, насчет дырок. Одна из причин их появления - каждый AOS (а так же тольстый клиент и клиент в 2-х звенке) резервирует под себя определенное кол-во recId (для уменьшения обращений к б/д при добавлении новых записей). При его перезагрузке это резервирование сбрасывается и выбирается новый диапазон при загрузке.

Да и на счет количества recId - у вас ведь остался 1 млрд. из 4-х (если не ручками вбивали). Сильно подозреваю, что размер б/д у вас куда меньше 1 терабайта. Так что, скорее всего, дырки у вас довольно большие (либо начинали работать при большом начальном номере recId). По хорошему, надо бы анализировать причину их появления
__________________
Axapta v.3.0 sp5 kr2
Старый 18.12.2006, 06:28   #27  
sparur is offline
sparur
Участник
 
334 / 25 (1) +++
Регистрация: 19.05.2006
да, Вы правы наша база далека от такого объема будем работать в этом направлении
Старый 18.12.2006, 08:44   #28  
TasmanianDevil is offline
TasmanianDevil
Мрачный тип
Аватар для TasmanianDevil
Злыдни
 
869 / 357 (13) ++++++
Регистрация: 24.01.2005
Адрес: Томск
AndyD, sparur - про временные таблицы или переведенные во временную ипостась экземпляры физических таблиц, жрущие RecId, не забыли ?
Часто пользуем - имеем большую частоту сброса счетчика RecId.

Не совсем по теме, но все же, хотелось бы узнать пару вещей :
1) Как ведет себя система, когда после N-ого сброса счетчика RecId в некой таблице будет попытка вставки записи с уже имеющимся в данной таблице/компании RecId ? Начнет перебирать дальше до нахождения непересекающейся величины или просто встанет с ошибкой ?
2) Каков сакраментальный смысл генерации RecId размазыванием счетчика по всем таблицам в рамках компании ?

Последний раз редактировалось TasmanianDevil; 18.12.2006 в 09:26.
Старый 18.12.2006, 09:45   #29  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2455 (87) +++++++++
Регистрация: 20.08.2005
Вот насчет временных таблиц - можно поподробнее. Потому как я не заметил, что бы они что-то "жрали".
Нумерация для каждой временной таблицы (в том числе и тех, которые сделаны временными через вызов setTmp()) начинается с константы и возрастает на некоторую дельту (0x30) в рамках времени жизни табличной переменной. Если, к примеру, создать одновременной две одинаковые табличные переменные и вставить в каждую из них записи, то RecId у них будет одинаковый в соответствующих строках

Проверял на 3.0 sp3 cu1, sp5 fp2 c rollup 2 и без него.
__________________
Axapta v.3.0 sp5 kr2
За это сообщение автора поблагодарили: glibs (2), belugin (10).
Старый 18.12.2006, 10:04   #30  
TasmanianDevil is offline
TasmanianDevil
Мрачный тип
Аватар для TasmanianDevil
Злыдни
 
869 / 357 (13) ++++++
Регистрация: 24.01.2005
Адрес: Томск
Виноват, неправ был ...
Действительно, у временных RecId нумеруется с константы с неким приращением.
В свое время не обратил внимание на именно этот факт и считал, что у них сжирается из общего пула RecId.

Спасибо, AndyD !

Одной головной болью стало меньше ...

Последний раз редактировалось TasmanianDevil; 18.12.2006 в 11:31.
Старый 18.12.2006, 10:16   #31  
Recoilme is offline
Recoilme
злыдень
Аватар для Recoilme
Злыдни
 
895 / 192 (8) ++++++
Регистрация: 18.06.2003
Помимо временных таблиц есть ещё псевдовременные. Которые очень даже едят recid большими ложками. Тот же rectrans или reqpo например.
Надеюсь что одной головной болью не станет больше))
__________________
Ибо зло есть лучшая сила человека. "Человек должен становиться все лучше и злее" -- так учу я. /Ф. Ницше/
Старый 18.12.2006, 12:44   #32  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 909 (40) +++++++
Регистрация: 10.06.2002
Адрес: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
По-моему, изначально вопрос был поставлен не в плоскости скорости поедания RecId, а в потенциальной возможности их исчерпания даже при условии 100 процентного отсутствия дырок. Это не одно и то же. В вашем случае нужно задумываться об оптимизации процедуры дефрагментации RecId.
__________________
С уважением,
glibs®
Старый 18.12.2006, 15:30   #33  
Recoilme is offline
Recoilme
злыдень
Аватар для Recoilme
Злыдни
 
895 / 192 (8) ++++++
Регистрация: 18.06.2003
Согласен, но дело в том что на реальной БД дырки 100% будут..
По поводу дефрагментации - мне кажется лучше и эффективней кастрация, заодно и производительность поднимется, но не будем об этом)
__________________
Ибо зло есть лучшая сила человека. "Человек должен становиться все лучше и злее" -- так учу я. /Ф. Ницше/
Старый 18.12.2006, 15:56   #34  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 909 (40) +++++++
Регистрация: 10.06.2002
Адрес: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
Это один из способов. Я тоже про него писал выше.

Правда, я не радикальный сторонник этого подхода. Журналы типа закупок и заказов точно нужно чистить. Журналы документов обычно лучше не чистить без особой надобности.

Еще можно перевнедрение устраивать с реинжинирингом. Полезная вещь. Хотя и болезненная.
__________________
С уважением,
glibs®
Теги
recid

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как проверить наличие хотя бы одной записи в подчиненной таблице. demon46 DAX: Программирование 5 07.03.2008 09:41
Как узнать по объекту RecordSortedList, из какой таблицы в нем записи? gl00mie DAX: Программирование 4 20.02.2008 15:39
Как получить записи двух таблиц в виде одной таблицы? chi DAX: Программирование 32 16.12.2004 11:44
Как решить проблему с правами на вновь создаваемые записи таблицы. AY DAX: Прочие вопросы 4 02.10.2003 12:44
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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