растет файл CDX

1. pisarevEV 8 08.08.13 13:19 Сейчас в теме
друзья приветствую!
столкнулся с трудностью:
справочник:
уровней: 8
записей: ~200 000
реквизитов: ~55, из них 5 с флагом сортировки и один с флагом "отбор по реквизиту"
при этом размер файла DBF 143048кБт, а CDX 2 074 915кБт и соотвественно достиг предела
вопроса два:
1. почему такая разница
2. как ограничить рост файла (справочник будет расти и дальше)
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. DJDUH 17 08.08.13 13:30 Сейчас в теме
(1) pisarevEV, А перейти на "Сиквель" нет желания?
А сколько реквов с неогр длиной?
5. pisarevEV 8 08.08.13 13:32 Сейчас в теме
(3) DJDUH, ни одного, переход на SQL пока не возможен по ряду причин
7. DJDUH 17 08.08.13 13:34 Сейчас в теме
(5) pisarevEV, а если удаляешь CD}{ и индексишся, то какой размер до и после?
Ну всторонке проверь!
8. pisarevEV 8 08.08.13 13:35 Сейчас в теме
9. DJDUH 17 08.08.13 13:36 Сейчас в теме
17. pisarevEV 8 08.08.13 14:20 Сейчас в теме
(9) DJDUH, после переиндексации размер снизился до 11 824кБт.... не понял юмора :(
21. DJDUH 17 08.08.13 14:45 Сейчас в теме
(17) pisarevEV, такое бывает, CDX-сина была старая в ней куча дырок, а новая пожалуйста)))
23. hogik 443 08.08.13 18:51 Сейчас в теме
(1)
Евгений (pisarevEV).
См.:
http://forum.infostart.ru/forum24/topic36374/message399374/#message399374 (сообщение #16).
Подробнее см. тут:
http://forum.infostart.ru/forum9/topic36308/message398169/#message398169 (сообщение #30, пункт #3).
24. pisarevEV 8 09.08.13 06:17 Сейчас в теме
(23) hogik, спасибо за внимание, в моем случае применим совет (19).... хотя конечно остается вопрос №1 - как такое вообще могло произойти? По факту в практически пустой справочник я из экселя загружал таблицу (~100 000) и перед самым финишем - вылет!
26. hogik 443 09.08.13 16:36 Сейчас в теме
(24)
Евгений (pisarevEV).
У меня такое впечатление, что Вы по ссылкам и не ходили. :-(
В первой написано: "Ограничение на размер ключа в индексе 117 байт, для таблиц начиная с 30000 записей."(с) У Вас размер ключа больше. А если хотите узнать/понять причину "и перед самым финишем - вылет!"(с), то сходите по второй...
27. pisarevEV 8 10.08.13 14:42 Сейчас в теме
(26) hogik, ходил... просто пользуясь вашей терминологией я "проблемный програмист" (ничего не понял про размер ключа и т.д.). Но фокус на самом деле думаю где в другой плоскости: после первого вылета, я НИЧЕГО НЕ МЕНЯЯ ни в метаданных ни в загрузчике, а просто переиндексировав базу начал загружать, и все загрузилось без проблем. Да бог с ним, все хорошо, что хорошо кончается!
28. hogik 443 10.08.13 16:12 Сейчас в теме
(27)
"ничего не понял про размер ключа и т.д."(с)
Евгений (pisarevEV).
А ничего и не надо понимать. ;-)
Если Вам нужны индексы (т.е. не можете всегда следовать совету из (19) сообщения), то надо "смотреть" на размер ключа в DD файле. Если он больше 117 байт, то всё может работать нормально после, например, реиндексации. Но по мере наполнения таблицы могут возникнуть проблемы - движок "зациклится" и начнет "расти" файл CDX. И даже, если он не доберётся до размера в 2 гигабайта - система начнет "глюковать". Т.е. возникнут те самые проблемы для проблемного программиста... :-)
29. pisarevEV 8 10.08.13 16:29 Сейчас в теме
(28) hogik, изаиняюсь конечно, но как определить размер ключа?
30. hogik 443 10.08.13 16:57 Сейчас в теме
(29)
"изаиняюсь конечно, но..."(с)
Евгений (pisarevEV).
Не извиню! :-)
См. первый пункт сообщения #32 из второй ссылки/темы в сообщении (23) данной темы.
31. pisarevEV 8 10.08.13 17:32 Сейчас в теме
(30) hogik, все понял, разберусь в понед!
32. pisarevEV 8 12.08.13 14:48 Сейчас в теме
(30) hogik, я правильно понял, что нужно взять список индексов таблицы справочника, выбрать самый "длинный", сложить длину его составляющих и желательно чтобы результат был <117?
33. hogik 443 12.08.13 15:40 Сейчас в теме
(32)
"я правильно понял"(с)
Евгений (pisarevEV).
Да, правильно поняли.
Но, только, не "желательно ... <117"(с), а ОБЯЗАТЕЛЬНО <=117 байт.
34. hogik 443 12.08.13 16:30 Сейчас в теме
(32)
Евгений (pisarevEV).
Можно взять бесплатную программу:
http://devzone.advantagedatabase.com/dz/content.aspx?key=20&E%d0%b9^j%d0%97%c2%b5&Release=13&Product=8&Platfor­m=6
Открыть ею проблемный файл. Войти в "свойство" файла. Выбрать закладку про индексы. А там есть информация о длине ключа. Далее взять имя проблемного индекса. И уже потом сосредоточиться ;-) на анализе длин полей по DD файлу для конкретных индексов.
2. Ёпрст 1063 08.08.13 13:25 Сейчас в теме
выкинуть текстовые реквизиты с галками отбор и сортировка.
4. pisarevEV 8 08.08.13 13:32 Сейчас в теме
(2) Ёпрст, других вариантов нет?
6. pisarevEV 8 08.08.13 13:34 Сейчас в теме
(2) Ёпрст, строковых реквизитов с отбором всего 3, неужели они так "весят"?
10. Ёпрст 1063 08.08.13 13:42 Сейчас в теме
(6) и длина этих реквизитов, поди 256 еще ?
:)))

если че, эти поля в cdx хранятся "как есть"
11. pisarevEV 8 08.08.13 13:52 Сейчас в теме
(10) Ёпрст, 1 - 80 символов, 2 - 17, 3- 135
15. Ёпрст 1063 08.08.13 14:05 Сейчас в теме
12. pisarevEV 8 08.08.13 13:54 Сейчас в теме
#----Indexes------
# Name |Descr |Unique|Indexed fields |DBName
I=IDD |of ID |0 |ID |IDD
I=PCODE |of PARENT and |0 |PARENTID,ISFOLDER,CODE(UPPER) |PCODE
I=PDESCR |of PARENT and |0 |PARENTID,ISFOLDER,DESCR(UPPER) |PDESCR
I=CODE |of CODE |0 |CODE(UPPER) |CODE
I=DESCR |of DESCR |0 |DESCR(UPPER) |DESCR
I=VI13389 |VI13389 |0 |SP13389 |VI13389
I=VIP13389 |VIP13389 |0 |PARENTID,ISFOLDER,SP13389 |VIP13389
I=VI13390 |VI13390 |0 |SP13390(UPPER=128) |VI13390
I=VIP13390 |VIP13390 |0 |PARENTID,ISFOLDER,SP13390(UPPER=128) |VIP13390
I=VI13391 |VI13391 |0 |SP13391,DESCR(UPPER) |VI13391
I=VIP13391 |VIP13391 |0 |PARENTID,ISFOLDER,SP13391,DESCR(UPPER) |VIP13391
I=VI14074 |VI14074 |0 |SP14074(UPPER=128) |VI14074
I=VIP14074 |VIP14074 |0 |PARENTID,ISFOLDER,SP14074(UPPER=128) |VIP14074
I=VI13415 |VI13415 |0 |SP13415(UPPER=128) |VI13415
I=VIP13415 |VIP13415 |0 |PARENTID,ISFOLDER,SP13415(UPPER=128) |VIP13415
13. pisarevEV 8 08.08.13 13:55 Сейчас в теме
полная структура индексов
14. pisarevEV 8 08.08.13 13:56 Сейчас в теме
кроме 3-х текстовых еще 2 реквизита с типом "спрачочник"
16. Ёпрст 1063 08.08.13 14:06 Сейчас в теме
сними с них отборы и переиндексируй.
наслаждайся.
18. pisarevEV 8 08.08.13 14:22 Сейчас в теме
вообще-то крит.размер CDX достиг в процессе заполнения (читал из экселя)...
19. Ёпрст 1063 08.08.13 14:30 Сейчас в теме
(18) 1с-ина не умеет правильно работать с cdx при массовом создании документов.
Забей.
Хотя, отборы с 135 и 80 всё же сними.
22. pisarevEV 8 08.08.13 14:45 Сейчас в теме
(19) Ёпрст, понял, учтем на будущее
39. ADirks 186 14.08.13 15:03 Сейчас в теме
+(19) особенно прикольно, когда селективность индекса плохая. К примеру, индекс по галке "в прайсе" в номенклатуре - как то отхватил с этим веселья.
40. pisarevEV 8 14.08.13 15:45 Сейчас в теме
(39) ADirks, можно подробнее про "плохую селективность" и содержание "веселья"?
20. Ёпрст 1063 08.08.13 14:30 Сейчас в теме
25. pisarevEV 8 09.08.13 06:20 Сейчас в теме
была кажется 71-я ошибка (точно не помню) на файле SC.... глянул размер и ахнул, при том, что размер DBF <150 метров был.... сдается мне может есть какой изъян в загрузчике? но там все тривиально: открыл эксель, начал читать по-строчно, строка - элемент, строка-элемент, на каждой строке - фиксация (т.е. одну большую транзакцию не использовал)....
35. pisarevEV 8 12.08.13 19:27 Сейчас в теме
http://devzone.advantagedatabase.com/dz/content.aspx?key=20&jjD
только эта страница по ссылке открывается...
36. hogik 443 12.08.13 21:08 Сейчас в теме
(35)
Делайте Copy-Paste ссылки как текста.
37. pisarevEV 8 13.08.13 05:25 Сейчас в теме
(36) hogik, все получилось, отличное ПО!
38. hogik 443 13.08.13 16:35 Сейчас в теме
(37)
Евгений (pisarevEV).
Надо только не забывать делать реиндексацию в среде 1С, если выполняете изменения таблицы в среде этого ПО. Т.к. порядок сортировки у них разный и можно напороться потом на "проблемы". ;-)
41. ADirks 186 14.08.13 16:56 Сейчас в теме
Селективность - это соотношение количества уникальных ключей к общему количеству записей. В случае, когда уникальных значений всего 2 (1 и 0), селективность индекса ужасна. Идеалом же является селективность = 1 (т.е. каждая запись обладает уникальным ключом).
Так вот, при любой реструктуризации 1С создаёт пустую табличку _с_индексами_, и по одной записи начинает туда запихивать данные из старой таблички. При этом, как уже говорилось, 1С фигово умеет обращаться с индексами, и размер индекса растёт с космической скоростью, занимая столь же космическое время. Я так полагаю, что банально не выполняется балансировка дерева. В итоге пришлось этот индекс выключать, и после обновления подменять МДшник и ДДС, с последующей полной переиндексацией. В таком варианте все манипуляции занимали минут 10.
42. pisarevEV 8 14.08.13 19:11 Сейчас в теме
(41) ADirks, ну, не могу сказать что понял роль селективности в проблеме безудержного роста индекса, мне кажется наш коллега hogik выше по топику (23) все разжевал до молекулярного уровня :)
43. pisarevEV 8 14.08.13 19:14 Сейчас в теме
по факту проверка длин ключей и "сокращение" до <117 решило все проблемы... процедуры реструктуризации, которые до этого выполнялись по 8-16часов, а иногда и вовсе уходили в аварию, теперь укладываются в 1ч. Вобщем слава богу что есть среди нас умные люди :)
45. Ёпрст 1063 15.08.13 09:18 Сейчас в теме
(43) ё..
реструктуризация в базе дбф делается за 1 минуту на любой базе.
Руками.
48. vcv 89 15.08.13 10:50 Сейчас в теме
(45) Позвольте усомниться. Со справочниками-то проблем не возникает. А вот попробуй "за 1 минуту на любой базе руками" на общий реквизит документа поставить галочки сортировки и отбора.
50. Ёпрст 1063 15.08.13 10:59 Сейчас в теме
(48) :)))
править 1sjourn еще быстрее
52. vcv 89 15.08.13 11:20 Сейчас в теме
(50) Имеющийся общий реквизит документа нужно еще перекопировать в 1sjourn из N-го количества шапок документов. Я ж говорю про постановку галочек на старый реквизит. Это как-то не ручная работа и не за минуту :)
56. Ёпрст 1063 15.08.13 11:36 Сейчас в теме
(52) ну ладно, уговорил, 2 минуты прямым запросом..
44. ADirks 186 14.08.13 19:26 Сейчас в теме
Не, у тебя конечно другая ситуация. Я просто описал ещё один из возможных вариантов.
46. Ёпрст 1063 15.08.13 09:19 Сейчас в теме
Можно и штатно, но это гораздо дольше.
49. pisarevEV 8 15.08.13 10:54 Сейчас в теме
(46) Ёпрст, да, есть "быстрые" способы, просто путь нашего коллеги hogikа позволяет работать штатно, не прибегая к нестандартным методам... для меня по крайней мере, это дорого стоит.
51. Ёпрст 1063 15.08.13 11:00 Сейчас в теме
(49) я тебе привёл штатный быстрый метод, описаный еще со времён синьёры.
53. pisarevEV 8 15.08.13 11:21 Сейчас в теме
(51) Ёпрст, со всем уважением к вашей квалификации, способ предложенный в (47) штатным можно назвать достаточно условно...
55. Ёпрст 1063 15.08.13 11:35 Сейчас в теме
(53) Снятие галочек в пофигураторе и сохранение конфы, это условно ?
47. Ёпрст 1063 15.08.13 09:20 Сейчас в теме
Если че, штатно - это снятие галки отбор и сортировка со всех реквизитов обновляемого справочника, добавление/изменение/удаление реквизита(ов) сохранение конфы, вертания галок взад.

Ручонками - просто создание/изменение/удаление поля в табличке + подмена мд и дд + реиндекс одной таблички.
54. pisarevEV 8 15.08.13 11:25 Сейчас в теме
друзья, да к чему эти дебаты? мой вопрос давно решен :) в знаниях и навыках участников нет и тени сомнений... а дальше уже дело личных предпочтений, уходящих корнями в высшие материи :)
57. Ёпрст 1063 15.08.13 11:37 Сейчас в теме
:)
всё быстрее, чем это же самое сделает пофигуратор.

Хотя, общий реквизит с галками отбор.. моветон.
58. vcv 89 15.08.13 18:27 Сейчас в теме
Хотя, общий реквизит с галками отбор.. моветон.

А варианты? Например, "Автор" в качестве общего реквизита документов с отбором для показа журнала по авторам нужен многим. Те же стандартные Фирма, Юрлицо, Проект...
Как их реализовать без общих реквизитов с отбором? Не считая не всем подходящего варианта переписывания приличного куска конфигурации на прямые запросы...
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот