Теоретический мысленный эксперимент

#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 строки в секунду