Добрый день. Выгрузка базы 1С 808 МБ. База простая, самописная - хранит список документов-карточек. Снес 3/4 документов, провел "Тестирование и исправление", тут же сделал выгрузку базы - опять 808 МБ. База крутится на MS SQL, что я пропустил? По идее, она должна была ужаться как минимум вдвое.
Галка "Сжатие базы данных" в окне "Тестирования и исправления" отсутствует.
Спасибо.
(9) Запусти MSSMS. Подключись, выбери базу, нажми на ней правую кнопку мыши. Выбери в контекстном меню "Properties". Посмотри на страницу "General", группу "Database", значения "Size" и "Space Available". Подумай.
Руки дошли до проверки, но опять не понимаю поведения базы данных.
Я проверил размер файлов. Больше всего размера занимала таблица с файлами. Именно там сосредоточилось 75% объема.
Ок. Я навалял обработку, которая все файлы пережала. 1С-сжатие помогло не везде, некоторые файлы уменьшились всего на 15%, но есть и такие, который "стухли" на 2/3 размера. Жму "Выгрузить" и получаю...файл выгрузки того же самого размера, что и ДО сжатия. Даже больше на 1-2 МБ (хотя объем файлов внутри базы должен был усохнуть минимум на 20%).
Применил тестирование и исправление со сжатием (тест провожу на файловой базе) - ноль результата.
Я так понял, лекарство - только хранение файлов в файловой системе ИЛИ я что-то не так сделал (опять)?
Сжимал так: выдрал ДвоичныеДанные из реквизита с типом Хранилище, а потом записал туда же с Новый "СжатиеДанных(9)".
Жму "Выгрузить" и получаю...файл выгрузки того же самого размера, что и ДО сжатия. Даже больше на 1-2 МБ (хотя объем файлов внутри базы должен был усохнуть минимум на 20%).
При выгрузке в DT содержимое базы и так жмется хорошим алгоритмом. Каким образом можно ещё сильнее сжать сжатый файл? А по поводу того, что после сжатия внутренностей выгрузка становится больше - разве никогда не пробовал помещать в архив другой архив и сравнивать размер получившегося файла с исходным?
(15)
Насчет SQL: учту, но меня больше интересует вопрос, почему в ФАЙЛОВОМ варианте разницы нет. Конечно, я тот еще нубяра, и представляю так: если новые данные в Хранилище значений заняли меньше места - и занимаемое место в БД должно уменьшится. В моем случае этого не происходит. Где-то пробел в знаниях, видимо, может, кто натолкнет на ликбез.
(16)
Речь идет о "взять из базы файл, например, 500 КБ, сжать до 250 КБ, снова поместить его в реквизит. Итоговый размер объекта на диске не уменьшился. Вот этого я не могу понять.
Я уже созрел и переделал хранение на "в файловой системе", но мне сам вопрос интересен, почему так?
Возможно, это связано как-то с резервированием места под изначальный файл? Ведь я достаю из базы файл 500 КБ, потом сжимаю и записываю обратно уменьшенный размер. Но записываю в уже созданный объект.
(17) Файл базы сам по себе не уменьшится после изменения объема данных в меньшую сторону. Для уменьшения физически занимаемого файлом этой базы места нужно делать сжатие через тестирование и исправление, если база файловая, или шринк, если клиент-серверная. При сжатии происходит перестроение таблиц, можно сказать данные начинают храниться на диске друг за другом без пробелов.
И ещё раз - при выгрузке базы в DT не важно в сжатом или в не сжатом виде изначально были данные в базе - результат будет одинаковым, потому что при выгрузке автоматически сожмется всё, что могло быть сжато. А что итак было сжато - до меньшего размера не сожмется.
P.S. Вообще расширение DT расшифровывается как Data Transfer. Этот формат предназначен исключительно для перехода между файловым и клиент-серверным вариантом работы. Использовать его для бэкапов не рекомендуется, о чем написано на ИТС, потому что платформа при выгрузке данных в файл DT не гарантирует, что из этого файла можно будет загрузить данные обратно. Битые DT совсем не редкое явление.