Переключение на Главную Страницу Страницы: 1 [2] 3 4  ОтправитьПечать
Очень популярная тема (более 25 ответов) часть 5 1с sql  таблицы rg изнутри (число прочтений - 14353 )
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Re:
Ответ #15 - 26. Ноября 2008 :: 12:04
Печать  
Z1 писал(а) 26. Ноября 2008 :: 10:55:
что то интернет сбойнул
пост berezdetsky пропал и его цитата тоже

Это я сам его удалил, чтобы не начинать холивар - Хендерсона многие воспринимают как догму.

Z1 писал(а) 26. Ноября 2008 :: 11:31:
А по моему наоборот для RA очень хороший индекс так как
IDDOC единственен и селективность самая хорошая супер.

и ситуация следущая при любой реализации в ra может писать
только один кто "владеет" документом,
а в rg  стучаться все даже если у Вас период один = месяц ТА
и при этом нехило колбасят либо саму rg либо ее кластерный индекс.

Т.е. в RA "последовательный кластерный первичный ключ" - это супер, а в RG - нет?  Подмигивание

+ последовательный индекс колбасит гораздо меньше, чем какой нибудь GUID..
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Re:
Ответ #16 - 26. Ноября 2008 :: 12:14
Печать  
berezdetsky писал(а) 26. Ноября 2008 :: 12:04:
Z1 писал(а) 26. Ноября 2008 :: 10:55:
что то интернет сбойнул
пост berezdetsky пропал и его цитата тоже

Это я сам его удалил, чтобы не начинать холивар - Хендерсона многие воспринимают как догму.

Z1 писал(а) 26. Ноября 2008 :: 11:31:
А по моему наоборот для RA очень хороший индекс так как
IDDOC единственен и селективность самая хорошая супер.

и ситуация следущая при любой реализации в ra может писать
только один кто "владеет" документом,
а в rg  стучаться все даже если у Вас период один = месяц ТА
и при этом нехило колбасят либо саму rg либо ее кластерный индекс.

Т.е. в RA "последовательный кластерный первичный ключ" - это супер, а в RG - нет?  Подмигивание

+ последовательный индекс колбасит гораздо меньше, чем какой нибудь GUID..

И да и нет.
В ra мы записали и забыли, а в rg еще надо сделать +.
причем в ra iddoc единственен ( первое поле ключа а ведь по нему идет основная селективность)
а записей в периоде rg   поле PERIOD очень много.
Также в ra длина записи может быть намного больше длины ключа
а в rg  длина записи практически совпадает с длиной ключа.
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: часть 5 1с sql  таблицы rg изнутри
Ответ #17 - 26. Ноября 2008 :: 12:37
Печать  
Z1 писал(а) 26. Ноября 2008 :: 11:21:
kiruha писал(а) 26. Ноября 2008 :: 11:13:
Кстати, если уж об индексах регистров :

если в rg разработчики очень хорошо продумали индекс,
то в RA (таблица движений) - как будто индекс делал другой человек.

Кажется - возьми да повтори структуру как в rg.
Нет - лепят Цитата:
IDDOC,LINENO_,ACTNO
Кому нужен LINENO_,ACTNO ?
А чтобы провести задним числом приходится все таблицу считывать, да еще и большую часть журнала.
Лечится штатно установкой отбора движений, но в этом случае в отличии от rg -
попадание максимум в 2 поля.

Отсюда тормоза при проведении задним числом.

не понял пересчитываются как раз rg а не ra
Индекс LINENO_,ACTNO нужен для

Регистр. ... .ПривязыватьСтроку(НомерСтроки);

а зачен нужен ПривязыватьСтроку не знаю.
наверное иак исторически сложилось
а потом оставили все как есть.

этот индекс помогает если у Вас слетел флаг rf
( тоглько аппаратный сбой ) а движения остались нельзя провести документ не разобравшись - дубль ключей возникает
так что вроде как нужен.


Ну типичная ситуация.
Провожу задним числом.
Нужен остаток товара "Бутылка".
Как будет производится расчет с таким индексом?
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: часть 5 1с sql  таблицы rg изнутри
Ответ #18 - 26. Ноября 2008 :: 12:52
Печать  
kiruha писал(а) 26. Ноября 2008 :: 12:37:
Z1 писал(а) 26. Ноября 2008 :: 11:21:
kiruha писал(а) 26. Ноября 2008 :: 11:13:
Отсюда тормоза при проведении задним числом.



Ну типичная ситуация.
Провожу задним числом.
Нужен остаток товара "Бутылка".
Как будет производится расчет с таким индексом?

Остаток на какую дату?
и вообще если Вы перепроводите сегодня 26.11.2008 документ за 01.02.2008 год еще очень и очень большой вопрос нужно или нет считать этот остаток.
Опять же при проведении переколбашивание индекса не зависит считаете Вы или нет остаток в модуле проведения.
в периоде много записей  Бутылка может оказаться и последним товаром  в текущем периоде.
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: часть 5 1с sql  таблицы rg изнутри
Ответ #19 - 26. Ноября 2008 :: 12:57
Печать  
Z1 писал(а) 26. Ноября 2008 :: 12:52:
Остаток на какую дату?
и вообще если Вы перепроводите сегодня 26.11.2008 документ за 01.02.2008 год еще очень и очень большой вопрос нужно или нет считать этот остаток.
Опять же при проведении переколбашивание индекса не зависит считаете Вы или нет остаток в модуле проведения.
в периоде много записей  Бутылка может оказаться и последним товаром  в текущем периоде.


На 15 ноября 2008.
Остаток на 1 ноября будем считать известным - т.е. только данные из RA.
500 док. в день.
Фирма , склад - заданы.
Вопрос о допустимости проведения опустим - интересует только техническая сторона вопроса.
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: часть 5 1с sql  таблицы rg изнутри
Ответ #20 - 26. Ноября 2008 :: 13:17
Печать  
kiruha писал(а) 26. Ноября 2008 :: 12:57:
Z1 писал(а) 26. Ноября 2008 :: 12:52:
Остаток на какую дату?
и вообще если Вы перепроводите сегодня 26.11.2008 документ за 01.02.2008 год еще очень и очень большой вопрос нужно или нет считать этот остаток.
Опять же при проведении переколбашивание индекса не зависит считаете Вы или нет остаток в модуле проведения.
в периоде много записей  Бутылка может оказаться и последним товаром  в текущем периоде.


На 15 ноября 2008.
Остаток на 1 ноября будем считать известным - т.е. только данные из RA.
500 док. в день.
Фирма , склад - заданы.
Вопрос о допустимости проведения опустим - интересует только техническая сторона вопроса.

ах вот Вы о чем ну от этого никуда не деться и придеться пересчитать по ra c 01.11 по 15.11 простым сканированием соеденившись с jornl( поэтому 1с и рекомендует брать остатки на ta)
и мое утверждение не протеворечит Вашему если Вам надо считать
очень и очень часто остатки в середине месяца то нужен индекс
товар ... Также сначала нужно получить
значение остатка этой бутылки на 01.11 а для этого надо найти ее
сначала в rg а  на это  тоже нужно время найтись.
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: часть 5 1с sql  таблицы rg изнутри
Ответ #21 - 26. Ноября 2008 :: 13:48
Печать  
даже если говорить об отрицательных остатках то можно считать
что мы их проверяем в половине документов ( лукавлю конечно приход крупнее чем расход ) но перестроение кластерного индекса
будет происходить всегда ( таблицы  rg ). даже когда у Вас только
приход.
по поводу отрицат остатков также два соображения  УРБД может
вносить искажения это раз

Соображение номер 2 а не слишком ли дорого считать отрицательные остатки в модуле проведения в открытой транзакции - может это тоже вынести как отдельный  subj ?
Речь естественно идет когда у нас очень дикие нагрузки на базу.

И основной вопрос этого subj  зачем  именно Кластерный по rg
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: часть 5 1с sql  таблицы rg изнутри
Ответ #22 - 26. Ноября 2008 :: 14:15
Печать  
Z1 писал(а) 26. Ноября 2008 :: 13:48:
И основной вопрос этого subj  зачем  именно Кластерный по rg



Цитата:
По неизвестной мне причине, казалось бы уже миллион раз поднятый и разобранный вопрос о правильном использовании кластерного индекса поднимается вновь и вновь, и, что самое удивительное, наружу выплывают все те же старые мифы...

1. Кластерный индекс физически упорядочивает записи, строго в порядке определяемом ключевыми полями индекса.

2. Кластерный индекс черезвычайно дорог при вставке и изменении.

3. Кластерный индекс обязательно должен быть построен по Primary Key, причем, лучше всего, если этот PK является Identity столбцом.

См Телега о кластерном индексе
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: часть 5 1с sql  таблицы rg изнутри
Ответ #23 - 26. Ноября 2008 :: 14:34
Печать  
Статью прочитал мысль автора понятна и правильна.
Получается если мы перепроводим сейчас накладную за 03.02.2008
то возможны ситуации по таблице  rg :
1. это update и индекс не измениться
2. если это несколько insert то индекс влезет в туже страницу из-за
фрагментации
3. если индекс не влезет в нужную страницу вот только в этом случае будет пересчет индекса - но тогда уж пересчет так пересчет.
Вероятность невлезания возрастает вызвана еще и тем что insert идет
и в февраль,март,апрель,май,июнь,июль,август,сентябрь,октябрь,ноябрь

Ну тогда также не понятно чем кластерный индекс отличается от
некластерного уникального. Только тем что он первый и перестраивается в первую очередь и поэтому его вероятность выталкилкивания на другую страницу минимальна и при прочих равных условиях записи индекса "ближе" друг к другу
или есть еще какая либо "фишка"
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: часть 5 1с sql  таблицы rg изнутри
Ответ #24 - 26. Ноября 2008 :: 14:51
Печать  
Цитата:
Ну тогда также не понятно чем кластерный индекс отличается от некластерного уникального.

У обычного индекса на уровне листьев находится ключ индекса и row id данных, а у кластерного там непосредственно данные. Только и всего..
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: часть 5 1с sql  таблицы rg изнутри
Ответ #25 - 26. Ноября 2008 :: 14:54
Печать  
berezdetsky писал(а) 26. Ноября 2008 :: 14:51:
Цитата:
Ну тогда также не понятно чем кластерный индекс отличается от некластерного уникального.

У обычного индекса на уровне листьев находится ключ индекса и row id данных, а у кластерного там непосредственно данные. Только и всего..

Ты же сам вроде говорил в этой ветке  что индекс отдельно а данные тоже отдельно. см пост 8.
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: часть 5 1с sql  таблицы rg изнутри
Ответ #26 - 26. Ноября 2008 :: 15:09
Печать  
Z1 писал(а) 26. Ноября 2008 :: 14:54:
Ты же сам вроде говорил в этой ветке  что индекс отдельно а данные тоже отдельно. см пост 8.

Там сказано только то, что сказано. Не надо приписывать мне свои мысли. В кластерном индексе данные смешаны с индексом - по-этому он и называется "кластерный".
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: часть 5 1с sql  таблицы rg изнутри
Ответ #27 - 26. Ноября 2008 :: 15:40
Печать  
Тогда получается что  kiruha прав и индекс для rg сделан в 1с
хорошо и проблемы могут возникнуть только если мы залезаем в глубое прошлое и что-то там перепроводим.
Для ra тоже все ok c идексом так как ID документа не меняется
и все движения ra будут на одной или нескольких близких
страницах.
Если же нужны какие-то условия ускоряющие выбор остатков
например по конкретному товару то нужно взвешено выбирать между новым индексом или скоростью получения
остатка на любую дату.
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: часть 5 1с sql  таблицы rg изнутри
Ответ #28 - 26. Ноября 2008 :: 15:54
Печать  
А для чего еще нужен индекс в таблице движений регистра -
чтобы либо быстро рассчитывать остатки, либо быстро смотреть движения в отчетах.
И то и другое родной индекс 1С (в RA) делает плохо.

Разумно в регистрах ставить "отбор движений" по Номенклатуре и Контрагент(или соответственно Договор)
По умолчанию в 1С этих отборов нет - видимо ориентация на мелкие фирмы.
  
Наверх
 
IP записан
 
DmitrO
1c++ power user
Отсутствует


ex developer

Сообщений: 579
Местоположение: г. Киров
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: часть 5 1с sql  таблицы rg изнутри
Ответ #29 - 26. Ноября 2008 :: 15:58
Печать  
Z1 писал(а) 26. Ноября 2008 :: 14:34:
2. если это несколько insert то индекс влезет в туже страницу из-за
фрагментации
3. если индекс не влезет в нужную страницу вот только в этом случае будет пересчет индекса - но тогда уж пересчет так пересчет.
Вероятность невлезания возрастает вызвана еще и тем что insert идет
и в февраль,март,апрель,май,июнь,июль,август,сентябрь,октябрь,ноябрь

Fill Factor. Рекомендую ознакомиться в BOL.
  
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 3 4 
ОтправитьПечать