#php #mysql #database #api
#php #mysql #База данных #API
Вопрос:
Недавно я столкнулся с этой теоретической проблемой:
- В приложении есть два PHP скрипта;
- Первый скрипт подключается к базе данных каждый день в 00:00 и вставляет в существующую таблицу базы данных 1 миллион строк;
- Второй скрипт имеет
foreach
цикл, перебирающий строки той же таблицы БД; затем он выполняет вызов API, выполнение которого занимает ровно 1 секунду (запрос ответ = 1 сек); Независимо от содержимого ответа, затем он удаляет одну строку из таблицы БД; - Следовательно, каждый день таблица БД получает 1 миллион строк, но теряет только 1 строку в секунду, то есть 86400 строк в день, и из-за этого она становится бесконечно большой;
- Какую модификацию второго скрипта следует изменить, чтобы размер таблицы БД не становился бесконечно большим?
Эта проблема кому-нибудь знакома? Если да, есть ли «каноническое» решение для этого? Потому что первое, что пришло мне в голову, было: если удаление строки не зависит от ответа API, почему бы просто не вывести вызов API за пределы foreach
цикла? К сожалению, у меня не было возможности задать свой вопрос.
Есть еще идеи?
Комментарии:
1. Я не понимаю вашего вопроса. Конечно, решение должно зависеть от данных и их использования. Но вы либо вставляете меньше записей, либо удаляете больше. Если вы в среднем удаляете миллион строк в день, все готово. Что именно вы пытаетесь выяснить?
2. Я не уверен, что понимаю вопрос. Вы добавляете 1 миллион строк в день, удаляя 86400 строк в день, и не хотите, чтобы он рос бесконечно?
3. Эта проблема знакома Twitter.
4. Этот вопрос на самом деле не мой, я нашел его в групповой переписке команды, в которой я работаю. Насколько я понимаю, желаемый результат заключается в том, что второй скрипт удаляет за один день 1 миллион строк или более, в отличие от 86400, которые он в настоящее время выполняет за день. Я сам не знаю намного больше и подумал, что, возможно, этот вопрос, возможно, является плохой интерпретацией более известной проблемы. Вот почему я спросил здесь, чтобы узнать, сталкивался ли кто-нибудь еще с подобным вопросом в прошлом.
5. каждый 1 второй скрипт должен удалять 11,574 строки в секунду