Как уменьшить растущий размер файла доступа?

Итак, на моем рабочем месте у них есть огромный файл доступа (используется с MS Access 2003 и 2007). Размер файла составляет около 1,2 ГБ, поэтому его открытие занимает некоторое время. Мы не можем удалить ни одну из записей, а у нас около 100+ таблиц (каждый месяц мы создаем еще 4 таблицы, не спрашивайте!). Как мне это улучшить, т.е. уменьшить размер файла?


ну … Слушайте @Larry и помните, что в долгосрочной перспективе вам придется найти другую базу данных для хранения ваших данных!

Но в краткосрочной перспективе меня очень беспокоит эта вещь «4 новых стола в месяц». 4 таблицы в месяц — это 50 в год … Это определенно звучит странно для каждого «менеджера баз данных» здесь. Итак, расскажите нам: сколько строк, как они построены, для чего они нужны и почему вам нужно создавать таблицы каждый месяц?

В зависимости от того, что вы делаете со своими данными, вы также можно подумать об архивировании некоторых таблиц в виде файлов XML (или даже XLS?). Это может иметь смысл для «исторических» данных, к которым нет необходимости обращаться через отношения, представления и т. Д. Хорошим примером может служить список телефонных звонков, собранный из УАТС. Данные могут быть сохранены/загружены из файлов XML/XLS с помощью наборов записей ADODB или метода transferDatabase


5

Вы можете сделать две вещи:

  • использовать связанные таблицы
  • «сжать» базу данных ( s) время от времени.

Связанные таблицы сами по себе не будут ограничивать общий размер базы данных, но они будут «упаковывать» ее в более мелкие, более управляемые файлы. Чтобы заглянуть в это:

 Меню «Файл» + «Получить внешние данные» + «Связанные таблицы» 

Связанные таблицы также имеют много преимуществ. например, позволяя сохранять несколько версий подмножества данных и выбирая конкретный набор с помощью связанного менеджера таблиц.

Сжатие баз данных освобождает пространство, которое в противном случае терялось в виде различных операций CRUD (Insert, Delete, Update …) фрагментировать хранилище. Он также перегруппирует таблицы и индексы, делая поиск более эффективным. Это делается с помощью

 меню «Инструменты» + «Утилиты базы данных» + «Сжать и восстановить базу данных ..». '

Улучшите это ответ
изменен 06 окт. в 17:03
ответил 06 октября 2009 г. в 16:49
  • 1
    @ aZn137 Отсутствие уменьшения размера после сжатия базы данных может быть либо результатом чрезмерно фрагментированной таблицы (я видел это), либо нормальным явлением, если операции CRUD во время время жизни базы данных было таким, что она не приводила к значительной фрагментации. Перезагрузка данных в новую базу данных (и, возможно, в отдельные, например связанные таблицы) может быть единственным способом «исправить» базу данных, которую иначе «не сжимать». Делайте копии оригинала, хотя бы для защиты от опечаток и других ошибок, вызванных деятельностью человека, не говоря уже о «взломах» MS-Access. — mjv 06 окт., 09:37
добавить комментарий |

Вы можете сделать две вещи:

  • использовать связанные таблицы
  • «сжимать» базы данных время от времени

Сами по себе связанные таблицы не будут ограничивать общий размер базы данных, но будут » упаковать «его в более мелкие и удобные файлы. Чтобы заглянуть в это:

 Меню «Файл» + «Получить внешние данные» + «Связанные таблицы» 

Связанные таблицы также имеют много преимуществ. например, позволяя сохранять несколько версий подмножества данных и выбирая конкретный набор с помощью связанного менеджера таблиц.

Сжатие баз данных освобождает пространство, которое в противном случае терялось в виде различных операций CRUD (Insert, Delete, Update …) фрагментировать хранилище. Он также перегруппирует таблицы и индексы, делая поиск более эффективным. Это делается с помощью

 меню «Инструменты» + «Утилиты базы данных» + «Сжать и восстановить базу данных ...» 

3

Вы действительно выходите за рамки MS Access — знаете ли вы, что файл не может расти? больше 2 ГБ?

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

Но с таким объемом данных, вероятно, пора начать планировать переход на более емкую платформу.

Улучшите этот ответ
ответил 06 окт., 17:09
  • +1 за хороший совет, но из описания ясно, что схема спроектирована совершенно неправильно — добавление 20 новых таблиц каждый месяц — бесполезная распродажа! Хотя увеличение размера позволит избежать жесткого ограничения Jet/ACE в 2 ГБ, оно не решит основную проблему, заключающуюся в том, что конструкция просто НЕПРАВИЛЬНА. — Дэвид-У-Фентон, 7 окт., 09:09
добавить комментарий |

Вы действительно наталкиваетесь на ограничения MS Access — знаете ли вы, что размер файла не может превышать 2 ГБ ?

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

Но с таким объемом данных, вероятно, пора начать планировать переход на более емкую платформу.


1

Вам действительно стоит подумать о своей архитектуре БД. Если между таблицами нет никаких связей, вы можете попытаться переместить некоторые из них в другую базу данных (один db в год 🙂 в качестве краткосрочного решения.

Улучшить этот ответ
ответил 06 октября 2009 в 16:50
добавить комментарий |

Вам действительно стоит подумать об архитектуре вашей БД. Если между таблицами нет никаких связей, вы можете попытаться переместить некоторые из них в другую базу данных (один db в год 🙂 в качестве краткосрочного решения.


1

Пара идей «хвататься за соломинку»

Посмотрите на типов данных для каждого столбца, вы можете сохранить некоторые числа в виде байтов, сэкономив небольшое количество на запись

Посмотрите на индексы и избавьтесь от тех, которые вы не используете. В больших таблицах ненужные индексы могут увеличить накладные расходы..

Я хотел бы + 2 ^ 64, чтобы предложения по поводу дизайна базы данных были немного странными, но ничего, что еще не было сказано, поэтому я не буду вдаваться в подробности

Улучшите этот ответ
ответил 07 окт. 2009 в 07:34
добавить комментарий |

Пара идей «хвататься за соломинку»

Посмотрите на типы данных для каждого столбца, вы может иметь возможность хранить некоторые числа в виде байтов, экономя небольшое количество на запись

Посмотрите на индексы и избавьтесь от тех, которые вы не используете. В больших таблицах ненужные индексы могут привести к большим накладным расходам.

Я бы добавил + 2 ^ 64, что предложения по дизайну базы данных выглядят немного странно, но ничего, что еще не было сказано, поэтому я не буду обработайте точку


0

Добавление дополнительных таблиц каждые месяц: это уже сомнительное отношение и кажется подозрительным в отношении нормализации данных.
Если вы это сделаете, я подозреваю, что ваша структура базы данных также неоптимальна в отношении размеров полей, типов данных и индексов. Я бы действительно начал с двойной проверки.

Если у вас действительно есть обоснование для ежемесячных таблиц (что я снова не могу себе представить), почему бы не иметь 1 серверную часть в месяц? Вы также можете иметь на основной back- в конце, скажем, 3 месяца данных в сети, а затем архивная база данных, куда вы переносите свои старые записи.
Я использую это для транзакций, при этом основная таблица имеет около 650 000 записей, а доступ очень отзывчивый.

Улучшите этот ответ
ответил 06 окт., 21:21
  • Если db — это тот, на который вы ссылаетесь в своем вопросе о ссылочной целостности, я не удивлен, что у вас есть проблемы. Его дизайн — беспорядок. — Патрик Онорез, 06 окт., 21:27
  • Я попытался разделить базу данных, это заняло почти 2 часа, а затем выдала ошибку: «Превышено максимальное количество блокировок» или какой-то мусор … — Тэм Н. 6 окт. 2009 в 22:01
  • Полученное вами сообщение об ошибке должно также предоставит вам ссылку HELP, которая приведет вас к инструкциям по изменению раздела реестра, который позволяет вам выполнить максимальное количество блокировок. — Дэвид-У-Фентон, 7 октября 2009 г., 3:00
  • Для разделения попробуйте следующее: скопируйте базу данных на локальный диск (и сообщите пользователям, что она недоступна), а затем выполните свои действия в эксклюзивном режиме на локальном диске. После этого скопируйте его обратно на сервер. — Патрик Онорез, 7 окт., 14:52
  • Я попытался изменить реестр (до 20 000). на этот раз он просто замерз. сообщения об ошибке нет, но и прогресса нет. — Тэм Н. 09 окт., 17:13
добавить комментарий |

Добавление новых таблиц каждый месяц: это уже сомнительное отношение и кажется подозрительным в отношении нормализации данных.
Если да, Я подозреваю, что структура вашей базы данных также неоптимальна в отношении размеров полей, типов данных и индексов. Я бы действительно начал с двойной проверки.

Если у вас действительно есть обоснование для ежемесячных таблиц (что я снова не могу себе представить), почему бы не иметь 1 серверную часть в месяц? Вы также можете иметь на основной back- в конце, скажем, 3 месяца данных в сети, а затем архивная база данных, куда вы переносите свои старые записи.
Я использую это для транзакций, при этом основная таблица имеет около 650 000 записей, а доступ очень отзывчивый.



Необходимо уменьшить размер БД доступа после удаления записей

Управление данными
MS Access
0

Уважаемые помощники,

У меня есть один вопрос: я разработал базу данных Access, и после использования ее размер увеличился до 100 МБ. Итак, после этого я хочу обновить его и удалить все записи, но после этого его размер был таким же, как 100 МБ. Я предполагал, что после удаления записей размер БД уменьшится. Пожалуйста, обновите меня. Я хочу уменьшить его размер после удаления записей, как я могу это сделать?

С уважением,
Салман

Пожалуйста, войдите, чтобы добавить закладку

4 ответа

  • Активные
  • Проголосовали
  • Новые
  • Самые старые
0

Салман,

Вы можете попробовать «Сжать и восстановить».

Вы попадаете в него через символ «Офис» в левом верхнем углу, затем
«Управление».

Дэвид.

0

Инструменты, утилиты для работы с базами данных, сжатие и восстановление. Также вы можете использовать параметры, общую вкладку, сжатие при закрытии

0

Салман,
Как и большинство систем баз данных, Access отделяет процесс освобождения места от процесса удаления записи.
Вы должны использовать инструмент «Сжать и восстановить базу данных» (из инструментов базы данных вкладка ленты или меню «Утилиты базы данных», в зависимости от вашей версии Access), чтобы освободить место в файле базы данных.

Майкл С. Мейерс-Жуан

0

Привет, Салман. Вы пробовали сжать/восстановить базу данных? В зависимости от
версии MS Access, которая у вас есть, для 2007, перейдите в Windows Button ->
Управление -> Сжать и восстановить базу данных.

Kristi

Зарегистрируйтесь или войдите

Связанные

Влияют ли эти 5 проблем аналитики данных на ваш бизнес?
Инструменты управления данными Microsoft Intros, Lenovo ускоряет аналитику с помощью массива хранения All-Flash
3 основных проблемы данных, с которыми столкнулись компании в 2020 году
Зачем современным базам данных нужны возможности единого хранилища
6 шагов Чтобы стать управляемым данными с меньшим количеством ресурсов

Уважаемые помощники,

У меня есть один вопрос, что я разработал базу данных Access и после использования ее размер увеличился до 100 МБ. Итак, после этого я хочу обновить его и удалить все записи, но после этого его размер был таким же, как 100 МБ.. Я предполагал, что после удаления записей размер БД уменьшится. Пожалуйста, обновите меня, я хочу уменьшить его размер после удаления записей, как я могу это сделать?

С уважением,
Салман

Пожалуйста, войдите, чтобы добавить закладку

0

Салман,

Вы можете попробовать «Компактный и Ремонт ».

Вы попадаете в него через символ« Офис »в левом верхнем углу, затем
« Управление ».

Дэвид.


Салман,

Вы можете попробовать «Сжать и восстановить».

Вы можете перейти к нему через символ «Офис» в левом верхнем углу. угол руки, затем
«Управление».

Дэвид.


0

Инструменты, утилиты баз данных, сжатие и восстановление. Также вы можете использовать параметры, общую вкладку, компактный при закрытии


Инструменты, утилиты баз данных, компактность и восстановление. Также вы можете использовать параметры, общую вкладку, компактный при закрытии


0

Салман,
Как и большинство систем баз данных, Access отделяет процесс освобождения места от процесса удаления записи.
Вы должны использовать инструмент «Сжать и восстановить базу данных» (из вкладки ленты «Инструменты базы данных» или меню «Утилиты базы данных» (в зависимости от вашей версии Access), чтобы освободить место в файле базы данных.

Майкл С. Мейерс-Жуан


Салман,
Как и большинство систем баз данных, Access отделяет процесс освобождения места от процесса удаления записи.
Вы должны использовать инструмент «Сжать и восстановить базу данных» (на вкладке ленты «Инструменты базы данных» или в меню «Утилиты базы данных», в зависимости от вашей версии Access), чтобы освободить место в файле базы данных.

Майкл С. Мейерс-Жуан


0

Привет, Салман. Вы пробовали сжать/восстановить базу данных? В зависимости от
версии MS Access, которая у вас есть, для 2007, перейдите в Windows Button ->
Управление -> Сжать и восстановить базу данных.

Kristi


Привет, Салман — Вы пробовали сжать/восстановить базу данных? В зависимости от
версии MS Access, которая у вас есть, для 2007, перейдите в Windows Button ->
Управление -> Сжать и восстановить базу данных.

Kristi

Оцените статью
logicle.ru
Добавить комментарий