Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.16;
Скачать: CL | DM;

Вниз

База не меняет размер...   Найти похожие ветки 

 
3APA3A ©   (2004-04-14 23:20) [0]

FireBird 1.5.ххх
 В базе одна таблица, в ней порядка 2000000 записей, занимает около 125 Мб...
 после выполнения запроса

 IBQuery1.SQL.Text := "delete from table1";
 IBQuery1.ExecSQL;
 
 1) запрос выполнялся около 5 минут
 2) размер самой базы увеличился до 141 Мб
 3) записей в таблице не осталось, то есть запрос выполнился верно...
 Помогите разобраться...


 
Jack128 ©   (2004-04-14 23:37) [1]

База в Ib не может уменьшиться в размерах, только увеличить..При удалении записи только помечаются как удаленные, но физически не удаляются из базы. Сделай Backup/Restore и будет тебе счастье.


 
bds   (2004-04-15 11:04) [2]

Уточнение. Страницы БД, занятые данными, помечаются как неиспользуемые, а не сами записи. При добавлении записей на эти страницы поверх старых данных будут писаться новые. Размер же действительно измениться только после Backup/Restore.


 
LaidBack   (2004-04-15 11:07) [3]


>  2) размер самой базы увеличился до 141 Мб


Увеличился из-за добавления записей в журнал транзакций + изменение списка свободных страниц.


 
3APA3A ©   (2004-04-15 22:23) [4]

Со страницами для данных понятно...
А для транзакций - СУБД выделяет страницы, использует их, а потом, не удаляет а тоже помечает как неиспользуемые?


 
Jack128 ©   (2004-04-15 22:27) [5]


> Уточнение. Страницы БД, занятые данными, помечаются как
> неиспользуемые, а не сами записи
Вот какой вопрос: например я удалил одну запись, а на этой странице, кроме этой записи еще десяток. Как сервер узнает, что эта запись удалена, а другие нет??


 
bds   (2004-04-16 11:14) [6]

Внутри базы есть Pointer-page - страницы указателей на данные и
Data-page - страницы данных.  Данные расположены на Data-page.
У каждого блока данные на Data-page есть 2 флага:
Old version (версия актуальна для какой либо транзакции) и
Dead record (блок данных удален (не используется))..
При удалении выставляется Dead record и все. Сервер "видя" Dead record может использовать это место для новых данных.
Для транзакций - страницы не выделяются (зачем?). Есть счетчик транзакций + номер последней заинтересованной транзакции (хранятся в заголовке БД - header-page). Страницы выделяюся только под данные, указатели и индексы (index page и index B-tree page).



Страницы: 1 вся ветка

Текущий архив: 2004.05.16;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.023 c
1-1082978014
TEXHAPb
2004-04-26 15:13
2004.05.16
Как настроить среду Делфи?


14-1082977640
Малой
2004-04-26 15:07
2004.05.16
Приветствие


3-1082433154
SerKom
2004-04-20 07:52
2004.05.16
Тип объекта неизвестен, а имя свойство точно известно


14-1083052292
Slon_SCG
2004-04-27 11:51
2004.05.16
Автоматическое восстановление БД InterBase после сбоя


1-1083512222
novill
2004-05-02 19:37
2004.05.16
Уважаемые мастаки, подскажите как внутри функции узнать ее имя?