powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Накапливается мусор select count(*) не помогает
25 сообщений из 111, страница 1 из 5
Накапливается мусор select count(*) не помогает
    #38713566
fedorov2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Происходит разбухание базы. Делаем так:
1. Вставляем в таблицу большое количество записей - размер базы естественно увеличивается на несколько мегабайт
2. Большая часть эти вставленных записей удаляем - размер базы без изменений
3. Вставляем еще несколько тыс. записей - размер базы еще сильнее увеличился
4. Удаляем все вставленные записи - размер базы без изменений
5. Делаем select (*) from my_table для очистки накопленного мусора, размер базы не уменьшается.

Что делать, как очистить базу от мусора и почему select count(*) не чистит?


p.s. Помогает только backup/restore, но это не годится
...
Рейтинг: 0 / 0
Накапливается мусор select count(*) не помогает
    #38713577
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedorov2012,дяденька,ты Firebird с MS SQL путаешь, FB при уборке мусора размер базы не уменьшает. После select (*) from my_table сделай ещё раз добавление данных - размер базы не должен увеличится (хотя могу ошибаться и тут нужен sweep, а не простая уборка).
...
Рейтинг: 0 / 0
Накапливается мусор select count(*) не помогает
    #38713585
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedorov2012
p.s. Помогает только backup/restore, но это не годится
Чем не годится? Кстати,зачем гонишься за уменьшением размера файла базы?
Проблемы производительности с размером слабо связаны.
...
Рейтинг: 0 / 0
Накапливается мусор select count(*) не помогает
    #38713708
fedorov2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Gallemarfedorov2012
p.s. Помогает только backup/restore, но это не годится
Чем не годится? Кстати,зачем гонишься за уменьшением размера файла базы?
Проблемы производительности с размером слабо связаны.
Не годится тем, что приведенный пример вставка/удаления это результат работы при выполнении одной из функции в программе, который пользователь может использовать не редко. Поэтому хотелось бы, чтобы программа сама подчистили мусор в БД после выполнения этой операции. Глупо будет, если пользователю после каждого такого действия предлагать - а теперь сделайте backup/restore (особенно, если БД в сети).
Не пойму почему select count (*) не помогает?
...
Рейтинг: 0 / 0
Накапливается мусор select count(*) не помогает
    #38713713
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedorov2012,

Начните с того, что почитайте, что же такое "мусор". А то может и нет его в вашей БД.
И сам по себе select count(*) мусор не убирает - ему для этого выполнение некоторых условий нужно.
В вашем списке нужно:
6) вставка ещё несколько тыс. записей.
если размер БД не меняется (скорее всего), то и нет никакого "мусора".

И ещё. Размер базы не уменьшается никогда.

(рестор есть создание новой базы)
...
Рейтинг: 0 / 0
Накапливается мусор select count(*) не помогает
    #38713714
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedorov2012,

Ответьте на вопросы
1. Версия FB
2. В какой архитектуре установлено
3. Что установлено в firebird.conf в параметре GCPolicy

select count (*) может удалить мусор только после того как транзакция создавшая его завершена. select count (*) должен быть стартован в новой транзакции

Во время сборки мусора размер БД не уменьшается, но место которое занимали мусорные записи могут быть использованы повторно.
...
Рейтинг: 0 / 0
Накапливается мусор select count(*) не помогает
    #38713726
fedorov2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кстати select count(*) лучше делать в отдельной транзакции или в той же, что и вставка/удаление (т.е. в транзакции, которая используется на шаге 3-4 см.топик)

Симонов Денис1. Версия FB
FB 2.5
Симонов Денис2. В какой архитектуре установлено
Win Server 2008 SP2, 64 битный
Симонов Денис3. Что установлено в firebird.conf в параметре GCPolicy
написано так: #GCPolicy = combined т.е. как понимаю этот параметр закомментирован
...
Рейтинг: 0 / 0
Накапливается мусор select count(*) не помогает
    #38713756
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисselect count (*) может удалить мусор только после того как транзакция создавшая его завершена. select count (*) должен быть стартован в новой транзакцииИ не должно быть ни одной другой транзакции заинтересованной в удаленных данных. Пока есть интерес у транзакций, это не мусор, а версии.
...
Рейтинг: 0 / 0
Накапливается мусор select count(*) не помогает
    #38713761
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedorov2012,

под архитектурой я понимал архитектуру FB SS/CS/SC
...
Рейтинг: 0 / 0
Накапливается мусор select count(*) не помогает
    #38713765
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedorov2012Кстати select count(*) лучше делать в отдельной транзакции или в той же, что и вставка/удаление (т.е. в транзакции, которая используется на шаге 3-4 см.топик)
в отдельной
...
Рейтинг: 0 / 0
Накапливается мусор select count(*) не помогает
    #38713766
fedorov2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ivan_PisarevskyПока есть интерес у транзакций, это не мусор, а версии.
Т.е. в отдельной транзакции после того как завершится транзакция из шага 3-4 топика?
...
Рейтинг: 0 / 0
Накапливается мусор select count(*) не помогает
    #38713769
fedorov2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денисв отдельной
Спасибо, с транзакциями разобрались. Но почему БД не уменьшается после select count(*) - криво проходит чистка или что?
...
Рейтинг: 0 / 0
Накапливается мусор select count(*) не помогает
    #38713773
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedorov2012Т.е. в отдельной транзакции после того как завершится транзакция из шага 3-4 топика?после того как завершатся все транзакция стартовавшие до(во время) шага 3-4.
поправел.
...
Рейтинг: 0 / 0
Накапливается мусор select count(*) не помогает
    #38713775
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Fedorov2012!
You wrote on 6 августа 2014 г. 10:49:58:

Fedorov2012> Но почему БД не уменьшается
а должна?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Накапливается мусор select count(*) не помогает
    #38713777
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedorov2012,

потому что уменьшение размера нафиг не нужно. Если мусор почистился то, пространство занимаемой им может быть использовано повторно
...
Рейтинг: 0 / 0
Накапливается мусор select count(*) не помогает
    #38713780
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedorov2012Но почему БД не уменьшаетсяБД не уменьшается НИКОГДА.
...
Рейтинг: 0 / 0
Накапливается мусор select count(*) не помогает
    #38713785
fedorov2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ivan_Pisarevskyfedorov2012Т.е. в отдельной транзакции после того как завершится транзакция из шага 3-4 топика?после того как завершатся все транзакция стартовавшие до(во время) шага 3-4.
поправел.
И даже те, которые к таблицы my_table не имеют отношения?
...
Рейтинг: 0 / 0
Накапливается мусор select count(*) не помогает
    #38713787
fedorov2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денисfedorov2012,

под архитектурой я понимал архитектуру FB SS/CS/SC
Super Server
...
Рейтинг: 0 / 0
Накапливается мусор select count(*) не помогает
    #38713790
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedorov2012И даже те, которые к таблицы my_table не имеют отношения?Для твоего уровня лучше считать, что все.
...
Рейтинг: 0 / 0
Накапливается мусор select count(*) не помогает
    #38713801
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedorov2012И даже те, которые к таблицы my_table не имеют отношения?
нет конечно. Даже больше скажу только те, что используют те записи которые ты удаляешь.

Стоит почитать develop весь раздел "Транзакции, архитектура InterBase/Firebird - Обязательное чтение"
...
Рейтинг: 0 / 0
Накапливается мусор select count(*) не помогает
    #38713803
fedorov2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fedorov2012после того как завершатся все транзакция стартовавшие до(во время) шага 3-4.
поправел.
И даже те, которые к таблицы my_table не имеют отношения?[/quot]
На момент вставки/удаления записей в my_table (через транзакцию myTranForMyTable) у меня существуют параллельные транзакции, но они не имеют отношения к таблице my_table.
В этом случае достаточно ли очистки мусора из my_table:
myTranForMyTable.Commit;
select count(*) from my_table выполняем через транзакцию myTranForClearGarbage

или же нужно ждать commit'a параллельных транзакций, не имеющие отношения к my_table?
...
Рейтинг: 0 / 0
Накапливается мусор select count(*) не помогает
    #38713807
fedorov2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Дениснет конечно. Даже больше скажу только те, что используют те записи которые ты удаляешь.

Ок, спасибо
...
Рейтинг: 0 / 0
Накапливается мусор select count(*) не помогает
    #38713810
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Дениснет конечно. Даже больше скажу только те, что используют те записи которые ты удаляешь.Не путай народ. Транзакции бывают не только ридкоммитед, но и снапшот. Если я стартовал снапшот раньше, то меня не волнует более ничего, что творится с базой, вынь да положь мне консистентные данные.
...
Рейтинг: 0 / 0
Накапливается мусор select count(*) не помогает
    #38713816
fedorov2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ivan_PisarevskyСимонов Дениснет конечно. Даже больше скажу только те, что используют те записи которые ты удаляешь.Не путай народ. Транзакции бывают не только ридкоммитед, но и снапшот. Если я стартовал снапшот раньше, то меня не волнует более ничего, что творится с базой, вынь да положь мне консистентные данные.
пользуюсь в основном read_committed, создаю транзакции, как правило, вот с такими параметрами
read_committed
rec_version
nowait
...
Рейтинг: 0 / 0
Накапливается мусор select count(*) не помогает
    #38713831
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedorov2012> пользуюсь в основном

Не "пользуйся".
Не пиши.
Читай.
Начни с книг или ibase.ru.

Когда прочитаешь и усвоишь азы (там немного),
если останутся вопросы - возвращайся, спрашивай.
А учить азы по форуму да ещё галопом - плохая идея.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25 сообщений из 111, страница 1 из 5
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Накапливается мусор select count(*) не помогает
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]