|
|
|
Накапливается мусор select count(*) не помогает
|
|||
|---|---|---|---|
|
#18+
Происходит разбухание базы. Делаем так: 1. Вставляем в таблицу большое количество записей - размер базы естественно увеличивается на несколько мегабайт 2. Большая часть эти вставленных записей удаляем - размер базы без изменений 3. Вставляем еще несколько тыс. записей - размер базы еще сильнее увеличился 4. Удаляем все вставленные записи - размер базы без изменений 5. Делаем select (*) from my_table для очистки накопленного мусора, размер базы не уменьшается. Что делать, как очистить базу от мусора и почему select count(*) не чистит? p.s. Помогает только backup/restore, но это не годится ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2014, 02:00 |
|
||
|
Накапливается мусор select count(*) не помогает
|
|||
|---|---|---|---|
|
#18+
fedorov2012,дяденька,ты Firebird с MS SQL путаешь, FB при уборке мусора размер базы не уменьшает. После select (*) from my_table сделай ещё раз добавление данных - размер базы не должен увеличится (хотя могу ошибаться и тут нужен sweep, а не простая уборка). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2014, 04:05 |
|
||
|
Накапливается мусор select count(*) не помогает
|
|||
|---|---|---|---|
|
#18+
fedorov2012 p.s. Помогает только backup/restore, но это не годится Чем не годится? Кстати,зачем гонишься за уменьшением размера файла базы? Проблемы производительности с размером слабо связаны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2014, 05:45 |
|
||
|
Накапливается мусор select count(*) не помогает
|
|||
|---|---|---|---|
|
#18+
Gallemarfedorov2012 p.s. Помогает только backup/restore, но это не годится Чем не годится? Кстати,зачем гонишься за уменьшением размера файла базы? Проблемы производительности с размером слабо связаны. Не годится тем, что приведенный пример вставка/удаления это результат работы при выполнении одной из функции в программе, который пользователь может использовать не редко. Поэтому хотелось бы, чтобы программа сама подчистили мусор в БД после выполнения этой операции. Глупо будет, если пользователю после каждого такого действия предлагать - а теперь сделайте backup/restore (особенно, если БД в сети). Не пойму почему select count (*) не помогает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2014, 09:59 |
|
||
|
Накапливается мусор select count(*) не помогает
|
|||
|---|---|---|---|
|
#18+
fedorov2012, Начните с того, что почитайте, что же такое "мусор". А то может и нет его в вашей БД. И сам по себе select count(*) мусор не убирает - ему для этого выполнение некоторых условий нужно. В вашем списке нужно: 6) вставка ещё несколько тыс. записей. если размер БД не меняется (скорее всего), то и нет никакого "мусора". И ещё. Размер базы не уменьшается никогда. (рестор есть создание новой базы) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2014, 10:06 |
|
||
|
Накапливается мусор select count(*) не помогает
|
|||
|---|---|---|---|
|
#18+
fedorov2012, Ответьте на вопросы 1. Версия FB 2. В какой архитектуре установлено 3. Что установлено в firebird.conf в параметре GCPolicy select count (*) может удалить мусор только после того как транзакция создавшая его завершена. select count (*) должен быть стартован в новой транзакции Во время сборки мусора размер БД не уменьшается, но место которое занимали мусорные записи могут быть использованы повторно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2014, 10:07 |
|
||
|
Накапливается мусор select count(*) не помогает
|
|||
|---|---|---|---|
|
#18+
Кстати select count(*) лучше делать в отдельной транзакции или в той же, что и вставка/удаление (т.е. в транзакции, которая используется на шаге 3-4 см.топик) Симонов Денис1. Версия FB FB 2.5 Симонов Денис2. В какой архитектуре установлено Win Server 2008 SP2, 64 битный Симонов Денис3. Что установлено в firebird.conf в параметре GCPolicy написано так: #GCPolicy = combined т.е. как понимаю этот параметр закомментирован ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2014, 10:15 |
|
||
|
Накапливается мусор select count(*) не помогает
|
|||
|---|---|---|---|
|
#18+
Симонов Денисselect count (*) может удалить мусор только после того как транзакция создавшая его завершена. select count (*) должен быть стартован в новой транзакцииИ не должно быть ни одной другой транзакции заинтересованной в удаленных данных. Пока есть интерес у транзакций, это не мусор, а версии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2014, 10:45 |
|
||
|
Накапливается мусор select count(*) не помогает
|
|||
|---|---|---|---|
|
#18+
fedorov2012, под архитектурой я понимал архитектуру FB SS/CS/SC ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2014, 10:47 |
|
||
|
Накапливается мусор select count(*) не помогает
|
|||
|---|---|---|---|
|
#18+
fedorov2012Кстати select count(*) лучше делать в отдельной транзакции или в той же, что и вставка/удаление (т.е. в транзакции, которая используется на шаге 3-4 см.топик) в отдельной ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2014, 10:48 |
|
||
|
Накапливается мусор select count(*) не помогает
|
|||
|---|---|---|---|
|
#18+
Ivan_PisarevskyПока есть интерес у транзакций, это не мусор, а версии. Т.е. в отдельной транзакции после того как завершится транзакция из шага 3-4 топика? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2014, 10:49 |
|
||
|
Накапливается мусор select count(*) не помогает
|
|||
|---|---|---|---|
|
#18+
Симонов Денисв отдельной Спасибо, с транзакциями разобрались. Но почему БД не уменьшается после select count(*) - криво проходит чистка или что? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2014, 10:50 |
|
||
|
Накапливается мусор select count(*) не помогает
|
|||
|---|---|---|---|
|
#18+
fedorov2012Т.е. в отдельной транзакции после того как завершится транзакция из шага 3-4 топика?после того как завершатся все транзакция стартовавшие до(во время) шага 3-4. поправел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2014, 10:50 |
|
||
|
Накапливается мусор select count(*) не помогает
|
|||
|---|---|---|---|
|
#18+
Hello, Fedorov2012! You wrote on 6 августа 2014 г. 10:49:58: Fedorov2012> Но почему БД не уменьшается а должна? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2014, 10:51 |
|
||
|
Накапливается мусор select count(*) не помогает
|
|||
|---|---|---|---|
|
#18+
fedorov2012, потому что уменьшение размера нафиг не нужно. Если мусор почистился то, пространство занимаемой им может быть использовано повторно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2014, 10:51 |
|
||
|
Накапливается мусор select count(*) не помогает
|
|||
|---|---|---|---|
|
#18+
fedorov2012Но почему БД не уменьшаетсяБД не уменьшается НИКОГДА. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2014, 10:52 |
|
||
|
Накапливается мусор select count(*) не помогает
|
|||
|---|---|---|---|
|
#18+
Ivan_Pisarevskyfedorov2012Т.е. в отдельной транзакции после того как завершится транзакция из шага 3-4 топика?после того как завершатся все транзакция стартовавшие до(во время) шага 3-4. поправел. И даже те, которые к таблицы my_table не имеют отношения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2014, 10:55 |
|
||
|
Накапливается мусор select count(*) не помогает
|
|||
|---|---|---|---|
|
#18+
Симонов Денисfedorov2012, под архитектурой я понимал архитектуру FB SS/CS/SC Super Server ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2014, 10:56 |
|
||
|
Накапливается мусор select count(*) не помогает
|
|||
|---|---|---|---|
|
#18+
fedorov2012И даже те, которые к таблицы my_table не имеют отношения?Для твоего уровня лучше считать, что все. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2014, 10:58 |
|
||
|
Накапливается мусор select count(*) не помогает
|
|||
|---|---|---|---|
|
#18+
fedorov2012И даже те, которые к таблицы my_table не имеют отношения? нет конечно. Даже больше скажу только те, что используют те записи которые ты удаляешь. Стоит почитать develop весь раздел "Транзакции, архитектура InterBase/Firebird - Обязательное чтение" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2014, 11:01 |
|
||
|
Накапливается мусор select count(*) не помогает
|
|||
|---|---|---|---|
|
#18+
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? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2014, 11:03 |
|
||
|
Накапливается мусор select count(*) не помогает
|
|||
|---|---|---|---|
|
#18+
Симонов Дениснет конечно. Даже больше скажу только те, что используют те записи которые ты удаляешь. Ок, спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2014, 11:04 |
|
||
|
Накапливается мусор select count(*) не помогает
|
|||
|---|---|---|---|
|
#18+
Симонов Дениснет конечно. Даже больше скажу только те, что используют те записи которые ты удаляешь.Не путай народ. Транзакции бывают не только ридкоммитед, но и снапшот. Если я стартовал снапшот раньше, то меня не волнует более ничего, что творится с базой, вынь да положь мне консистентные данные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2014, 11:09 |
|
||
|
Накапливается мусор select count(*) не помогает
|
|||
|---|---|---|---|
|
#18+
Ivan_PisarevskyСимонов Дениснет конечно. Даже больше скажу только те, что используют те записи которые ты удаляешь.Не путай народ. Транзакции бывают не только ридкоммитед, но и снапшот. Если я стартовал снапшот раньше, то меня не волнует более ничего, что творится с базой, вынь да положь мне консистентные данные. пользуюсь в основном read_committed, создаю транзакции, как правило, вот с такими параметрами read_committed rec_version nowait ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2014, 11:12 |
|
||
|
Накапливается мусор select count(*) не помогает
|
|||
|---|---|---|---|
|
#18+
fedorov2012> пользуюсь в основном Не "пользуйся". Не пиши. Читай. Начни с книг или ibase.ru. Когда прочитаешь и усвоишь азы (там немного), если останутся вопросы - возвращайся, спрашивай. А учить азы по форуму да ещё галопом - плохая идея. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2014, 11:23 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=38713708&tid=1563404]: |
0ms |
get settings: |
5ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
31ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 209ms |
| total: | 326ms |

| 0 / 0 |
