|
Пухнет файловая база. Что делать? | ☑ | ||
---|---|---|---|---|
0
AlexxJ
02.09.14
✎
10:34
|
Доброго времени суток. Кароче такая ситуация... база можно сказать самописная, ну т.е совсем не от 1с и много перепилена. есть справочник у которого есть реквизит тип - Хранилище. В хранилище запихивается Структура, которая собирается их XML(хз важно или нет). Вот этих элементов прибавляется в день 2к-3к и следовательно табличка распухает до 4гб за пару месяцев. Можно ли как то это оптимизировать? Пока обхожусь удалением не нужного, но чувствую пора что то менять ))
|
|||
1
break
02.09.14
✎
10:36
|
sql
|
|||
2
PR
02.09.14
✎
10:36
|
(0) Сжимай хранилище
|
|||
3
shuhard
02.09.14
✎
10:36
|
(0)[Можно ли как то это оптимизировать?]
ну да, можно - удалять не актуальные - хранить порнуху во внешних файликах/СУБД |
|||
4
PR
02.09.14
✎
10:37
|
(1) Причем здесь sql?
|
|||
5
PR
02.09.14
✎
10:38
|
(3) Буквосочетание xml из (0) видимо не привлекло твоего внимания :))
|
|||
6
Jump
02.09.14
✎
10:40
|
Храни XML в папке.
В хранилище пихай ссылки. |
|||
7
AlexxJ
02.09.14
✎
10:42
|
(6) или так или SQL
у SQL насколько я знаю подобных проблем нет. Думал может еще варианты есть... |
|||
8
Jump
02.09.14
✎
10:43
|
Т.е возможность хранения различной информации в 1с это конечно хорошо, но не стоит этим злоупотреблять, и пихать туда тяжеловесный мусор без оптимизации.
Ежели все таки хочется в базе - ну хотя бы допиши функционал который будет жать хмл в архив, и уже архив в хранилище. Жмется хмл достаточно хорошо. |
|||
9
AlexxJ
02.09.14
✎
10:44
|
(2) Думаю что количество создаваемых элементов будет расти, на сколько сжатие эффективно?
|
|||
10
Jump
02.09.14
✎
10:45
|
Т.е конкретная реализация зависит от того насколько часто эта информация востребована, и насколько быстро ее можно извлекать.
|
|||
11
AlexxJ
02.09.14
✎
10:47
|
(10) теоретически эта инфа не нужна. Это типа бекапа отправленных в ГРКЦ электронных сообщений. т.е. храниться по принципу "а вдруг"
|
|||
12
Jump
02.09.14
✎
10:47
|
(9)Смотря какое - любой текст жмется очень хорошо, а учитывая то что в хмл очень много однотипных наименований то вообще отлично.
Просто возьми файл с одной из хмл и попробуй сжать архиватором. По идее можно хранить все хмл в одном архиве, тогда сжатие будет просто супер эффективным, хотя скорость доступа возможно несколько упадет. С другой стороны это всяко лучше чем в базе хранить. |
|||
13
_fvadim
02.09.14
✎
10:47
|
(11) нафик их вообще в базе хранить тогда?
|
|||
14
_fvadim
02.09.14
✎
10:48
|
папочки по датам и вообще к базе не вязать
|
|||
15
shuhard
02.09.14
✎
10:48
|
(11) тогда установи срок годности и удаляй через квартал
|
|||
16
AlexxJ
02.09.14
✎
10:48
|
теоретически ЦБ может запросить копию сообщения. Видимо по этому и хранят, а в базе что бы не потерялась... я так думаю.
|
|||
17
Jump
02.09.14
✎
10:48
|
(11)Ну тогда я бы сделал так - пихаешь все в архив, в один архив. Он получиться довольно небольшим.
А уж сам архив можешь запихать в базу ежели уж есть такое желание. |
|||
18
Maxus43
02.09.14
✎
10:50
|
я так и не понял, xml то архивируешь? они сжимаются на ура, Гиги в сотню метров обычно (от содержимого зависит конечно)...
|
|||
19
AlexxJ
02.09.14
✎
10:50
|
для начала попробую сжатие(9), минимум правки кода, а дальше посмотрим по обстоятельствам
|
|||
20
_fvadim
02.09.14
✎
10:50
|
(16) чтоб не потерялось бэкапы делать
а хранить в базе, тем паче файловой, и иметь головняк с чисткой данных, которые могут понадобиться - мазохизм |
|||
21
Jump
02.09.14
✎
10:53
|
Файл xml размером 6 мегабайт сжимается до 200килобайт.
Т.е в 30 раз. Если все эти хмл хранить в одном архиве то думаю тысяча хмл размером 5мб займет не более 50мб. |
|||
22
AlexxJ
02.09.14
✎
10:53
|
(18) ну там не совсем XML, на основе xml создается структура с помощью рекурсивной функции. Зачем так - тайна!!! для меня. и вот эта структура и засовывается в хранилище
|
|||
23
Адинэснег
02.09.14
✎
10:56
|
xml в хранилище, хранилище в ЗаписьZipФайла()
|
|||
24
Адинэснег
02.09.14
✎
10:57
|
вернее xml в zip, zip в хранилище
|
|||
25
Мимохожий Однако
02.09.14
✎
10:57
|
Если данных удаляются через некоторое время,то логично писать в регистр сведений и регламентными заданиями удалять по мере потери актуальности.
|
|||
26
Долбежник
02.09.14
✎
10:58
|
(1)
+100500 |
|||
27
Jump
02.09.14
✎
10:58
|
(22)Ну значит эффективность архивации посчитай сам, выгрузи и попробуй вручную сжать.
|
|||
28
Jump
02.09.14
✎
11:00
|
(26)А чем поможет скуль в данном случае?
Пухнуть будет нисколько не меньше. |
|||
29
Йохохо
02.09.14
✎
11:20
|
(28) у файловой есть ограничение на размер таблицы
|
|||
30
Jump
02.09.14
✎
12:22
|
(29)Ну насколько я понял из сабжа в ограничение топикстартер не упирается, просто заблаговременная забота о размере базы.
Так что в данном случае гораздо лучше устранить причину распухания, чем забить на причину и перейти на скуль. |
|||
31
AlexxJ
02.09.14
✎
12:30
|
(28) у скуля помоему подобных ограничений нет
|
|||
32
AlexxJ
02.09.14
✎
12:31
|
в общем и целом понятно, оригинальных и необычных решений нет... чудес не бывает (
|
|||
33
Garykom
гуру
02.09.14
✎
12:31
|
Сделай обработку чистки этой таблички с удалением/переносом в файл бэкапа всего старого и по расписанию ее запускай...
|
|||
34
Garykom
гуру
02.09.14
✎
12:32
|
Еще можно раз это архив то и храни это в архиве, т.е. не просто xml-структура туда а сначала в zip запакуй и тока потом в хранилище...
|
|||
35
Garykom
гуру
02.09.14
✎
12:33
|
(34) и индексов надеюсь нет по этой табличке? ))
|
|||
36
AlexxJ
02.09.14
✎
12:35
|
(35) нет. тип хранилище не индексируется.
|
|||
37
РенеДекарт
02.09.14
✎
12:35
|
(30)> я понял из сабжа в ограничение топикстартер не упирается
>следовательно табличка распухает до 4гб за пару месяцев - не, совсем не упирается )) |
|||
38
AlexxJ
02.09.14
✎
12:36
|
(37) упирается. просто сейчас ручками мониторим и лишнее убиваем
|
|||
39
РенеДекарт
02.09.14
✎
12:36
|
(34) наиболее оптимально и правильно - удалять через месяц записи с XML.
Все остальное будет в бэкапах. |
|||
40
AlexxJ
02.09.14
✎
12:38
|
(37) после первой ошибки "Превышен максимально допустимый размер внутреннего файла ...1Cv8.1CD", стали контролировать. (39) из-за роста количества электронных сообщений, боюсь что и месяц база не протянет.
|
|||
41
РенеДекарт
02.09.14
✎
12:41
|
(40) да хоть каждый день делайте архив и удаляйте.
Потому в противном случае - только выносить весь мусор во внешнее хранение. |
|||
42
AlexxJ
02.09.14
✎
12:47
|
за неделю база 2 гига набирает, придется похоже внешнее хранилище мутить.
|
|||
43
Jump
02.09.14
✎
13:30
|
(42)А что мутить то? Обычный архив. Рар, зип, или 7z в зависимости от предпочтений в папке с базой.
И работа с ним через консольные команды. Пишется это все за полчаса. |
|||
44
Обработка
02.09.14
✎
13:45
|
(0) Вспомнилось. в 1с 77 в базе мой предшественник хранил ТЗ из документа (опреративная информация остатков на момент ввода документа) в ревиквзите документа.
Не помню точно как там назывался метод. Что-то вроде "сохранитьвнутр" Вобщем база жутко тормозила. После того как убрал этот реквизит база сократилась в 100 раз. |
|||
45
Awreli
02.09.14
✎
13:45
|
мне просто любопытно, что это за справочник? какая информация туда добавляется по 2 штуки в день, да ещё и в хранилище
|
|||
46
AlexxJ
02.09.14
✎
14:06
|
(45) --> (11) (16)
|
|||
47
AlexxJ
02.09.14
✎
14:07
|
(43) лень матушка ))) да и так есть чем заняться
|
|||
48
DosBot
02.09.14
✎
15:04
|
(0) В своё время выбирал между хранением файлов внутри базы или только ссылок на них. В итоге выбрал второе. Рост размера базы оказался критичнее.. ИМХО, храни только ссылки на файлы...
|
|||
49
РенеДекарт
02.09.14
✎
15:11
|
(43)>Пишется это все за полчаса.
копируется, вообще-то, еще быстрее. А вот понять и написать - отнюдь не полчаса. День-два-три. Всегда удивляли "полчастники", полчаса копирующие готовый код. |
|||
50
РенеДекарт
02.09.14
✎
15:11
|
(45) лог изменений
|
|||
51
РенеДекарт
02.09.14
✎
15:12
|
(48)>В итоге выбрал второе.
что использовал? |
|||
52
DosBot
02.09.14
✎
15:36
|
(51) Дописал свою подсистемку на УФ, для хранения файлов во ВНЕ (был закуплен отдельный сервак для этого). Вся система ориентируется на 2 главных компонента:
- Справочник ХранилищеВнешнихФайлов (где хранятся ТОЛЬКО ссылки на файлы) - то, что видит пользователь. Перечень файлов которые можно посмотреть, добавить, изменить; - Справочник НастройкиХраненияФайлов (где куча настроек позволяющих автоматически формировать путь в хранилище для добавляемого файла, без участия пользователя, расширения доступные для выбора и проч.); Главное, на что ориентировался: - возможность быстрого добавления в хранилище нужного файла пользователем, без необходимости указывать его конечный путь (подсистема сама определяла путь хранилища, в зависимости от вида документа/справочника; при этом, путь можно строить из произвольного числа реквизитов. Например, для документа Реализация ТРиУ: Организация -> Дата (год) -> Код. На выходе получается: \\FilesServer\ООО Дружба\2013\000000011) - пользователь только выбирает файл, требуемый для добавления, всё остальное для него скрыто; - возможность выбора из заданного перечня расширений файлов (также задаётся в настройке) и его макс. размер файла; - синхронизация и физический перенос файлов с изменением инфы о его местоположении в ХранилищеВнешнихФайлов, в случае изменения реквизитов, влияющих на путь файла в хранилище; - возможность управления видимостью/доступностью для пользователя в спр. ХранилищеВнешнихФайлов с помощью RLS (свой отдельный РС, аналогичный типовому); - возможность массового добавления файлов (каждый файл обрабатывается и проверяется на корректность имени, наличия в хранилище и т.п.); Короче. Потратил на это где-то 4-6 дней. Зато, блин, никаких напрягов с ростом базы :) |
|||
53
DosBot
02.09.14
✎
15:36
|
+ делал на базе КА
|
|||
54
РенеДекарт
02.09.14
✎
15:42
|
(52) да, весьма интересно получилось, я б взял как шаблон ))
|
|||
55
Jump
02.09.14
✎
16:19
|
(49)Не пойму что ты там копировать собрался, и что копируется быстрее.
А на написание консольных команд работы с архивом не думаю что уйдет более получаса. |
|||
56
AlexxJ
02.09.14
✎
16:26
|
(48) если бы у меня был выбор, тогда внешний архив. а так первая заповедь "если работает - ничего не трогай" )
|
|||
57
РенеДекарт
02.09.14
✎
16:34
|
(55) >А на написание консольных команд работы с архивом
- я и говорю - скопировать еще быстрее. А так все с рождения владеют консольными командами работы с архивом. Как же без этого. Вообще, всеми консольными командами. И конечно, что там еще изучать можно?! |
|||
58
Jump
02.09.14
✎
16:50
|
(57)Не пойму что именно скопировать можно в данном случае и откуда.
А по поводу консольных команд архива - справка по командам архива хранится в папке с установленным архиватором, или банально гуглится. |
|||
59
AlexxJ
02.09.14
✎
17:02
|
(58) я так понимаю : скопировать БД в архив и удалить лишние элементы
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |