|
INSERT большого количества записей
|
|||
---|---|---|---|
#18+
Здравствуйте! fb 2.5.9 SS, OS Win10Pro, DBeaver 21.2.3. Посоветуйте как лучше скопировать из одной таблицы в другую около 37 млн записей. Таблицы с одинаковой структурой. В таблице приёмнике около 130 млн. записей. Я воспользовался простой инструкцией из "Руководства": Код: sql 1. 2. 3.
Процесс идёт уже 27 часов, прогресс не отображается, база распухла на 7 Гб, записей в таблице приёмнике не прибавилось. Перед этим копирование таблицы из одной базы в другую посредством IBExpert заняло всего 74 минуты. Из поиска я выяснил, что надо менять настройки конфигурации, отключить индексы у таблицы приёмника, запускать скрипт в ISQL и разбивать процесс на блоки. Если можно, какие-нибудь примеры, где есть подробное описание. Это не моя специальность, пытаюсь разобраться. До этого только немного Access использовал. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2021, 16:55 |
|
INSERT большого количества записей
|
|||
---|---|---|---|
#18+
rhizhnyзаписей в таблице приёмнике не прибавилось. ты их не увидишь пока транзакция не завершится. В Firebird нет грязного чтения. Для ускорения вставки надо - временно отключить индексы и удалить ограничения на таблице приёмнике - временно деактивировать триггеры на таблице приёмнике Если операция не разовая, лучше застрелится и поменять консерваторию ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2021, 17:12 |
|
INSERT большого количества записей
|
|||
---|---|---|---|
#18+
Симонов Денис, Спасибо. А можно хотя бы приблизительно оценить время, которое потребуется для выполнения этой операции? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2021, 17:16 |
|
INSERT большого количества записей
|
|||
---|---|---|---|
#18+
rhizhny Эти таблицы у вас в одной базе находятся или в разных базах? Если записей в таблице приёмнике не прибавилось, вероятно все инсерты идут в одной транзакции, лучше чаще делать коммиты (например после каждого 500-ого инсерта). Вам никто не укажет на универсальную волшебную кнопку. Скорость зависит от железа (дисковой системы например), от фрагментации диска и пр. Какой у вас RAID сконфигурирован? Какие настройки сервера или все по умолчанию стоит? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2021, 17:20 |
|
INSERT большого количества записей
|
|||
---|---|---|---|
#18+
AltHasp, В данный момент в одной базе. Изначально это было две базы с разным набором данных в одной таблице и одинаковыми справочниками. Я понимаю, что волшебной кнопки нет, поэтому и прошу какие-то мануалы поподробнее. Может кто-то уже описывал подобное. Никакого рейда, я установил Firebird на свой локальный компьютер. HDD ST1000DM010-2EP102. Диспетчер показывал для FB скорость около 5 МБ/с чтения и 2-3 МБ/с записи. Загрузка около 90% была. Все настройки по умолчанию. Ну и буквально только что, пока набирал сообщение DBeaver прекратил выполнение скрипта с ошибкой: SQL Error [08003]: This connection is closed and cannot be used now. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2021, 17:46 |
|
INSERT большого количества записей
|
|||
---|---|---|---|
#18+
rhizhny HDD ST1000DM010-2EP102. Диспетчер показывал для FB скорость около 5 МБ/с чтения и 2-3 МБ/с записи. Загрузка около 90% была. 1. заменить механический диск на твердотельный 2. на время заливки перевести файл базы в режим асинхронной записи (gfix с кчючами asinc / sinc) Да в базе до твоих манипуляций мог быть мусор, на его приборку тоже тратятся иопсы диска. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2021, 18:45 |
|
INSERT большого количества записей
|
|||
---|---|---|---|
#18+
Ivan_Pisarevsky, Спасибо. Буду экспериментировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2021, 18:51 |
|
INSERT большого количества записей
|
|||
---|---|---|---|
#18+
rhizhny, Зачем вам эксперименты? Уже вам намекнули-же: - Временно выключить у базы ForcedWrites, отключить индексы и тригеры на вставку; - Подкрутить конфиг ЖарПтицы для увеличения выделения большого размера страниц; - Установить дополнительный SSD диск, выделить базe отдельный раздел; - Инсерты обернуть коммитом по 500, и вывод счетчика после 500 вставок, чтобы видеть прогресс вставки; А поля с блобами есть в вашей таблице ? P.S. на FB3 вставка идет заметно быстрее. Если просто побаловаться, то дерзайте! Удачи ! ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2021, 19:27 |
|
INSERT большого количества записей
|
|||
---|---|---|---|
#18+
AltHasp, Если какие-то вещи делаешь в первый раз, то это это всегда эксперимент - получится или нет? Даже если более опытные люди тебе сказали, что получится. Ведь личный опыт отсутствует. BLOB нет, только дата, текст и числа. Про конвертацию базы в FB3 уже думал. Надеюсь, это не настолько длительная операция, как INSERT. Собственно, всё началось с попытки подключить базу к FB4, незнания версии базы и непонимания, почему смена версии сервера при подключении не оказывает влияния. Ну и не баловство это, данные нужны для работы. А получение в процессе работы навыков обращения с популярной СУБД - это личное желание. Такие навыки лишними не будут. Конечно, в идеале, надо изучать последовательно, с азов, но что-то у меня так не выходит. Так что большое спасибо за то что делитесь своим опытом с новичками. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2021, 21:10 |
|
INSERT большого количества записей
|
|||
---|---|---|---|
#18+
rhizhny, 20 gb из одной базы в другую - около 40 мин. это insert, update 7 gb за 74 мин - по ту сторону добра 1.начните с ForcedWrites. 2. перед переносом сделайте backup с ключиком -r и restore 3. если размер страницы остался от пращуров в 4k, то рестор делайте со страницей 16k. 4. посмотрите на глубину индексов в статистике. если на Вашей маленькой(?) странице она 4 и более - тормозить будет независимо ни от чего. увеличивайте страницу. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2021, 22:03 |
|
|
start [/forum/search_topic.php?author=Sumh1ne&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
39ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
others: | 10702ms |
total: | 10854ms |
0 / 0 |