Можно ли упаковать базу после DROP TABLE?

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

Ответить
Aleksandr.
Сообщения: 63
Зарегистрирован: 18 май 2005, 19:13

Можно ли упаковать базу после DROP TABLE?

Сообщение Aleksandr. » 18 май 2005, 19:26

Мы совсем недавно решили перейти (с Парадокса!) на FB 1.5 (embedded), поэтому я многое истчо не знаю, прошу не пинать :roll:

Программа, использующая FB, периодически получает по tcp xml-таблицы, которые ей необходимо переконвертировать в соответствующие таблицы базы. При этом может измениться и структура таблицы, или таблица вообще удалиться за ненадобностью. Решение выглядит простым - сначала DROP TABLE, а затем CREATE TABLE. Но возникают два вопроса:
1. Где-то я слышал, что после DROP TABLE размеры DB не уменьшаются, поэтому интенсивное использование такого механизма приведет к усиленному росту файла базы. Можно ли как-то по завершении DROP TABLE - CREATE TABLE программным путем ужать базу, чтобы она освободила пространство удаленной таблицы?
2. И нужно ли индивидуально вызывать дроп для индексов и первичных ключей, или они сами удалятся вместе с таблицей?

Просто не хочется зарабатывать гемморой сверкой по полям каждой таблицы на предмет отличия и вызовами ALTER TABLE, вот и пытаюсь найти более простой вариант.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 18 май 2005, 19:33

Мы совсем недавно решили перейти (с Парадокса!) на FB 1.5 (embedded)
надо взять нормальный сервер, и на нем работать. А embedded будешь использовать, когда будешь приложения распространять. не раньше.
1. Где-то я слышал, что после DROP TABLE размеры DB не уменьшаются, поэтому интенсивное использование такого механизма приведет к усиленному росту файла базы. Можно ли как-то по завершении DROP TABLE - CREATE TABLE программным путем ужать базу, чтобы она освободила пространство удаленной таблицы?
файл базы - страничный файл произвольного доступа. чего вам далась эта упаковка? Освобожденное место ведь не остается занятым - новые данные туда полезут. Если сильно хочется "сжать" - делай backup/restore.
2. И нужно ли индивидуально вызывать дроп для индексов и первичных ключей, или они сами удалятся вместе с таблицей?
а самому проверить слабо? доку там почитать, langref.pdf...

Aleksandr.
Сообщения: 63
Зарегистрирован: 18 май 2005, 19:13

Сообщение Aleksandr. » 18 май 2005, 19:55

надо взять нормальный сервер, и на нем работать. А embedded будешь использовать, когда будешь приложения распространять. не раньше.
В том-то и дело, что это распространяемое приложение, просто новая версия.
файл базы - страничный файл произвольного доступа. чего вам далась эта упаковка? Освобожденное место ведь не остается занятым - новые данные туда полезут. Если сильно хочется "сжать" - делай backup/restore
Значит, я понял не правильно. Я понимал так, что это пространство просто остается. На всякий случай, запросом из программы backup/restore сделать можно?
а самому проверить слабо? доку там почитать, langref.pdf...
Видимо, слабо. Я пытался в langref пробить эту тему, но то ли моего аглицкого не хватает, то ли я не там искал.

Кстати, вопрос по поводу PAGE_SIZE - есть какая-то зависимость, какую ее оптимальнее всего задавать при создании базы? Например, от версии операционки, или версию процессора опросить?

Merlin
Динозавр IB/FB
Сообщения: 1502
Зарегистрирован: 27 окт 2004, 11:44

Сообщение Merlin » 18 май 2005, 20:53

Aleksandr. писал(а): На всякий случай, запросом из программы backup/restore сделать можно?
Можно.
Aleksandr. писал(а): Кстати, вопрос по поводу PAGE_SIZE - есть какая-то зависимость, какую ее оптимальнее всего задавать при создании базы? Например, от версии операционки, или версию процессора опросить?
Версию видеокарты. Учу:

1. В урле наверху убираем всё слева до слова 'ibase' и вставляем на это место 'www.'
2. Убираем всё в том же урле всё справа после '.ru'
3. Жмакаем Enter
4. На образовавшейся странице вверху находим 'Поиск' и набираем там page_size
5. Жмакаем Enter
6. Ходим по всплывшим ссылкам на статьи этого сайта, читаем пейджер и думаем.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 18 май 2005, 21:11

В том-то и дело, что это распространяемое приложение, просто новая версия.
и что с того? embedded не допускает 2 коннекта к одной базе из двух разных процессов. 1 процесс - delphi с компонентами. другой процесс - отлаживаемое приложение. Все, ты в ступоре. Я и говорю - для РАЗРАБОТКИ надо поставить себе обычный сервер, и не морочить голову мазохизмом. А когда приложение напишешь, или в процессе тестирования, можешь его потестить с Embedded. Embedded это то же самое ядро сервера, с тем же функционалом. Сервер первичен, Embedded вторичен. Приложению все равно с чем работать - с сервером или Embedded.
Значит, я понял не правильно. Я понимал так, что это пространство просто остается. На всякий случай, запросом из программы backup/restore сделать можно?
ну, это тебе не dbf с его псевдо-удалением. ты ж с Парадокса пришел, а парадоксовые таблицы вполне нормально пустое место используют повторно, и там тоже страничные файлы. b/r сделать можно, см. Services API. Или до компонент InterBase Admin в палитре не добрался?
Кстати, вопрос по поводу PAGE_SIZE
нет такого вопроса. есть ответ в faq. что-то я не пойму. вроде как процесс использования нового ПО надо начинать с чтения документации и FAQ. Или нет? :)
Я пытался в langref пробить эту тему
я сочувствую людям, которые изучали в школе немецкий или французский. Остальным - нет. надо учиться минимально читать доку.

и уж извини, но не прочитать в langref.pdf фразу из drop table:
DROP TABLE removes a table’s data, metadata, and indexes from a database. It also drops any triggers that reference the table.

и ЧТО тут может быть непонятного? В конце концов lingvo.yandex.ru или translate.ru никто не отменял.

Могу, кстати, научить пользоваться Langref.pdf. Открываешь его, дальше щелкаешь на SQL Statement and function reference, и еще раз на Statement and function reference. Ищешь нужный оператор. Тыкаешь, читаешь.

Ты уж извини за тон, но каждого четвертого тыкать в FAQ или в собственный сайт уже сил никаких нет.... так и тянется рука форум прикрыть. :)

Aleksandr.
Сообщения: 63
Зарегистрирован: 18 май 2005, 19:13

Сообщение Aleksandr. » 19 май 2005, 14:17

1 процесс - delphi с компонентами. другой процесс - отлаживаемое приложение. Все, ты в ступоре
А, вот ты о чем. У меня такой траблы не стоит - все запросы и весь код уже отработан, все заморочки с RT созданиями и удалениями базы и таблиц.
Или до компонент InterBase Admin в палитре не добрался?
Нет, даже как-то не подумал туда глянуть :oops:
нет такого вопроса. есть ответ в faq. что-то я не пойму. вроде как процесс использования нового ПО надо начинать с чтения документации и FAQ. Или нет?
На форумах искал, ничего, кроме того, что все упоминавшие PAGE_SIZE используют 8192, не нашел. Понятно, что просмотреть статьи на сайте не додумался :oops:
Не ругайтесь, люди! Видел я в инете пару форумов, на которых давно никто ничего не пишет, потому что все крутые, все все знают, а на все вопросы посылают. Ну и не ходит никто туда. :?

ЗЫ. А в школе я финский учил :lol:

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 19 май 2005, 16:47

Видел я в инете пару форумов, на которых давно никто ничего не пишет, потому что все крутые, все все знают, а на все вопросы посылают.
замечательные форумы. надо опыт перенять.

Ответить