read nodos node leer importar create sql-server xml tsql nvarchar

sql-server - nodos - xml to sql server table



¿Cuál es la penalización de rendimiento del tipo de datos XML en SQL Server en comparación con NVARCHAR(MAX)? (2)

Tengo una base de datos que va a mantener las entradas de registro.

Una de las columnas en la tabla de registro contiene objetos serializados (a XML) y un miembro de mi equipo propuso ir con el tipo de datos XML en lugar de NVARCHAR (MAX). En esta tabla se mantendrán los registros "para siempre" (en el futuro se pueden considerar algunas entradas muy antiguas).

Estoy un poco preocupado por la sobrecarga de la CPU, pero estoy aún más preocupado de que DB pueda crecer más rápido (FoxyBOA de la pregunta a la que se refiere tiene un 70% más de DB cuando usa XML)

He leído esta question y me dio algunas ideas, pero estoy particularmente interesado en aclarar si el tamaño de la base de datos aumenta o disminuye.

¿Puede por favor compartir sus conocimientos / experiencias en ese asunto?

Por cierto Actualmente no tengo ninguna necesidad de depender de las características XML dentro de SQL Server (hay una ventaja casi nula para mí en el caso específico). Ocasionalmente, se extraerán las entradas de registro, pero prefiero manejar el XML utilizando .NET (ya sea escribiendo un pequeño cliente o usando una función definida en un ensamblado .NET).



Si tiene XML y puede estar seguro de que siempre es XML, definitivamente recomendaría ir de esa manera. SQL Server almacena XML en un formato optimizado, ni siquiera necesita índices XML para beneficiarse de él.

Si inserta 5000 filas de un XML de 5KB en una columna XML, obtendrá aproximadamente 1250 páginas = 9 MB. Insertar las mismas 5000 filas con el mismo XML de 5KB en NVARCHAR (MAX) usa más de 3700 páginas o 29 MB, ¡una gran diferencia!

Y esa diferencia debería ser aún más pronunciada si puede asociar su XML con un esquema XML almacenado en SQL Server. Además, también está garantizado que el XML almacenado se ajusta a un esquema, ¡puede ser muy útil a veces! No se puede hacer eso con una columna llana de NVARCHAR (MAX) ...

Y no estoy de acuerdo con que el uso de XML sobre NVARCHAR (MAX) tenga alguna penalización de rendimiento, por el contrario. Como potencialmente estás recuperando menos datos de SQL Server cuando estás a punto de mostrar o recuperar el contenido, diría que es incluso un poco más rápido que NVARCHAR (MAX).