Size: a a a

2020 May 29

H

HikA in OctoberCMS
А что делать когда в бд нужно загрузить из к примеру файла эксель 100 000 строк с 50 столбцами, все данные + делать проверками к примеру на наличие записи? Сейчас это проходит больше чем за 10 - 20 минут.
источник

H

HikA in OctoberCMS
От меня требуют это сделать меньше чем за минуту
источник

VS

Victor Stepankov in OctoberCMS
за минуту врядли грузанёшь
источник

v

vladimir in OctoberCMS
HikA
А что делать когда в бд нужно загрузить из к примеру файла эксель 100 000 строк с 50 столбцами, все данные + делать проверками к примеру на наличие записи? Сейчас это проходит больше чем за 10 - 20 минут.
Делить 100 000 на чанки, например по 200 записей, делать комбинированный запрос на связанный ID в БД используя оператор IN и получать уже существующие записи в БД, к примеру только их связующий ID.
Самим php проверять существование по уже загруженной записи и формировать 3 коллекции: INSERT, UPDATE, DELETE.

Далее в конце чанка делать по 1 запросу на каждое действие.
Таким образом всех видов запросов на чанк будет по примерно по 1шт.

SELECT - 1
INSERT - 1
UPDATE - 1
DELETE - 1

Делать комибинированный UPDATE изредка бывает сложно, так как необходимо использовать конструкцию CASE .. WHEN … THEN, но это в принципе неплохой вариант)). В противном случае можно делать множество UPDATE записей в LOW PRIORITY.
источник

H

HikA in OctoberCMS
vladimir
Делить 100 000 на чанки, например по 200 записей, делать комбинированный запрос на связанный ID в БД используя оператор IN и получать уже существующие записи в БД, к примеру только их связующий ID.
Самим php проверять существование по уже загруженной записи и формировать 3 коллекции: INSERT, UPDATE, DELETE.

Далее в конце чанка делать по 1 запросу на каждое действие.
Таким образом всех видов запросов на чанк будет по примерно по 1шт.

SELECT - 1
INSERT - 1
UPDATE - 1
DELETE - 1

Делать комибинированный UPDATE изредка бывает сложно, так как необходимо использовать конструкцию CASE .. WHEN … THEN, но это в принципе неплохой вариант)). В противном случае можно делать множество UPDATE записей в LOW PRIORITY.
Сколько по времени может мне обойтись?
источник

v

vladimir in OctoberCMS
HikA
Сколько по времени может мне обойтись?
Все зависит от нагрузки на бд, использование индексов и внешних ключей.
источник

v

vladimir in OctoberCMS
Когда базу ФИАС импортировали первые 500тыс загрузилис за примерно 3 минуты.
До 20 миллионов скорость сохранялась более менее, после 20 миллионов уже стало заметно тормозить ))

Но это были только операции записи. По глупости забыли предварительно грохнуть индексы и на транзакцию отключить проверку внешних ключей
источник

H

HikA in OctoberCMS
vladimir
Когда базу ФИАС импортировали первые 500тыс загрузилис за примерно 3 минуты.
До 20 миллионов скорость сохранялась более менее, после 20 миллионов уже стало заметно тормозить ))

Но это были только операции записи. По глупости забыли предварительно грохнуть индексы и на транзакцию отключить проверку внешних ключей
За сколько в итоге они все загрузили?
источник

v

vladimir in OctoberCMS
HikA
За сколько в итоге они все загрузили?
Средствами PHP - за 5 дней 30 миллионов с поддержкой индексов и внешних ключей))
источник

v

vladimir in OctoberCMS
Потом мы стали умнее и сделали конвертер xml базы фиаса в sql на python.
В итоге получили дамп с 30 миллионами записей за 30 минут, и за 2 часа с отключенными индексами и внешними ключами импортнули.

Потом еще около 1 часа создавались индексы и проверялись ключи.
источник

H

HikA in OctoberCMS
Простите, я не совсем понял что повлияло на такую большую разницу во времени.
источник

v

vladimir in OctoberCMS
HikA
Простите, я не совсем понял что повлияло на такую большую разницу во времени.
В основном индексы и внешние ключи. Но и небольшие тормоза php при стрим парсинге xml документа объемом больше 6 гб.
При записи в таблицу с индексами, БД сразу их перестраивает, с учетом что у нас было много индексов и не только первичный, а если существует внешний ключ с неотключенной проверкой то каждая запись проверяется на корректность внешнего ключа - это тормозит процесс записи.
источник

H

HikA in OctoberCMS
Теперь понял)
источник

S

Sasha in OctoberCMS
Всем привет) ребят был какой то плагин, у которого был виджет для панели управления. Он показывал входящие запросы от клиентов, ни кто не помнит про этот плагин
источник

A

Alex in OctoberCMS
++ еще раз спасибо, наконец добил
источник

A

Axenia in OctoberCMS
Alex245235 (28.23) увеличил карму ReaZzon (3138.23)
источник

NK

Nikita Khaetsky in OctoberCMS
Alex
++ еще раз спасибо, наконец добил
Красавчик )
источник

🇺L

🇺🇦 Ad Libitum in OctoberCMS
Привет
источник

S

Sergey_K in OctoberCMS
vladimir
Делить 100 000 на чанки, например по 200 записей, делать комбинированный запрос на связанный ID в БД используя оператор IN и получать уже существующие записи в БД, к примеру только их связующий ID.
Самим php проверять существование по уже загруженной записи и формировать 3 коллекции: INSERT, UPDATE, DELETE.

Далее в конце чанка делать по 1 запросу на каждое действие.
Таким образом всех видов запросов на чанк будет по примерно по 1шт.

SELECT - 1
INSERT - 1
UPDATE - 1
DELETE - 1

Делать комибинированный UPDATE изредка бывает сложно, так как необходимо использовать конструкцию CASE .. WHEN … THEN, но это в принципе неплохой вариант)). В противном случае можно делать множество UPDATE записей в LOW PRIORITY.
Проще залить ВСЕ во временную таблицу (временную временную или постоянную, чтобы память не убивать).
Приджойнить ее к основной, обновив доп поле айдишником существующей записи.
источник

🇺L

🇺🇦 Ad Libitum in OctoberCMS
Скажите, а {% partial account ~ '::signin' %} - как должна выглядеть запись, чтобы подставить туда свой signin.htm, а не дефолтовый из плагина?
источник