powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Долгая выборка после очистки таблицы
5 сообщений из 5, страница 1 из 1
Долгая выборка после очистки таблицы
    #39942343
shalamyansky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Firebird 3.0.2 on Windows Server 2012
БД ~900Гб
Таблица ~100 млн записей по 14б, из индексов только первичный ключ.

Делаю без условий

Код: sql
1.
delete from table 


Сама по себе эта операция занимает несколько секунд. Но далее первый

Код: sql
1.
select * from table


затягивается более, чем на полчаса.

Что, собственно, происходит, удаляется мусор этой таблицы? Сравнение номеров версий, все такое... А нельзя ли его удалить как-нибудь э... разом, что ли. Если есть понимание, что таблица-то пуста на самом деле.

И будет ли быстрее очистка через drop table - create table? База слишком тяжелая и времена слишком велики для экспериментов, хотелось бы сперва получить теоретическое представление. Спасибо.
...
Рейтинг: 0 / 0
Долгая выборка после очистки таблицы
    #39942355
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
shalamyansky,

drop table может и не получиться, если есть зависимости (ссылки на табличку).

А вообще, местные власти за частые drop/create/alter сильно ругаются.
...
Рейтинг: 0 / 0
Долгая выборка после очистки таблицы
    #39942356
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Удаление 100М записей за несколько секунд - в это конечно можно поверить,
например если несколько - это несколько десятков, или сотен...

Насчёт долгого первого селекта. Мы не знаем, сколько там было бекверсий у каждой записи.
Если бы их не было вовсе, то сборка мусора в таблице без индексов выполняется несколько
быстрее, чем удаление записей.

Если операция одноразовая, то:
если нет зависимостей - проще всего сделать recreate (drop + create),
если есть зависимости и с ними неохота возиться - дроп индексов, селект со сборкой мусора,
воссоздание индексов. Каждый этап со своим коммитом.

Если операция регулярная, то нужно править консерваторию.
...
Рейтинг: 0 / 0
Долгая выборка после очистки таблицы
    #39942383
shalamyansky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad
Удаление 100М записей за несколько секунд - в это конечно можно поверить

На самом деле там были минуты, это я от плохой памяти и для красного словца. Но суть, что select был на порядок дольше, чем delete, и долог был весьма.
hvlad
дроп индексов, селект со сборкой мусора,воссоздание индексов

Этот вариант я не видел, да, надо будет попробовать, спасибо.

Операция спорадическая, но все же хочется управляться с ней побыстрее. И почему бы серверу не взять эти заботы (дроп индекса, восстановление индекса и пр.) на себя, если он видит при commit на full delete, что нужна в результате только пустая таблица?
...
Рейтинг: 0 / 0
Долгая выборка после очистки таблицы
    #39942399
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shalamyansky
если он видит при commit на full delete
Не видит он этого. Да и не должен видеть.
Ибо есть и другие коннекты, которые могут не только писать параллельно удалению, но и читать позапрошлогодние данные.
И вообще - удалённое станет мусором не в момент коммита, а позже. Иногда сильно позже.

Для быстрой очистки есть свой инструмент - TRUNCATE, об этом нужно говорить.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Долгая выборка после очистки таблицы
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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