На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! информация о разделе
user posted imageДанный раздел предназначается исключительно для обсуждения вопросов использования языка запросов SQL. Обсуждение общих вопросов, связанных с тематикой баз данных - обсуждаем в разделе "Базы данных: общие вопросы". Убедительная просьба - соблюдать "Правила форума" и не пренебрегать "Правильным оформлением своих тем". Прежде, чем создавать тему, имеет смысл заглянуть в раздел "Базы данных: FAQ", возможно там уже есть ответ.

Модераторы: Akina
  
> Очистка базы данных InterBase
    Вот такой трабл: в базе данных interbase заполняю данные в таблице, база пухнет в размерах, потом удаляю все данные, а размер базы остаётся большим и толстым. Я знаю, что там есть какая то утилита, но можно ли как то это исправить программным способом (Delphi или C++Builder) ?
      Этот вопрос уже обсуждался, как  физически удалить записи отмеченные как удаленные. Правда не помню для какой СУБД. Посмотри через поиск!!!
        Зачастую серверные базы данных "распухают" из-за роста transaction log. Посмотрите свойства базы данных...
          Ну вот, "поищи ещё", логи распухают. Так ничего и не подсказали :(
            Никаких логов в IB нет :)
            И в чем проблема? Ну растет файл, что такого? Сервер БД не обязан и не будет сжимать базу, зачем? все равно место понадобится.
            Убрать неиспользуемые страницы в базе IB можно только сделав backup и затем restore - база станет минимального размера.
              Цитата Romkin, 10.06.03, 11:35:31
              Никаких логов в IB нет :)


              Я согласен с Станиславским: "Не верю!" Так, как если нет transaction log то невозможны откаты транзакций, а это то что есть во всех сколь-нибудь значительных базах данных, он может быть организован не столь явно как в MS SQL Server, но то что он есть я уверен на 100\%, иначе я даже представить себе не могу как может быть организована целостность данных и квантование транзакций.
                http://www.ibase.ru/devinfo/oitoat.htm
                http://www.ibase.ru/devinfo/versions.htm

                Если версии записей называть логом - тогда конечно. Вот только назвать это так ну никак нельзя, вкратце механизм прост:
                если транзакция изменяет запись, она просто создает новую версию этой записи. Остальные транзакции просто смотрят на версии записей (состояние и номер транзакции), и таблицу транзакций. При откате версия записи помечается как ненужная.
                Таким образом, как такового лога нет, есть версии изменений, разбросанные по страницам БД.

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

                На самом деле все немного сложнее, конечно, например, размер БД может и не расти, обычно страницы заполнены не полностью, и на них есть место для новых версий, и тд...
                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                0 пользователей:


                Рейтинг@Mail.ru
                [ Script execution time: 0,0239 ]   [ 15 queries used ]   [ Generated: 3.05.24, 03:20 GMT ]