170 похожих чатов

Хочу оптимизировать скрипт синхронизации БД через внешний API. Сейчас тут тупо

загружается json со всеми записями, трункейтится база и новые данные инсертятся в базу. Которая рабочая (идут обращения от разных источников).
В принципе записей немного, около 3000. Но скрипт выполняется раз в 3 минуты.
У самого json где то 30 полей в каждой записи.

В большинстве случаев json остаётся без изменений (это не точно), тот кто этот код писал говорит что там постоянно что то меняется, но я сомневаюсь.

Моя идея сравнивать предыдущий полученный json с новым. И уже поштучно вносить изменения в базу.

При первом варианте нет нагрузки особой на ЦП, только на ИО. База достаточно быстро транкейтит, чуть дольше вставляет эти 3к записей.

В моем же варианте повышается нагрузка именно на ЦП. Мы бежим по всем записям и сравниваем, и находим отличия, и точечно обновляем/добовляем/удаляем.
Почему я сомневаюсь - идея использовать pydantic для этого, а он может быть медленный))

Как думаете,какой подход лучше?)

11 ответов

28 просмотров

3000 записей для pydantic - кот наплакал. Вопрос есть ли в этой таблице время модификации и можно ли отправлять запрос с фильтром?

Art- Автор вопроса

Тоже такой вариант на ум приходил.Но вроде как там у mysql с этим могут быть какие то траблы

Ну а почему репликация не подошла? Мне просто интересно

Art- Автор вопроса
Владимир
Ну а почему репликация не подошла? Мне просто инте...

Я про транкейт узнавал, вот что мне про него написали: "truncate causes MDL,а это блочит все что обращается к таблице. не знаю уж хотите ли вы такого поведения или нет. по умолчанию truncate стараются не использовать на живых таблицах (остальное, конечно, можно транкейтить). "

Art
Я про транкейт узнавал, вот что мне про него напис...

Эмм ты про это? https://dev.mysql.com/doc/refman/8.0/en/truncate-table.html Я про это: https://dev.mysql.com/doc/refman/8.0/en/replication.html

ну всегда есть вариант не делать никаких диффов вообще, а просто залить json в новую таблицу, и подсунуть ее вместо старой.

Art- Автор вопроса
Kirill Leontev
ну всегда есть вариант не делать никаких диффов во...

этот вариант лочит базу на 0.7 Потому и ищу оптимизацию)

Art
этот вариант лочит базу на 0.7 Потому и ищу оптими...

не может быть. как конкретно делаете?

Art- Автор вопроса

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта