Щас в идеях есть разве что вставкой через insert. На скорую руку попробовал, результат все равно не тот.
Как попробовал? Просто заменить сохранение модели на инсёрт или пачку записей одним инсёртом?
Вставку чанка (1-2к/30к/етц) записей пробовал завернуть в транзакцию? Если да и лучше не стало, то, может, БД не затюнена по настройкам. Или пора чанки в параллель обрабатывать/сохранять.
Потому что за использование float для хранения денег давно пора отрубать руки. Используй хотя бы decimal, а в идеале надо хранить деньги как целые числа — в копейках, центах и прочем. Ларавел тут совершенно ни при чём.
К предложенным вариантам можно добавить очереди: создали заказ, добавили в очередь задание с нужной задержкой. Задание срабатывает, помечает заказ и отправляет уведомление. Если заказ доставлен до того, как сработало задание, то задание можно удалить (не все серверы очередей поддерживают).
Если я правильно понял мануал, то M это «display width» и «display width does not constrain the range of values that can be stored in the column». Т.е. под BIGINT всегда будет отведено 8 байт.