|  08.08.2004, 12:07 | #1 | 
| Участник | Как выполнять дефрагментирование RecID 
			
			Вопрос возник после реплики Yaroslav Batozskiy http://www.axforum.info/forums/showt...0348#post40348 Цитата: 
		
			Например при дефрагментировании RecId я обнаружил, что есть поля со ссылками по Recid, тип которых не наследуется от RecId
		
	 Именно из-за того, что есть поля, которые содержат ссылку на RecID, но не унаследованы от RecIdRef. А кто как делает дефрагментацию RecID? И надо ли делать эту дефрагментацию? Yaroslav Batozskiy, очень хотелось бы услышать ваше мнение. | 
|  | |
| За это сообщение автора поблагодарили: alex55 (1). | |
|  08.08.2004, 12:57 | #2 | 
| Модератор | Re: Как выполнять дефрагментирование RecID Цитата: 
		
			Изначально опубликовано mazzy  А кто как делает дефрагментацию RecID? | 
|  | 
|  08.08.2004, 13:31 | #3 | 
| Участник | 
			
			В двух словах. Размер recID - unsigned double word. Таким образом, максимальный номер recId = 2^32-1 (около 4 млрд) записей в одной компании. В больших внедрениях это ограничение уже значимо. Записи добавляются и удаляются. В Аксапте есть множество мест, где записи на некоторое время создаются, а затем могут удаляться. Например, журналы, заказы и т.п. Таким образом, максимальный номер может быть достигнут быстро, хотя записей в базе существенно меньше. Тут и помогла бы дефрагментация. | 
|  | 
|  08.08.2004, 13:43 | #4 | 
| Модератор | 
			
			а что, кто-то уже с этим столкнулся? select dataareaid, name, nextval from systemsequences order by nextval desc давайте меряться максимальным значением NextVal у меня 87945778   | 
|  | 
|  08.08.2004, 14:11 | #5 | 
| Участник | 
			
			а теперь экспортируй компанию и импортируй обратно с удалением предыдущих значений.    | 
|  | 
|  08.08.2004, 14:27 | #6 | 
| Модератор | 
			
			Если в большой компании есть время развлекаться таким образом, наверное, лучше будет сделать импорт в свежесозданную компанию Аксапты, а старую удалить
		 | 
|  | 
|  08.08.2004, 14:30 | #7 | 
| Участник | 
			
			я не про это. я про то, что: 1. max(NextVal) ни о чем не говорит 2. верхний предел теоретически может быть достигнут достаточно быстро. | 
|  | 
|  08.08.2004, 14:32 | #8 | 
| Участник | Цитата: 
		
			Изначально опубликовано Vadik  а что, кто-то уже с этим столкнулся? Да, на течнете пару лет назад висел глас вопиющего сингапурца. он что то там химичал с корпоративным порталом, экспортировал/импортировал описания, путался настроить ...и уперся   | 
|  | 
|  09.08.2004, 09:12 | #9 | 
| Member | Re: Как выполнять дефрагментирование RecID Цитата: 
		
			Изначально опубликовано mazzy  ... А кто как делает дефрагментацию RecID? ... 
				__________________ С уважением, glibs® | 
|  | 
|  09.08.2004, 09:14 | #10 | 
| Участник | Интересно 
			
			а что происходит при достжении этого предела и какие последствия ?
		 | 
|  | 
|  09.08.2004, 09:37 | #11 | 
| Member | 
			
			Писали на Technet. Говорили, что сначала начнут выделяться отрицательные RecID, а потом вроде как будут заполняться дырки. Скорее всего, это были предположения, нежели информация из официальных источников. Было несколько очевидцев того, что при отрицательных RecID не работают некоторые ссылки, т.к. в некоторых запросах в условиях в Select вроде как прописаны ограничения на положительный RecID. В общем, если хотите, можете поискать там. Я данным вопросом очень сильно не увлекался, так что больше вам ничего сказать не смогу.
		 
				__________________ С уважением, glibs® | 
|  | 
|  09.08.2004, 10:58 | #12 | 
| Moderator | Цитата: 
		
			Говорили, что сначала начнут выделяться отрицательные RecID, а потом вроде как будут заполняться дырки.
		
	 Что происходит с ним при достижении 0 я не знаю, но очень сомневаюсь, что дырки будут заполняться. Это связано с тем, что Аксапта либо должна где-то держать список этих дырок (а такого я не наблюдал), либо каждый раз проверять наличие recId в базе, что будет занимать ОЧЕНЬ большое время. | 
|  | 
|  09.08.2004, 11:06 | #13 | 
| Moderator | Цитата: 
		
			а что происходит при достжении этого предела и какие последствия ?
		
	 В общем, Аксапта работает. Проблемы возникают только в тот момент, когда уже использованный recId повторно вставляется в ту же самую таблицу, куда он был вставлен за предыдущий проход. В этом случае нарушается уникальность индексов на уровне СУБД, о чем Аксапта сообщает в infolog-е. Кроме того, возможны проблемы с таблицами, в которых связь осуществляется по recId. Все вышеописанное - всего лишь результаты эксперимента и я не советую проверять это на рабочей базе. | 
|  | 
|  09.08.2004, 13:52 | #14 | 
| Модератор | 
			
			Приветствую всех! Никто не мог бы подсказать, возможно ли на распределенной базе (Все таблицы общие, кроме SequenceNumber и SystemSequence) разделить RecId и часть номерных серий... т.е. что бы каждая база "думала", что она работает только в своем диапазоне, что бы при репликации данные не наслаивались друг на друга... И вообще, кто-нибудь распределенку делал?? Поделитесь опытом плиз-з-з! С Уважением, Георгий. | 
|  | 
|  09.08.2004, 14:03 | #15 | 
| Участник | Цитата: 
		
			Изначально опубликовано glibs  Писали на Technet. Говорили, что сначала начнут выделяться отрицательные RecID, а потом вроде как будут заполняться дырки | 
|  | 
|  09.08.2004, 14:06 | #16 | 
| Участник | Цитата: 
		
			Изначально опубликовано Андре  В общем, Аксапта работает. Проблемы возникают только в тот момент, когда уже использованный recId повторно вставляется в ту же самую таблицу, куда он был вставлен за предыдущий проход. В этом случае нарушается уникальность индексов на уровне СУБД, о чем Аксапта сообщает в infolog-е. Кроме того, возможны проблемы с таблицами, в которых связь осуществляется по recId. Главное ограничение - повторные recID являются нарушением целостности и работа бизнес-логики и самой Аксапты не гарантируется. Например, у сопоставления крыша поедет. | 
|  | 
|  09.08.2004, 14:26 | #17 | 
| Модератор | Цитата: 
		
			Изначально опубликовано mazzy  отрицательные recID - это было очень давно. еще когда тип был signed. | 
|  | 
|  09.08.2004, 14:36 | #18 | 
| Участник | 
			
			это представление для пользователя. внутри она работает с беззнаковым типом. http://technet.navision.com/workspac...tribId=1&wso=1 | 
|  | 
|  09.08.2004, 14:46 | #19 | 
| Модератор | 
			
			Хм.. т.е. 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 | 
| Модератор | PHP код: 
			-2147483648 по-моему, очень даже signed SystemSequences, как уже писал Андрей, ведут себя аналогично двоичная арифметика  так у кого еще NextVal в отрицательные значения перевалило? | 
|  |