Problema después de convertir la columna de la tabla de "Texto" a VARCHAR (MAX) -- sql campo con sql-server-2005 campo con text campo con varchar camp Relacionados El problema

Issue After Converting Table Column From “Text” to Varchar(max)


3
vote

problema

Español

Tuve una tabla llamada Persona con la columna de persondescripción que era de tipo "texto". Tuve problemas con la actualización de esta columna, así que corrí el guión

Alter Table Dbo.Person Alter Column Persondescription varchar (max)

para cambiar la columna para ser varchar (max). Todo esto estaba bien y corrió al instante. Sin embargo, ahora he notado que en cualquier momento intento actualizar esta columna, entonces está tomando hasta 3-4 minutos para ejecutar. Consulta es

Actualizar persona establecida personescripción = 'Descripción de las personas' donde se persond = 18

Después de que esta actualización haya ejecutado, entonces se ejecuta al instante. Todo esto está bien, pero cuando este cambio va a la producción, entonces esta tabla tiene un millón de registros, por lo que cada persona que inicie sesión va a pasar el tiempo de espera cuando se ejecute. ¿Alguien puede decirme cómo puedo prevenir esto? ¿Hay otro guión, etc. que necesito correr? Después de ejecutar la actualización, vi que Statman se ejecuta en SQLSERVER, que es lo que se está tomando el tiempo.

gracias Niall

Original en ingles

I had a table called Person with column PersonDescription which was of type "text". I had issues with updating this column so i ran the script

ALTER TABLE dbo.Person ALTER COLUMN PersonDescription VARCHAR(max)

to change the column to be varchar(max). This was all fine and ran instantly. However now i have noticed that anytime i try to update this column then It is taking up to 3-4 mins to execute. Query is

Update Person set PersonDescription ='persons description' where personid=18

After this update is ran then it executes instantly. This is all fine but when this change goes to production then this table has a million records so every person that logs in is going to timeout when this runs. Can anyone tell me how i can prevent this. Is there another script etc that i need to run. After running the update i saw that Statman runs on sqlserver which is what is taking the time.

thanks Niall

           
         
         

Lista de respuestas

0
 
vote

Es mi opinión que el problema se debe al cálculo de SQL Server si debe almacenar los datos en una blob o en la fila.

Ver: usando VARCHAR (MAX) vs Texto en SQL Server

"El tipo VarCHar (MAX) es un reemplazo para el texto. La diferencia básica es que un tipo de texto siempre almacenará los datos en un blob, mientras que el tipo VarCHAR (MAX) intentará almacenar los datos directamente en la fila a menos que Supera la limitación de 8k y en ese momento lo almacena en un blob ".

¿También está utilizando un índice de texto completo? Deshabilitar índices, actualizar, reconstruir índices.

¿Has intentado crear una nueva tabla y copiar los registros a ella? ¿Todavía tienes los mismos problemas de rendimiento?

 

It is my opinion that the issue is due to SQL server calculating if it should store the data in a blob or the row.

See:Using varchar(MAX) vs TEXT on SQL Server

"The VARCHAR(MAX) type is a replacement for TEXT. The basic difference is that a TEXT type will always store the data in a blob whereas the VARCHAR(MAX) type will attempt to store the data directly in the row unless it exceeds the 8k limitation and at that point it stores it in a blob."

Are also you using a full-text index? Disable indexes, update, rebuild indexes.

Have you tried creating a new table and copying records to it? Do you still have the same performance issues?

 
 

Relacionados problema

0  MySQLI dando un error cuando se inicia la cadena con un número  ( Mysqli giving an error when string starts with a number ) 
Se supone que mi script de PHP se debe buscar a través de una base de datos de clientes, funciona de manera excelente y todo, excepto cuando el nombre del cli...

0  Consulta de GRILS Forzando la conversión implícita en los parámetros de cadena  ( Grails query forcing implicit conversion on string parameters ) 
Estoy ejecutando una simple consulta de grieles con un parámetro de cadena. Cuando se vea la consulta que se genera en SQL Server Profiler, la consulta obliga...

21  ¿Cómo cambiar el tipo VARCHAR a DateTime usando ALTER EN MYSQL?  ( How to change varchar type to datetime using alter in mysql ) 
¿Cómo puedo cambiar VARCHAR() TIPO EN DATETIME USO //VIEW CHANGE - ALSO ADDS INITIAL SOURCES PER DAY VIEW viewDisplay: function(view) { ...

23  MySQL: seleccione solo valores numéricos de VarChar Column  ( Mysql select only numeric values from varchar column ) 
Considere la siguiente tabla: create table mixedvalues (value varchar(50)); insert into mixedvalues values ('100'), ('ABC100'), ('200'), ('ABC200'), ('30...

63  ¿Es un VARCHAR (20000) válido en MySQL?  ( Is a varchar20000 valid in mysql ) 
Necesito una clarificación de la longitud máxima de un campo VarChar en MySQL. Siempre he pensado que la longitud máxima era 255 (255 ¿Qué? Caracteres que h...

2  SQL Server 2000 VARCHAR (8000) truncando a 256?  ( Sql server 2000 varchar8000 truncate to 256 ) 
Tengo SQL Server 2000 y tengo un procedimiento almacenado que tiene 9988777662 como varchar(8000) y tengo un bucle que sigue concatenado el resultado en ...

2  Convertir DD / MM / YYYY hasta la fecha en SQL Server  ( Convert dd mm yyyy to date in sql server ) 
Estoy pasando nueces tratando de convertir una columna de tipo cadena en la fecha. El nombre de la columna es StartDate , que contiene un formato de fecha ...

2  ¿El mejor método para la validación de la fecha VARCHAR en SYBASE (T-SQL)?  ( Best method for varchar date validation in sybase t sql ) 
Tengo un procedimiento almacenado que toma como parámetro un varchar , que tiene que ser fundido como un fecha y hora para su uso posterior: NumberForma...

3  ¿Cómo insertar un número de flotador con cotizaciones en un campo numérico?  ( How to insert a float number with quotes into a numeric field ) 
Tengo un script largo que intenta insertar valores de flotador con cotizaciones (es decir, '15.6' ) en campos de flotación utilizando T-SQL. Tengo razones ...

1427  ¿Cuál es la diferencia entre VARCHAR y NVARCHAR?  ( What is the difference between varchar and nvarchar ) 
¿Es solo que nvarchar admite caracteres multibyte? Si ese es el caso, ¿existe realmente algún punto, aparte de las inquietudes de almacenamiento, a usar va...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos