Когда Laravel Validator становится узким местом при импорте 50 000 строк
<img src="https://habrastorage.org/getpro/habr/upload_files/d78/e5d/e17/d78e5de17ccff25008fd80921276e507.jpg" /><p><strong>PHP 7.4 / Laravel 8 / PostgreSQL 13</strong></p><p><strong>Проблема</strong>: импорт 50 тысяч строк занимал около 45 секунд.<br><strong>Первое подозрение:</strong> база данных, INSERT, UPSERT, индексы, размер batch и количество запросов.<br><strong>Реальность:</strong> бОльшая часть времени уходит на валидацию.</p><p>Мы начали разбираться, почему проверка нескольких десятков обычных полей на большом массиве данных оказалась значительно дороже самой записи в PostgreSQL. В итоге удалось сократить время валидации с <strong>42,5 секунды до 0,65 секунды</strong>, а длительность всего job — примерно с <strong>45 до 4 секунд</strong>.</p><p>В статье покажу, что именно оказалось узким местом, почему стандартный Laravel Validator оказался не самым подходящим инструментом для этого конкретного сценария и почему мы не стали от него отказываться.</p> <a href="https://habr.com/ru/articles/1079878/?utm_source=habrahabr&utm_medium=rss&utm_campaign=1079878#habracut">Читать далее</a>
