друзья приветствую!
столкнулся с трудностью:
справочник:
уровней: 8
записей: ~200 000
реквизитов: ~55, из них 5 с флагом сортировки и один с флагом "отбор по реквизиту"
при этом размер файла DBF 143048кБт, а CDX 2 074 915кБт и соотвественно достиг предела
вопроса два:
1. почему такая разница
2. как ограничить рост файла (справочник будет расти и дальше)
(23) hogik, спасибо за внимание, в моем случае применим совет (19).... хотя конечно остается вопрос №1 - как такое вообще могло произойти? По факту в практически пустой справочник я из экселя загружал таблицу (~100 000) и перед самым финишем - вылет!
(24)
Евгений (pisarevEV).
У меня такое впечатление, что Вы по ссылкам и не ходили. :-(
В первой написано: "Ограничение на размер ключа в индексе 117 байт, для таблиц начиная с 30000 записей."(с) У Вас размер ключа больше. А если хотите узнать/понять причину "и перед самым финишем - вылет!"(с), то сходите по второй...
(26) hogik, ходил... просто пользуясь вашей терминологией я "проблемный програмист" (ничего не понял про размер ключа и т.д.). Но фокус на самом деле думаю где в другой плоскости: после первого вылета, я НИЧЕГО НЕ МЕНЯЯ ни в метаданных ни в загрузчике, а просто переиндексировав базу начал загружать, и все загрузилось без проблем. Да бог с ним, все хорошо, что хорошо кончается!
(27)
"ничего не понял про размер ключа и т.д."(с) Евгений (pisarevEV).
А ничего и не надо понимать. ;-)
Если Вам нужны индексы (т.е. не можете всегда следовать совету из (19) сообщения), то надо "смотреть" на размер ключа в DD файле. Если он больше 117 байт, то всё может работать нормально после, например, реиндексации. Но по мере наполнения таблицы могут возникнуть проблемы - движок "зациклится" и начнет "расти" файл CDX. И даже, если он не доберётся до размера в 2 гигабайта - система начнет "глюковать". Т.е. возникнут те самые проблемы для проблемного программиста... :-)
(29)
"изаиняюсь конечно, но..."(с) Евгений (pisarevEV).
Не извиню! :-)
См. первый пункт сообщения #32 из второй ссылки/темы в сообщении (23) данной темы.
(30) hogik, я правильно понял, что нужно взять список индексов таблицы справочника, выбрать самый "длинный", сложить длину его составляющих и желательно чтобы результат был <117?
была кажется 71-я ошибка (точно не помню) на файле SC.... глянул размер и ахнул, при том, что размер DBF <150 метров был.... сдается мне может есть какой изъян в загрузчике? но там все тривиально: открыл эксель, начал читать по-строчно, строка - элемент, строка-элемент, на каждой строке - фиксация (т.е. одну большую транзакцию не использовал)....
(37)
Евгений (pisarevEV).
Надо только не забывать делать реиндексацию в среде 1С, если выполняете изменения таблицы в среде этого ПО. Т.к. порядок сортировки у них разный и можно напороться потом на "проблемы". ;-)
Селективность - это соотношение количества уникальных ключей к общему количеству записей. В случае, когда уникальных значений всего 2 (1 и 0), селективность индекса ужасна. Идеалом же является селективность = 1 (т.е. каждая запись обладает уникальным ключом).
Так вот, при любой реструктуризации 1С создаёт пустую табличку _с_индексами_, и по одной записи начинает туда запихивать данные из старой таблички. При этом, как уже говорилось, 1С фигово умеет обращаться с индексами, и размер индекса растёт с космической скоростью, занимая столь же космическое время. Я так полагаю, что банально не выполняется балансировка дерева. В итоге пришлось этот индекс выключать, и после обновления подменять МДшник и ДДС, с последующей полной переиндексацией. В таком варианте все манипуляции занимали минут 10.
(41) ADirks, ну, не могу сказать что понял роль селективности в проблеме безудержного роста индекса, мне кажется наш коллега hogik выше по топику (23) все разжевал до молекулярного уровня :)
по факту проверка длин ключей и "сокращение" до <117 решило все проблемы... процедуры реструктуризации, которые до этого выполнялись по 8-16часов, а иногда и вовсе уходили в аварию, теперь укладываются в 1ч. Вобщем слава богу что есть среди нас умные люди :)
(45) Позвольте усомниться. Со справочниками-то проблем не возникает. А вот попробуй "за 1 минуту на любой базе руками" на общий реквизит документа поставить галочки сортировки и отбора.
(50) Имеющийся общий реквизит документа нужно еще перекопировать в 1sjourn из N-го количества шапок документов. Я ж говорю про постановку галочек на старый реквизит. Это как-то не ручная работа и не за минуту :)
(46) Ёпрст, да, есть "быстрые" способы, просто путь нашего коллеги hogikа позволяет работать штатно, не прибегая к нестандартным методам... для меня по крайней мере, это дорого стоит.
Если че, штатно - это снятие галки отбор и сортировка со всех реквизитов обновляемого справочника, добавление/изменение/удаление реквизита(ов) сохранение конфы, вертания галок взад.
Ручонками - просто создание/изменение/удаление поля в табличке + подмена мд и дд + реиндекс одной таблички.
друзья, да к чему эти дебаты? мой вопрос давно решен :) в знаниях и навыках участников нет и тени сомнений... а дальше уже дело личных предпочтений, уходящих корнями в высшие материи :)
А варианты? Например, "Автор" в качестве общего реквизита документов с отбором для показа журнала по авторам нужен многим. Те же стандартные Фирма, Юрлицо, Проект...
Как их реализовать без общих реквизитов с отбором? Не считая не всем подходящего варианта переписывания приличного куска конфигурации на прямые запросы...