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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 08.08.2004, 12:07   #1  
mazzy is offline
mazzy
Administrator
Аватар для mazzy
Most Valuable Professional
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
28,786 / 3660 (180) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Как выполнять дефрагментирование 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,312 / 1341 (51) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Re: Как выполнять дефрагментирование RecID
Цитата:
Изначально опубликовано mazzy
А кто как делает дефрагментацию RecID?
А что мы будем иметь с этой дефрагментации?
Старый 08.08.2004, 13:31   #3  
mazzy is offline
mazzy
Administrator
Аватар для mazzy
Most Valuable Professional
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
28,786 / 3660 (180) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
В двух словах.

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

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

Тут и помогла бы дефрагментация.
Старый 08.08.2004, 13:43   #4  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,312 / 1341 (51) ++++++++
Регистрация: 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
Administrator
Аватар для mazzy
Most Valuable Professional
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
28,786 / 3660 (180) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
а теперь экспортируй компанию и импортируй обратно с удалением предыдущих значений.
Старый 08.08.2004, 14:27   #6  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,312 / 1341 (51) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Если в большой компании есть время развлекаться таким образом, наверное, лучше будет сделать импорт в свежесозданную компанию Аксапты, а старую удалить
Старый 08.08.2004, 14:30   #7  
mazzy is offline
mazzy
Administrator
Аватар для mazzy
Most Valuable Professional
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
28,786 / 3660 (180) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
я не про это.
я про то, что:
1. max(NextVal) ни о чем не говорит
2. верхний предел теоретически может быть достигнут достаточно быстро.
Старый 08.08.2004, 14:32   #8  
mazzy is offline
mazzy
Administrator
Аватар для mazzy
Most Valuable Professional
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
28,786 / 3660 (180) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Цитата:
Изначально опубликовано Vadik
а что, кто-то уже с этим столкнулся?
Кстати,
Да, на течнете пару лет назад висел глас вопиющего сингапурца.
он что то там химичал с корпоративным порталом,
экспортировал/импортировал описания, путался настроить
...и уперся
Старый 09.08.2004, 09:12   #9  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 901 (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 / 901 (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,374 / 451 (20) +++++++
Регистрация: 03.12.2001
Цитата:
Говорили, что сначала начнут выделяться отрицательные RecID, а потом вроде как будут заполняться дырки.
Да - при достижении максимального значения RecId, он сбрасывается в минимально-возможное значение в табличке последовательностей и потом начинает монотонно возрастать до 0.
Что происходит с ним при достижении 0 я не знаю, но очень сомневаюсь, что дырки будут заполняться.
Это связано с тем, что Аксапта либо должна где-то держать список этих дырок (а такого я не наблюдал), либо каждый раз проверять наличие recId в базе, что будет занимать ОЧЕНЬ большое время.
Старый 09.08.2004, 11:06   #13  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,374 / 451 (20) +++++++
Регистрация: 03.12.2001
Цитата:
а что происходит при достжении этого предела и какие последствия ?
Проверить это предположение можно подвинув указатель на следующий recId в SystemSequences в область уже использованных значений.
В общем, Аксапта работает. Проблемы возникают только в тот момент, когда уже использованный recId повторно вставляется в ту же самую таблицу, куда он был вставлен за предыдущий проход. В этом случае нарушается уникальность индексов на уровне СУБД, о чем Аксапта сообщает в infolog-е. Кроме того, возможны проблемы с таблицами, в которых связь осуществляется по recId.
Все вышеописанное - всего лишь результаты эксперимента и я не советую проверять это на рабочей базе.
Старый 09.08.2004, 13:52   #14  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,397 / 1040 (43) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Приветствую всех!

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

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

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

Например, у сопоставления крыша поедет.
Старый 09.08.2004, 14:26   #17  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,397 / 1040 (43) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Цитата:
Изначально опубликовано mazzy
отрицательные recID - это было очень давно. еще когда тип был signed.
Простите, а теперь какой? Ужели RecId стал unsigned double word? У меня до сих пор отрицательных полно... Ax 3.0 SP3.
Старый 09.08.2004, 14:36   #18  
mazzy is offline
mazzy
Administrator
Аватар для mazzy
Most Valuable Professional
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
28,786 / 3660 (180) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
это представление для пользователя.
внутри она работает с беззнаковым типом.
http://technet.navision.com/workspac...tribId=1&wso=1
Старый 09.08.2004, 14:46   #19  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,397 / 1040 (43) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Хм.. т.е. 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,312 / 1341 (51) ++++++++
Регистрация: 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, время: 01:17.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.