Это должно только использоваться, когда тестирование с reprentative данными и контекстом демонстрирует, что обхождение без производит недопустимые планы запросов (независимо от того, что возможные причины могли бы быть). Не принимайте заранее (не тестируя), который SP не оптимизирует правильно.
Единственное исключение для ручного вызова только (т.е. не кодируют его в SP): Когда Вы знаете о существенном изменении символа целевых таблиц. например, Усеченные, объемные загрузки, и т.д.
Это - еще одна возможность для преждевременной оптимизации.
Примечание: у Меня есть много точек. Если newby отправляет тот же ответ ниже, и Вы соглашаетесь, upvote их.
IIRC:
Ruby Marshall не гарантирует работу с разными версиями ruby или одними и теми же версиями ruby на разных платформах.
Поскольку у вас могут быть разные версии Ruby, обращающиеся к одному и тому же сериализованному столбцу. , Rails реализует сериализацию с помощью YAML. Хотя это и медленнее, но это гарантирует, что ваш сериализованный столбец может быть прочитан другими версиями Ruby, ruby в других ОС, а также другими языками программирования.
Маршаллинг и сериализация - это общие термины, описывающие один и тот же базовый принцип. По определению любой процесс, который может кодировать объект и его зависимые подструктуры во что-то, что может быть сохранено таким образом, чтобы в какой-то момент его можно было восстановить, называется сериализацией или маршаллингом.
различаются, но обычно одинаковы, в статье Википедии: http://en.wikipedia.org/wiki/Marshalling_ (computer_science) #Comparison_with_serialization
Конкретное различие в терминах Ruby заключается в том, что встроенный Модуль Marshal доступен для любого приложения, в то время как поддержка сериализации ActiveRecord характерна только для платформы Rails.
Поскольку ActiveRecord имеет свой собственный тесно интегрированный метод сериализации, его обычно предпочтительно использовать.