powered by simpleCommunicator - 2.0.48     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / INSERT большого количества записей
11 сообщений из 11, страница 1 из 1
INSERT большого количества записей
    #40107804
rhizhny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!

fb 2.5.9 SS, OS Win10Pro, DBeaver 21.2.3.

Посоветуйте как лучше скопировать из одной таблицы в другую около 37 млн записей. Таблицы с одинаковой структурой. В таблице приёмнике около 130 млн. записей.

Я воспользовался простой инструкцией из "Руководства":
Код: sql
1.
2.
3.
INSERT INTO TRAFFIC_T
SELECT *
FROM TRAFFIC_T_2



Процесс идёт уже 27 часов, прогресс не отображается, база распухла на 7 Гб, записей в таблице приёмнике не прибавилось.
Перед этим копирование таблицы из одной базы в другую посредством IBExpert заняло всего 74 минуты.

Из поиска я выяснил, что надо менять настройки конфигурации, отключить индексы у таблицы приёмника, запускать скрипт в ISQL и разбивать процесс на блоки.
Если можно, какие-нибудь примеры, где есть подробное описание. Это не моя специальность, пытаюсь разобраться. До этого только немного Access использовал.
...
Рейтинг: 0 / 0
INSERT большого количества записей
    #40107806
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rhizhnyзаписей в таблице приёмнике не прибавилось.

ты их не увидишь пока транзакция не завершится. В Firebird нет грязного чтения.

Для ускорения вставки надо
- временно отключить индексы и удалить ограничения на таблице приёмнике
- временно деактивировать триггеры на таблице приёмнике

Если операция не разовая, лучше застрелится и поменять консерваторию
...
Рейтинг: 0 / 0
INSERT большого количества записей
    #40107808
rhizhny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денис,

Спасибо. А можно хотя бы приблизительно оценить время, которое потребуется для выполнения этой операции?
...
Рейтинг: 0 / 0
INSERT большого количества записей
    #40107809
AltHasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rhizhny
Эти таблицы у вас в одной базе находятся или в разных базах?
Если записей в таблице приёмнике не прибавилось, вероятно все инсерты идут в одной транзакции, лучше чаще делать коммиты (например после каждого 500-ого инсерта).
Вам никто не укажет на универсальную волшебную кнопку. Скорость зависит от железа (дисковой системы например), от фрагментации диска и пр. Какой у вас RAID сконфигурирован? Какие настройки сервера или все по умолчанию стоит?
...
Рейтинг: 0 / 0
INSERT большого количества записей
    #40107821
rhizhny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AltHasp,

В данный момент в одной базе. Изначально это было две базы с разным набором данных в одной таблице и одинаковыми справочниками.

Я понимаю, что волшебной кнопки нет, поэтому и прошу какие-то мануалы поподробнее. Может кто-то уже описывал подобное.

Никакого рейда, я установил Firebird на свой локальный компьютер. HDD ST1000DM010-2EP102. Диспетчер показывал для FB скорость около 5 МБ/с чтения и 2-3 МБ/с записи. Загрузка около 90% была.
Все настройки по умолчанию.

Ну и буквально только что, пока набирал сообщение DBeaver прекратил выполнение скрипта с ошибкой:
SQL Error [08003]: This connection is closed and cannot be used now.
...
Рейтинг: 0 / 0
INSERT большого количества записей
    #40107846
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rhizhny
HDD ST1000DM010-2EP102. Диспетчер показывал для FB скорость около 5 МБ/с чтения и 2-3 МБ/с записи. Загрузка около 90% была.
типовой механический диск - это примерно 100 иопсов, множим на типовую страницу 8к получаем 0,8 мегабайт в секунду в самом худшем случае, получается у тебя пишется 10 страниц за одно обращение к диску вот и твоя цифирь. собственно и все - скорость уперлась в диск. варианты:
1. заменить механический диск на твердотельный
2. на время заливки перевести файл базы в режим асинхронной записи (gfix с кчючами asinc / sinc)

Да в базе до твоих манипуляций мог быть мусор, на его приборку тоже тратятся иопсы диска.
...
Рейтинг: 0 / 0
INSERT большого количества записей
    #40107848
rhizhny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ivan_Pisarevsky,

Спасибо. Буду экспериментировать.
...
Рейтинг: 0 / 0
INSERT большого количества записей
    #40107854
AltHasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rhizhny,

Зачем вам эксперименты? Уже вам намекнули-же:
- Временно выключить у базы ForcedWrites, отключить индексы и тригеры на вставку;
- Подкрутить конфиг ЖарПтицы для увеличения выделения большого размера страниц;
- Установить дополнительный SSD диск, выделить базe отдельный раздел;
- Инсерты обернуть коммитом по 500, и вывод счетчика после 500 вставок, чтобы видеть прогресс вставки;
А поля с блобами есть в вашей таблице ?

P.S.
на FB3 вставка идет заметно быстрее.

Если просто побаловаться, то дерзайте!
Удачи !
...
Рейтинг: 0 / 0
INSERT большого количества записей
    #40107870
rhizhny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AltHasp,

Если какие-то вещи делаешь в первый раз, то это это всегда эксперимент - получится или нет? Даже если более опытные люди тебе сказали, что получится. Ведь личный опыт отсутствует.

BLOB нет, только дата, текст и числа.

Про конвертацию базы в FB3 уже думал. Надеюсь, это не настолько длительная операция, как INSERT. Собственно, всё началось с попытки подключить базу к FB4, незнания версии базы и непонимания, почему смена версии сервера при подключении не оказывает влияния.

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

Так что большое спасибо за то что делитесь своим опытом с новичками.
...
Рейтинг: 0 / 0
INSERT большого количества записей
    #40107877
pastor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rhizhny,

20 gb из одной базы в другую - около 40 мин. это insert, update

7 gb за 74 мин - по ту сторону добра

1.начните с ForcedWrites.

2. перед переносом сделайте backup с ключиком -r и restore

3. если размер страницы остался от пращуров в 4k, то рестор делайте со страницей 16k.

4. посмотрите на глубину индексов в статистике. если на Вашей маленькой(?) странице она 4 и более - тормозить будет независимо ни от чего.
увеличивайте страницу.
...
Рейтинг: 0 / 0
INSERT большого количества записей
    #40107884
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pastorbackup с ключиком -r
-g
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / INSERT большого количества записей
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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