Ни того, ни другого.
Крон не очень подходит для непрерывного выполнения чего-либо. Он светит при периодическом выполнении некоторых быстрых задач .
Итак, есть одна программа, которая постоянно загружает все данные. Или он обладает умом перезагружать часть данных несколько раз, а затем перезагружать остальные данные.
Но, как только он заканчивается, он начинается заново. Между тем, было бы разумно, чтобы cron запустил программу keep-alive, которая выполняет одну быструю задачу: посмотрите, жива ли задача загрузчика; если нет, он перезапускает его.
Если вы перезагружаете всю таблицу, сделайте это следующим образом:
CREATE TABLE t_new LIKE t;
load the data by whatever means
RENAME TABLE t TO t_old, t_new TO t;
DROP TABLE t_old;
Таким образом, t
всегда присутствует и полностью загружен.
Если вы обновляете только часть таблицы, сделайте что-то более похожее на
CREATE TEMPORARY TABLE temp ...;
load some data into `temp`
massage, if needed, that data
INSERT INTO t (...)
SELECT ... FROM temp
ON DUPLICATE KEY UPDATE ...;
DROP TEMPORARY TABLE temp;
Если IODKU не подходит, выберите другой подход. Главное, чтобы данные были легко доступны в какой-то другой таблице, чтобы вы могли быстро скопировать их в реальную таблицу. (Примечание. При таком подходе таблица блокируется на некоторый период времени; при подходе с полной заменой время простоя практически равняется нулю.)
По возможности, применяйте ваши «правила» ко всем данным таблицы; не обрабатывать по одной строке за раз. (Это может существенно повлиять на производительность.)
О, я должен пояснить, почему мне не нравится cron для основной задачи. Сегодня задача занимает 25 минут и выполняется каждые 30 минут. Завтра что-то изменится, и это займет 35 минут. Теперь следующий экземпляр будет наступать на первый, возможно, создавая беспорядок. Или, может быть, просто замедляется. Если он просто замедляется, то последующий экземпляр, вероятно, будет еще медленнее, потому что они борются за процессор, и т. Д. c. В конце концов, система «зависнет», потому что «ничего» не делается. И вы инстинктивно перезагрузите его. Мой дизайн полностью избегает этого.