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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 08.08.2004, 12:07   #1  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Как выполнять дефрагментирование RecID
Вопрос возник после реплики Yaroslav Batozskiy
http://www.axforum.info/forums/showt...0348#post40348

Цитата:
Например при дефрагментировании RecId я обнаружил, что есть поля со ссылками по Recid, тип которых не наследуется от RecId
Я, например, зарекся рыть в эту сторону после того как покопался в 2.5.
Именно из-за того, что есть поля, которые содержат ссылку на RecID, но не унаследованы от RecIdRef.

А кто как делает дефрагментацию RecID?
И надо ли делать эту дефрагментацию?

Yaroslav Batozskiy, очень хотелось бы услышать ваше мнение.
За это сообщение автора поблагодарили: alex55 (1).
Старый 08.08.2004, 12:57   #2  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Re: Как выполнять дефрагментирование RecID
Цитата:
Изначально опубликовано mazzy
А кто как делает дефрагментацию RecID?
А что мы будем иметь с этой дефрагментации?
Старый 08.08.2004, 13:31   #3  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
В двух словах.

Размер recID - unsigned double word.
Таким образом, максимальный номер recId = 2^32-1 (около 4 млрд) записей в одной компании.
В больших внедрениях это ограничение уже значимо.

Записи добавляются и удаляются. В Аксапте есть множество мест, где записи на некоторое время создаются, а затем могут удаляться. Например, журналы, заказы и т.п. Таким образом, максимальный номер может быть достигнут быстро, хотя записей в базе существенно меньше.

Тут и помогла бы дефрагментация.
Старый 08.08.2004, 13:43   #4  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
а что, кто-то уже с этим столкнулся?

select dataareaid, name, nextval from systemsequences order by nextval desc

давайте меряться максимальным значением NextVal

у меня 87945778
Старый 08.08.2004, 14:11   #5  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
а теперь экспортируй компанию и импортируй обратно с удалением предыдущих значений.
Старый 08.08.2004, 14:27   #6  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Если в большой компании есть время развлекаться таким образом, наверное, лучше будет сделать импорт в свежесозданную компанию Аксапты, а старую удалить
Старый 08.08.2004, 14:30   #7  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
я не про это.
я про то, что:
1. max(NextVal) ни о чем не говорит
2. верхний предел теоретически может быть достигнут достаточно быстро.
Старый 08.08.2004, 14:32   #8  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Изначально опубликовано Vadik
а что, кто-то уже с этим столкнулся?
Кстати,
Да, на течнете пару лет назад висел глас вопиющего сингапурца.
он что то там химичал с корпоративным порталом,
экспортировал/импортировал описания, путался настроить
...и уперся
Старый 09.08.2004, 09:12   #9  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 911 (40) +++++++
Регистрация: 10.06.2002
Адрес: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
Re: Как выполнять дефрагментирование RecID
Цитата:
Изначально опубликовано mazzy
...
А кто как делает дефрагментацию RecID?
...
Я один раз запускал штатную процедуру на небольшой тестовой базе. Вроде работает. Только лог транзакций на MS SQL у меня раздулся очень сильно. Слышал (http://technet.navision.com/workspac...tribId=1&wso=1), что на больших базах это работает не быстро.
__________________
С уважением,
glibs®
Старый 09.08.2004, 09:14   #10  
FishLog is offline
FishLog
Участник
 
30 / 10 (1) +
Регистрация: 17.12.2003
Адрес: Москва
Интересно
а что происходит при достжении этого предела и какие последствия ?
Старый 09.08.2004, 09:37   #11  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 911 (40) +++++++
Регистрация: 10.06.2002
Адрес: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
Писали на Technet. Говорили, что сначала начнут выделяться отрицательные RecID, а потом вроде как будут заполняться дырки. Скорее всего, это были предположения, нежели информация из официальных источников. Было несколько очевидцев того, что при отрицательных RecID не работают некоторые ссылки, т.к. в некоторых запросах в условиях в Select вроде как прописаны ограничения на положительный RecID. В общем, если хотите, можете поискать там. Я данным вопросом очень сильно не увлекался, так что больше вам ничего сказать не смогу.
__________________
С уважением,
glibs®
Старый 09.08.2004, 10:58   #12  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Цитата:
Говорили, что сначала начнут выделяться отрицательные RecID, а потом вроде как будут заполняться дырки.
Да - при достижении максимального значения RecId, он сбрасывается в минимально-возможное значение в табличке последовательностей и потом начинает монотонно возрастать до 0.
Что происходит с ним при достижении 0 я не знаю, но очень сомневаюсь, что дырки будут заполняться.
Это связано с тем, что Аксапта либо должна где-то держать список этих дырок (а такого я не наблюдал), либо каждый раз проверять наличие recId в базе, что будет занимать ОЧЕНЬ большое время.
Старый 09.08.2004, 11:06   #13  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Цитата:
а что происходит при достжении этого предела и какие последствия ?
Проверить это предположение можно подвинув указатель на следующий recId в SystemSequences в область уже использованных значений.
В общем, Аксапта работает. Проблемы возникают только в тот момент, когда уже использованный recId повторно вставляется в ту же самую таблицу, куда он был вставлен за предыдущий проход. В этом случае нарушается уникальность индексов на уровне СУБД, о чем Аксапта сообщает в infolog-е. Кроме того, возможны проблемы с таблицами, в которых связь осуществляется по recId.
Все вышеописанное - всего лишь результаты эксперимента и я не советую проверять это на рабочей базе.
Старый 09.08.2004, 13:52   #14  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,479 / 1250 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
Приветствую всех!

Никто не мог бы подсказать, возможно ли на распределенной базе (Все таблицы общие, кроме SequenceNumber и SystemSequence) разделить RecId и часть номерных серий... т.е. что бы каждая база "думала", что она работает только в своем диапазоне, что бы при репликации данные не наслаивались друг на друга...

И вообще, кто-нибудь распределенку делал?? Поделитесь опытом плиз-з-з!

С Уважением,
Георгий.
Старый 09.08.2004, 14:03   #15  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Изначально опубликовано glibs
Писали на Technet. Говорили, что сначала начнут выделяться отрицательные RecID, а потом вроде как будут заполняться дырки
отрицательные recID - это было очень давно. еще когда тип был signed.
Старый 09.08.2004, 14:06   #16  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Изначально опубликовано Андре
В общем, Аксапта работает. Проблемы возникают только в тот момент, когда уже использованный recId повторно вставляется в ту же самую таблицу, куда он был вставлен за предыдущий проход. В этом случае нарушается уникальность индексов на уровне СУБД, о чем Аксапта сообщает в infolog-е. Кроме того, возможны проблемы с таблицами, в которых связь осуществляется по recId.
Да, все так.
Главное ограничение - повторные recID являются нарушением целостности и работа бизнес-логики и самой Аксапты не гарантируется.

Например, у сопоставления крыша поедет.
Старый 09.08.2004, 14:26   #17  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,479 / 1250 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
Цитата:
Изначально опубликовано mazzy
отрицательные recID - это было очень давно. еще когда тип был signed.
Простите, а теперь какой? Ужели RecId стал unsigned double word? У меня до сих пор отрицательных полно... Ax 3.0 SP3.
Старый 09.08.2004, 14:36   #18  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
это представление для пользователя.
внутри она работает с беззнаковым типом.
http://technet.navision.com/workspac...tribId=1&wso=1
Старый 09.08.2004, 14:46   #19  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,479 / 1250 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
Хм.. т.е. When the RecId is negative this will offcause not happen. The correct criteria is that RecIdSettlement should be checked if it is different from zero - это для пользователя так... Что ж, в таком случае - отрицательные RecId - это беззнаковые с номером выше 2^31-1 (2147483647)... Непонятно, правда, что это нам дает...
Старый 09.08.2004, 14:52   #20  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
PHP код:
static void Job1(Args _args)
{
    
int i 2147483647;
    ;

    print 
i;
    print 
1;
    
pause;

2147483647
-2147483648

по-моему, очень даже signed

SystemSequences, как уже писал Андрей, ведут себя аналогично

двоичная арифметика

так у кого еще NextVal в отрицательные значения перевалило?
Теги
ax3.0, faq, recid, дефрагментирование recid

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
if (record) vs if (record.RecId) kashperuk DAX: Программирование 18 27.11.2008 18:53
поля, содержащие RecId somebody DAX: Программирование 15 16.05.2008 17:50
aEremenko: Дефрагментация RecID Blog bot DAX Blogs 2 06.03.2007 22:25
Два RecId у одной записи таблицы sparur DAX: Программирование 33 18.12.2006 15:56
Форма InventOnhandItem, Почему RecID у InventSum в этой форме всегда 0? Кирилл DAX: Программирование 2 25.05.2004 18:15

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 12:17.