Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.041 c
14-1082760681
Suntechnic
2004-04-24 02:51
2004.05.16
Daddy, why did we have to attack Iraq?


1-1083509511
Pensioner
2004-05-02 18:51
2004.05.16
GetCurrentDir, а может что нибудь другое


14-1082805073
ctranik
2004-04-24 15:11
2004.05.16
Ув. мастера подскажите как работать с MSDN


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


1-1083670457
Alkmas
2004-05-04 15:34
2004.05.16
FindClass из DLL





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский