Я пытаюсь сделать некоторую оптимизацию производительности запросов POST, которые включают параметры для нескольких (обычно шести) связанных моделей активных записей, требуя вставки новых записей в несколько разных таблиц при каждом запросе.Некоторые модели также имеют фильтры после, которые выполняют ряд задач, некоторые из которых обрабатываются в асинхронном режиме с помощью delayed_job, что само по себе включает вставку записей в таблицу delayed_jobs, чтобы их мог извлекать и обрабатывать в автономном режиме работником delayed_job.Все это в производственном режиме Rails с использованием Postgres на виртуальном частном сервере Rackspace.
При проверке операторов SQL INSERT INTO в моем файле журнала вставки таблиц для данных моего приложения часто занимают где-то поблизости от парысто мс каждый.Однако записи, вставленные в таблицу delayed_jobs во время цикла запроса, обычно занимают менее 10 мс.
Все же мои модели кажутся не более сложными, чем модель delayed_job, например, я обычно вставляю 2-6 атрибутов при каждом создании записи,большинство включает индексированные внешние ключи (некоторые типы строк для полиморфных моделей), а также небольшое количество других целочисленных или строковых полей.Вставки Delayed_job, с другой стороны, включают в себя 4 столбца, состоящих из 3 datetime и иногда длинного текстового поля «handler».Итак, на первый взгляд, записи delayed_job кажутся как минимум такими же сложными, как и некоторые из записей приложений, которые я вставляю, но как минимум на порядок (обычно в 20-30 раз) быстрее.
ИтакЯ пытаюсь выяснить, в чем разница между этими двумя ситуациями.В целом, какие факторы влияют на продолжительность вставки модели и почему delayed_job может вставлять записи намного быстрее, чем модели моего приложения?