Какова потеря производительности типа данных XML в SQL Server по сравнению с NVARCHAR (МАКС)?

У меня есть база данных, которая собирается сохранить записи в журнале.

Один из столбцов в таблице журнала содержит сериализированный (к XML), объекты и парень в моей команде предложили пойти с типом данных XML, а не NVARCHAR (МАКС). Эта таблица будет иметь журналы сохраненными "навсегда" (архивирующий некоторые очень старые записи, может быть рассмотрен в будущем).

Я немного волнуюсь по поводу ЦП наверху, но я еще более волнуюсь, что DB может стать быстрее (FoxyBOA от вопроса, на который ссылаются, получил на 70% больший DB при использовании XML).

Я считал этот вопрос, и он дал мне некоторое представление, но я особенно интересуюсь разъяснением по поводу ли увеличения размера базы данных или уменьшения.

Можно ли совместно использовать понимание/события в том вопросе.

BTW. У меня в настоящее время нет потребности зависеть от функций XML в SQL Server (существует почти нулевое преимущество для меня в конкретном случае). Записи в журнале Ocasionally будут извлечены, но я предпочитаю обрабатывать XML использование.NET (или путем записи маленькому клиенту или использования функции, определяемой в блоке.NET).

26
задан Community 23 May 2017 в 12:34
поделиться

2 ответа

Если у вас есть 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).

34
ответ дан 28 November 2019 в 07:33
поделиться

Этот тест показывает тип данных XML, использующий меньше операций ввода-вывода, но немного больше ЦП, чем VARCHAR (MAX). Я бы подумал, что NVARCHAR (MAX) займет еще больше операций ввода-вывода, так как это юникод.

http://searchsqlserver.techtarget.com/tip/XML-data-type-in-SQL-Server-2005-vs-VARCHAR-MAX

3
ответ дан 28 November 2019 в 07:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: