У меня есть база данных, которая собирается сохранить записи в журнале.
Один из столбцов в таблице журнала содержит сериализированный (к XML), объекты и парень в моей команде предложили пойти с типом данных XML, а не NVARCHAR (МАКС). Эта таблица будет иметь журналы сохраненными "навсегда" (архивирующий некоторые очень старые записи, может быть рассмотрен в будущем).
Я немного волнуюсь по поводу ЦП наверху, но я еще более волнуюсь, что DB может стать быстрее (FoxyBOA от вопроса, на который ссылаются, получил на 70% больший DB при использовании XML).
Я считал этот вопрос, и он дал мне некоторое представление, но я особенно интересуюсь разъяснением по поводу ли увеличения размера базы данных или уменьшения.
Можно ли совместно использовать понимание/события в том вопросе.
BTW. У меня в настоящее время нет потребности зависеть от функций XML в SQL Server (существует почти нулевое преимущество для меня в конкретном случае). Записи в журнале Ocasionally будут извлечены, но я предпочитаю обрабатывать XML использование.NET (или путем записи маленькому клиенту или использования функции, определяемой в блоке.NET).
Если у вас есть XML, и вы можете быть уверены, что это всегда XML, я определенно рекомендую пойти по этому пути. SQL Server хранит XML в оптимизированном формате - вам даже не нужны никакие XML-индексы, чтобы извлечь из этого пользу.
Если вы вставите 5000 строк XML размером 5 КБ в столбец XML, вы получите примерно 1250 страниц = 9 МБ. При вставке тех же 5000 строк с тем же XML размером 5 КБ в NVARCHAR (MAX) используется более 3700 страниц или 29 МБ - большая разница!
И это различие должно быть еще более явным, если вы можете связать свой XML со схемой XML, хранящейся в SQL Server. Кроме того, вам также гарантируется, что сохраненный XML соответствует схеме - иногда это может быть очень полезно! Невозможно сделать это с обычным столбцом NVARCHAR (MAX) ...
И я не согласен с тем, что использование XML вместо NVARCHAR (MAX) имеет какое-либо снижение производительности - как раз наоборот. Поскольку вы потенциально получаете меньше данных из SQL Server, когда собираетесь отображать или извлекать контент, я бы сказал, что это даже немного быстрее, чем NVARCHAR (MAX).
Этот тест показывает тип данных XML, использующий меньше операций ввода-вывода, но немного больше ЦП, чем VARCHAR (MAX). Я бы подумал, что NVARCHAR (MAX) займет еще больше операций ввода-вывода, так как это юникод.
http://searchsqlserver.techtarget.com/tip/XML-data-type-in-SQL-Server-2005-vs-VARCHAR-MAX