Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
1 / 1 / 0
Регистрация: 09.09.2015
Сообщений: 13
1

Переполнение базы данных

31.10.2015, 12:36. Показов 2561. Ответов 17
Метки нет (Все метки)

Пытался найти информацию по поводы обработки ситуации с переполнением базы данных (2 Гб), нашел в нескольких темах здесь и нескольких на других форумах, информацию, что обработать это проще простого, а вот как именно не сказано. Так и же и в книгах рассматривается только работа с базой, но никак ни эта ситуация.

как сделать так, чтобы при достижении порога размера создавалась копия базы что ли, и основная база очищалась, но при этом должна сохраниться обычная работа приложения, т.е. информация ушедшая в копию должна быть так же доступна для обработки из приложения как будто она в основной базе.
Или же это заранее надо поделить базу на 2, где в одной информация постоянно меняющаяся, а во второй только результаты работы, которые не меняются, а только считываются для работы? И копии делать уже именно второй базы.

В том, что на Access базах делаю приложения которые за полмесяца работы 1 или 2 превышают размер в 2Гб, я убеждался и не раз, к сожалению только на работающих приложениях, а не на процессах их создания. У самого в лаборатории стоит ICP анализатор Spectro Arcos у которого база переполняется 2 раза в месяц и создается копия, полностью работающая дальше (то есть данные из неё доступны для любых действий, в том числе удаление).

Подскажите, что и где почитать или как это сделать.
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.10.2015, 12:36
Ответы с готовыми решениями:

Схема базы данных ЖД вокзала, имеется "переполнение"
В базе данных есть таблица ПОЕЗД , которая имеет начальную и конечную станции, так же есть...

Как обеспечить зависимость значений для ввода в поле базы данных от значения в другом поле базы данных?
Есть 2 таблицы справочников (все факторы и все возможные значения - tblDicFactor и...

Использование псевдопеременных: bd (3,5) = s, где bd - база данных, s - элемент базы данных, тогда с 3 по 5 элементы базы данных заменить на элемент s.
всем доброго времени суток! есть у меня класс bd, массив элементов этого класса table, а вот сам...

При открытии базы данных FoxPro в приложение Delphi возникает ошибка драйвера внешней базы данных (8961)
При открытии базы данных FoxPro в приложение Delphi возникает ошибка драйвера внешней базы данных...

17
8110 / 5014 / 550
Регистрация: 27.03.2013
Сообщений: 17,936
31.10.2015, 12:50 2
Для начала попробуйте выполнить - СЖАТЬ И ВОССТАНОВИТЬ.
Иногда БД сжимается в десятки раз, т. к. кажись слышал, что БД самостоятельно как бы бронирует себе свободное место на диске.
0
Модератор
Эксперт MS Access
10282 / 4195 / 680
Регистрация: 07.08.2010
Сообщений: 11,817
Записей в блоге: 4
31.10.2015, 12:56 3
видимо надо в первую очередь понять причину быстрого набора 2гб
2.000.000.000/4.000=500.000 записей --маловероятно, что есть полмиллиона записей за месяц

что то не так в структуре данных или многократные запросы на создание таблицы при отсутствии сжатия
0
8110 / 5014 / 550
Регистрация: 27.03.2013
Сообщений: 17,936
31.10.2015, 13:10 4
Цитата Сообщение от shanemac51 Посмотреть сообщение
...что то не так в структуре данных...
Тоже так думаю.
Один раз, несколько лет назад, для того что бы удостовериться что текстовое поле не должно быть ключевым, спецом сделал такую не правильную БД, ну так вот после сжатия, текстовая БД, помнится более чем в 10 раз была по весу тяжелее.

Добавлено через 2 минуты
Возможно ещё картинок вместо ссылок много в саму БД вставляется.
0
шапоклякистка 8-го дня
3665 / 2225 / 391
Регистрация: 26.06.2015
Сообщений: 4,647
Записей в блоге: 1
31.10.2015, 13:20 5
Цитата Сообщение от shanemac51 Посмотреть сообщение
/4.000
Что за магическая цифра? Максимальный размер одной записи?

Добавлено через 1 минуту
Цитата Сообщение от Lepage Посмотреть сообщение
на Access базах делаю приложения
Базы Access, а приложения - тоже на Access или на чем-то другом?
0
Модератор
Эксперт MS Access
10282 / 4195 / 680
Регистрация: 07.08.2010
Сообщений: 11,817
Записей в блоге: 4
31.10.2015, 13:29 6
точками тысячи разделила, 2 гб по 4кб на запись
0
Эксперт MS Access
26708 / 14388 / 3190
Регистрация: 28.04.2012
Сообщений: 15,783
31.10.2015, 13:39 7
Цитата Сообщение от texnik-san Посмотреть сообщение
Что за магическая цифра? Максимальный размер одной записи?
Да. Из спецификации Access 2010:
"Число знаков в записи (кроме полей MEMO и полей объектов OLE), если свойству Сжатие Юникод полей присвоено значение Да 4 000"

Если у ТС данные в БД попадают напрямую из цифрового преобразователя каких-то датчиков, то получить гигабайты очень даже просто. Например, обработка аэрофото или спутниковых снимков свободно даст многие десятки гигов в день. То же самое с химическими анализаторами. Да и со многими другими
1
1 / 1 / 0
Регистрация: 09.09.2015
Сообщений: 13
31.10.2015, 13:48  [ТС] 8
Приложения моё на Delphi, сжатие конечно делаю.

А у анализатора - да - данные напрямую с оптических датчиков + данные о параметрах замеров, в диких количествах, для вычислений как среднего так и много другого. Если всё правильно посчитал то примерно что-то 2,2-2,8 мб один замер
0
шапоклякистка 8-го дня
3665 / 2225 / 391
Регистрация: 26.06.2015
Сообщений: 4,647
Записей в блоге: 1
31.10.2015, 13:52 9
А в счет идет фактическое число знаков, или расчетное?

Если, скажем, в таблице есть текстовые поля с длиной 255, то 4000/255=15,68 - то есть, мксимум 15 таких полей можно в одну таблицу? Хм, нужно попробовать.

Добавлено через 4 минуты
Цитата Сообщение от Lepage Посмотреть сообщение
А у анализатора - да - данные напрямую с оптических датчиков + данные о параметрах замеров, в диких количествах, для вычислений как среднего так и много другого. Если всё правильно сделал то примерно что-то 2,2-2,8 мб один замер
Не хотите использовать типичный для обработки больших объемов данных прием map reduce? Получив некоторую порцию данных (например, за сутки) превратить ее в несколько итоговых значений, нужных для дальнейших подсчетов (скажем, для среднего вам понадобится число значений и их сумма, а если средние будут вычисляться для каких-то групп - то эти два параметра для каждой группы) и в рабочей базе данных хранить только эти вычисленные значения, а исходные данные - сбросить в другой файл в архив?
2
1 / 1 / 0
Регистрация: 09.09.2015
Сообщений: 13
31.10.2015, 13:53  [ТС] 10
P.S. Вообще конечно моему приложению ох как далеко и до 1Гб, но запросы растут, хотелки тоже. ни картинок, ни вложений в базе нет, только ссылки на них.
Но вот порой всплывает эта мысль про переполнение, каждый раз как на анализаторе предупреждение появляется, не начать ли подготовку к такому случаю, у нас ведь всегда "зима неожиданно приходит"
1
шапоклякистка 8-го дня
3665 / 2225 / 391
Регистрация: 26.06.2015
Сообщений: 4,647
Записей в блоге: 1
31.10.2015, 13:54 11
ну вот map reduce как раз хорошая профилактика зимы )
1
Модератор
Эксперт MS Access
10282 / 4195 / 680
Регистрация: 07.08.2010
Сообщений: 11,817
Записей в блоге: 4
31.10.2015, 13:58 12
тогда надо подумать по какому признаку можно разделить, но дожидаясь достижения 2 гб
--по дате
--по прибору
--по группе приборов

многое зависит от структуры подводимых итогов
1
шапоклякистка 8-го дня
3665 / 2225 / 391
Регистрация: 26.06.2015
Сообщений: 4,647
Записей в блоге: 1
31.10.2015, 14:05 13
Цитата Сообщение от texnik-san Посмотреть сообщение
А в счет идет фактическое число знаков, или расчетное?
Если, скажем, в таблице есть текстовые поля с длиной 255, то 4000/255=15,68 - то есть, мксимум 15 таких полей можно в одну таблицу? Хм, нужно попробовать.
Попробовала. Считается фактическая длина. Полей можно сколько угодно. А вот при заполнении личними знаками получила диагностику "Слишком большая длина записи". Вот точно, что век живи, век учись.
2
8110 / 5014 / 550
Регистрация: 27.03.2013
Сообщений: 17,936
31.10.2015, 14:20 14
Не знаю, делается ли так, т. к. не особый в данном вопросе специалист, но первое чего приходит в голову, то это разделение БД на несколько БД.
Типа как то так, как бы по признаку основополагающего типа или там категории:
1. Таблицы - справочники
2. Запросы - общие, от неё линковка для всех вспомогательных БД с формами и отчетами.
3. Таблицы - факты - Приход
4. Таблицы - факты - Расход
5. Таблицы - факты - Отдел Кадров
6. Таблицы - факты - Мероприятия
и т. д. и т. п.
И всё это объединить ссылками на таблицы-запросы между БД.
Возможно это будет немного и притормаживать, но объёмы ОБЩЕЙ БД чудится можно увеличивать практически безгранично.
А то и ваще безумная идея, для каждой таблицы - двух своя БД с линковкой к основной БД.
Это бы наверное я бы как обыватель без грошей за душой так сделал, а не заказывал програмку сверх специалисту в более сложных програмках, где скорее всего можно наверное и чего то более мощное и объёмное применить, а не - Access, но раз вопрос задан здесь. то чудится любые, даже вааще чудные варианты имеют право на существование.
3
1 / 1 / 0
Регистрация: 09.09.2015
Сообщений: 13
31.10.2015, 17:24  [ТС] 15
PuhKMV, вот и я так это себе представляю

Дело в том, что программка есть и она работает. переводить её на другую СУБД - и время и деньги. Возможно это вообще не понадобиться, так как за полгода заполнение всего до 160 мб, да и то там справочной инфы было много и теперь прирост рабочими данными очень мелкий.

Но очень уж мне интересно узнать как это можно сделать, скажем так, правильно.
0
8110 / 5014 / 550
Регистрация: 27.03.2013
Сообщений: 17,936
31.10.2015, 18:02 16
Цитата Сообщение от Lepage Посмотреть сообщение
Дело в том, что программка есть и она работает.
Ну т. к являюсь чисто не профи, то так бы я лично для простоты так бы и сделал, типа не особо заморачивался над всяческими не всегда понятными процедурами или ещё более иногда замороченными запросами.
0
202 / 23 / 4
Регистрация: 27.01.2015
Сообщений: 354
Записей в блоге: 1
24.12.2016, 20:39 17
Цитата Сообщение от PuhKMV Посмотреть сообщение
СЖАТЬ И ВОССТАНОВИТЬ.
После данной процедуры , БД работает без ошибки? или на практике были ситуаций с ошибками?
0
шапоклякистка 8-го дня
3665 / 2225 / 391
Регистрация: 26.06.2015
Сообщений: 4,647
Записей в блоге: 1
24.12.2016, 21:53 18
habdulov, данная процедура не только не приводит к ошибкам, но инода и лечит уже возникшие.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.12.2016, 21:53

Восстановить поврежденный файл базы данных SQLite (сделать дамп запароленного файла базы данных)
Вообщем не понятно после чего перестал открываться файл базы данных с ошибкой - "database disk...

Создание базы данных, открытие из под одной базы данных MS Access
Здравствуйте. В общем, C# начал заниматься только вот и сразу была поставлена задача создать базу...

Как узнать имя базы данных и сервер базы данных?
База данных находится на локальной машине

Как сравнить переменную со строкой базы данных или как присвоить переменной значение строки базы данных ?
подскажите пожалуйста как мне сравнить переменную типа string с каким нибудь строкой базы данных....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.