# Чем dbt State отличается от использования state:modified?

Сам по себе `state:modified` требует ручного управления файлом `manifest.json`, что неудобно и чревато ошибками. dbt State полностью управляется автоматически, практически не требует настройки и не меняет рабочие процессы. В развертываниях с самостоятельным управлением dbt State также может напрямую обеспечивать работу селекторов `state:*` — см. последний пункт ниже.

`state:modified` проверяет только то, изменился ли файл. dbt State понимает семантику SQL, поэтому несущественные изменения, такие как пробелы или псевдонимы таблиц, не учитываются — это позволяет dbt State точнее определять, что действительно нужно пересоздать.

`state:modified` не учитывает изменения данных в вышестоящих источниках. dbt State проверяет все источники на наличие новых данных или изменений схемы. Это позволяет dbt State пропускать выполнение моделей, если результат будет таким же, как прежде. Например, если дважды выполнить `dbt run` с `state:modified`, все измененные модели будут выполнены оба раза. dbt State повторно выполнит модели во второй раз только в том случае, если вышестоящие источники изменились.

dbt State также может автоматически перенаправлять ссылки ref на объекты из другого окружения и автоматически клонировать таблицы, когда результат клонирования будет таким же, как при полноценном выполнении модели.

У `state:modified` есть ограничение для seed-файлов размером более 1 МБ, а у dbt State такого ограничения нет.

Когда dbt State включен в развертывании с самостоятельным управлением, все [селекторы `state:*`](https://docs.getdbt.tech/reference/node-selection/methods.md#state) могут использовать dbt State как источник состояния для сравнения. Это обеспечивает детализацию на уровне отдельных узлов — каждый узел сравнивается с состоянием после его собственного последнего выполнения в окружении [`defer_to_target`](https://docs.getdbt.tech/reference/resource-configs/defer-to-target.md), а не все узлы сравниваются с одним файлом `manifest.json` из последнего задания. Это применяется автоматически, если манифест не был явно указан с помощью [`--state`](https://docs.getdbt.tech/reference/node-selection/configure-state.md). Подробнее см. в разделе [Селекторы `state:*` на базе dbt State](https://docs.getdbt.tech/docs/deploy/dbt-state-deferral.md#dbt-state-powered-state-selectors).
