Rendimiento

26/08/2004 - 15:05 por Bárbara González | Informe spam
Saludos al grupo
Tengo una aplicacion publicada en un hosting arrendado que accesa una base
de datos en un servidor de mi empresa, el problema es el rendimiento ya que
uso el manejador SQL SERVER 2000 pero de DESARROLLO y estoy logrando con
esto un muy pobre rendimiento. Que me pueden aconsejar para mejorar en
rendimiento con este manejador o si debo cambiar a la version comercial para
mejorarlo drasticamente?

Bye
BG

Preguntas similare

Leer las respuestas

#6 Maxi
27/08/2004 - 17:08 | Informe spam
Hola, los motores de BDD ys obre todo SqlServer no estan pensados ni
optimizados para trabajar con cursores, para lo que estan pensados y
optimizados es para trabajar con conjunto de datos.

El tema es que para un desarrollador es mucho mas facil hacer las cosas con
cursores que trabajar con comjuntos de datos, pero el uso de cursores es muy
malo porque degrada mucho la performance.

Deberias ir estudiando un poco el tema de SqlServer y para ello puedes
empezar adquiriendo algun buen libro o haciendo un buen curso, pero si
quieres que tus aplicaciones sean buenas, rapidas, seguras, vas a tener que
empezar a trabajar de forma corporativa, SqlServer no es como Access y ahi
esta la diferencia mayor.

Toda cosa que pienses que debas usar un cursor para resolverlo, lo expones
aqui y veras como los amigos de este news haran lo imposible para destruir
el cursor y ayudarte a armar la query de forma eficiente.

Ahora, los cursores estan para usarlos, pero hay que saber cuando y donde, y
ese es el punto :-)


Salu2
Maxi
Buenos Aires - Argentina
Desarrollador Microsoft 3 Estrellas .NET
Nunca consideres el estudio como una obligación sino como
una oportunidad para penetrar en el bello y maravillosos
mundo del saber.
- Albert Einstein



"Bárbara González" escribió en el mensaje
news:
Si no uso cursores que debo usar entonces. No soy muy experta en SQL


SERVER.

Bye
BG

"Antonio Ortiz" escribió en el mensaje
news:uxM9hw$
> Ya lo dijeron los expertos, revisa tus CURSORES
>
> Yo apuntaria por ahi, pues tengo trabajando aplicaciones MSDE 1.0 (Sql
> Server 7 version de escritorio) con excelente rendimiento
>
> saludos,
>
> Antonio Ortiz Ramirez
> asesor en sistemas
> ant(a)aortiz.net
> www.aortiz.net
> www.progvisual.com
>
>
> "Bárbara González" escribió en el mensaje
> news:
> > Saludos al grupo
> > Tengo una aplicacion publicada en un hosting arrendado que accesa una
base
> > de datos en un servidor de mi empresa, el problema es el rendimiento


ya
> que
> > uso el manejador SQL SERVER 2000 pero de DESARROLLO y estoy logrando


con
> > esto un muy pobre rendimiento. Que me pueden aconsejar para mejorar en
> > rendimiento con este manejador o si debo cambiar a la version


comercial
> para
> > mejorarlo drasticamente?
> >
> > Bye
> > BG
> >
> >
>
>







Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.740 / Virus Database: 494 - Release Date: 16/08/2004
Respuesta Responder a este mensaje
#7 Bárbara González
27/08/2004 - 18:13 | Informe spam
Eres muy amable con tu informacion, aunque no la capto muy bien ya que no se
cuando estoy usando cursores o conjunto de datos como tu lo llamas. Bueno
aqui te mando algo del codigo a ver si puedes decirme si es un cursor o un
conjunto de datos.

EJEMPLO DE FUENTE
System.Data.SqlClient.SqlConnection x_coneccion = new
System.Data.SqlClient.SqlConnection(coneccion);

System.Data.SqlClient.SqlCommand x_comando = new
System.Data.SqlClient.SqlCommand(

"SELECT * FROM _usuarios " +

"WHERE (nick = @Nick) AND (clave = @Clave)",x_coneccion);

x_comando.Parameters.Add("@Nick" , SqlDbType.VarChar,20).Value = nick;

x_comando.Parameters.Add("@Clave", SqlDbType.VarChar,20).Value = clave;

x_coneccion.Open();

System.Data.SqlClient.SqlDataReader x_data = x_comando.ExecuteReader();

if (x_data.Read())

{

x_resultado.id = x_data.GetSqlInt32(0).Value;

x_resultado.nombre = x_data.GetSqlString(1).Value;

x_resultado.nick = x_data.GetSqlString(2).Value;

x_resultado.clave = x_data.GetSqlString(3).Value;

x_resultado.vence = x_data.GetSqlDateTime(4).Value;

x_resultado.estado = x_data.GetSqlString(5).Value;

x_resultado.nc = x_nc.Nc(x_data.GetSqlString(6).Value);

}


De todas maneras gracias por tus grandes consejos
Bye
BG

"Maxi" escribió en el mensaje
news:
Hola, los motores de BDD ys obre todo SqlServer no estan pensados ni
optimizados para trabajar con cursores, para lo que estan pensados y
optimizados es para trabajar con conjunto de datos.

El tema es que para un desarrollador es mucho mas facil hacer las cosas


con
cursores que trabajar con comjuntos de datos, pero el uso de cursores es


muy
malo porque degrada mucho la performance.

Deberias ir estudiando un poco el tema de SqlServer y para ello puedes
empezar adquiriendo algun buen libro o haciendo un buen curso, pero si
quieres que tus aplicaciones sean buenas, rapidas, seguras, vas a tener


que
empezar a trabajar de forma corporativa, SqlServer no es como Access y ahi
esta la diferencia mayor.

Toda cosa que pienses que debas usar un cursor para resolverlo, lo expones
aqui y veras como los amigos de este news haran lo imposible para destruir
el cursor y ayudarte a armar la query de forma eficiente.

Ahora, los cursores estan para usarlos, pero hay que saber cuando y donde,


y
ese es el punto :-)


Salu2
Maxi
Buenos Aires - Argentina
Desarrollador Microsoft 3 Estrellas .NET
Nunca consideres el estudio como una obligación sino como
una oportunidad para penetrar en el bello y maravillosos
mundo del saber.
- Albert Einstein



"Bárbara González" escribió en el mensaje
news:
> Si no uso cursores que debo usar entonces. No soy muy experta en SQL
SERVER.
>
> Bye
> BG
>
> "Antonio Ortiz" escribió en el mensaje
> news:uxM9hw$
> > Ya lo dijeron los expertos, revisa tus CURSORES
> >
> > Yo apuntaria por ahi, pues tengo trabajando aplicaciones MSDE 1.0 (Sql
> > Server 7 version de escritorio) con excelente rendimiento
> >
> > saludos,
> >
> > Antonio Ortiz Ramirez
> > asesor en sistemas
> > ant(a)aortiz.net
> > www.aortiz.net
> > www.progvisual.com
> >
> >
> > "Bárbara González" escribió en el mensaje
> > news:
> > > Saludos al grupo
> > > Tengo una aplicacion publicada en un hosting arrendado que accesa


una
> base
> > > de datos en un servidor de mi empresa, el problema es el rendimiento
ya
> > que
> > > uso el manejador SQL SERVER 2000 pero de DESARROLLO y estoy logrando
con
> > > esto un muy pobre rendimiento. Que me pueden aconsejar para mejorar


en
> > > rendimiento con este manejador o si debo cambiar a la version
comercial
> > para
> > > mejorarlo drasticamente?
> > >
> > > Bye
> > > BG
> > >
> > >
> >
> >
>
>



Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.740 / Virus Database: 494 - Release Date: 16/08/2004


Respuesta Responder a este mensaje
#8 Maxi
27/08/2004 - 20:38 | Informe spam
Hola, un cursor es cuando recorres los registros dentro de un bucle por ej

for n = 1 to recordset.recordcount


recordset.movenext
next


En sql tambien podes hacer algo similar con

OPEN Employee_Cursor

FETCH NEXT FROM Employee_Cursor
WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM Employee_Cursor
END

CLOSE Employee_Cursor
DEALLOCATE Employee_Cursor


por ej!! estas haciendo este tipo de operaciones?

Usas Stores?
Tenes buenos Indices?





Salu2
Maxi
Buenos Aires - Argentina
Desarrollador Microsoft 3 Estrellas .NET
Nunca consideres el estudio como una obligación sino como
una oportunidad para penetrar en el bello y maravillosos
mundo del saber.
- Albert Einstein



"Bárbara González" escribió en el mensaje
news:
Eres muy amable con tu informacion, aunque no la capto muy bien ya que no


se
cuando estoy usando cursores o conjunto de datos como tu lo llamas. Bueno
aqui te mando algo del codigo a ver si puedes decirme si es un cursor o un
conjunto de datos.

EJEMPLO DE FUENTE
System.Data.SqlClient.SqlConnection x_coneccion = new
System.Data.SqlClient.SqlConnection(coneccion);

System.Data.SqlClient.SqlCommand x_comando = new
System.Data.SqlClient.SqlCommand(

"SELECT * FROM _usuarios " +

"WHERE (nick = @Nick) AND (clave = @Clave)",x_coneccion);

x_comando.Parameters.Add("@Nick" , SqlDbType.VarChar,20).Value = nick;

x_comando.Parameters.Add("@Clave", SqlDbType.VarChar,20).Value = clave;

x_coneccion.Open();

System.Data.SqlClient.SqlDataReader x_data = x_comando.ExecuteReader();

if (x_data.Read())

{

x_resultado.id = x_data.GetSqlInt32(0).Value;

x_resultado.nombre = x_data.GetSqlString(1).Value;

x_resultado.nick = x_data.GetSqlString(2).Value;

x_resultado.clave = x_data.GetSqlString(3).Value;

x_resultado.vence = x_data.GetSqlDateTime(4).Value;

x_resultado.estado = x_data.GetSqlString(5).Value;

x_resultado.nc = x_nc.Nc(x_data.GetSqlString(6).Value);

}


De todas maneras gracias por tus grandes consejos
Bye
BG

"Maxi" escribió en el mensaje
news:
> Hola, los motores de BDD ys obre todo SqlServer no estan pensados ni
> optimizados para trabajar con cursores, para lo que estan pensados y
> optimizados es para trabajar con conjunto de datos.
>
> El tema es que para un desarrollador es mucho mas facil hacer las cosas
con
> cursores que trabajar con comjuntos de datos, pero el uso de cursores es
muy
> malo porque degrada mucho la performance.
>
> Deberias ir estudiando un poco el tema de SqlServer y para ello puedes
> empezar adquiriendo algun buen libro o haciendo un buen curso, pero si
> quieres que tus aplicaciones sean buenas, rapidas, seguras, vas a tener
que
> empezar a trabajar de forma corporativa, SqlServer no es como Access y


ahi
> esta la diferencia mayor.
>
> Toda cosa que pienses que debas usar un cursor para resolverlo, lo


expones
> aqui y veras como los amigos de este news haran lo imposible para


destruir
> el cursor y ayudarte a armar la query de forma eficiente.
>
> Ahora, los cursores estan para usarlos, pero hay que saber cuando y


donde,
y
> ese es el punto :-)
>
>
> Salu2
> Maxi
> Buenos Aires - Argentina
> Desarrollador Microsoft 3 Estrellas .NET
> Nunca consideres el estudio como una obligación sino como
> una oportunidad para penetrar en el bello y maravillosos
> mundo del saber.
> - Albert Einstein
>
>
>
> "Bárbara González" escribió en el mensaje
> news:
> > Si no uso cursores que debo usar entonces. No soy muy experta en SQL
> SERVER.
> >
> > Bye
> > BG
> >
> > "Antonio Ortiz" escribió en el mensaje
> > news:uxM9hw$
> > > Ya lo dijeron los expertos, revisa tus CURSORES
> > >
> > > Yo apuntaria por ahi, pues tengo trabajando aplicaciones MSDE 1.0


(Sql
> > > Server 7 version de escritorio) con excelente rendimiento
> > >
> > > saludos,
> > >
> > > Antonio Ortiz Ramirez
> > > asesor en sistemas
> > > ant(a)aortiz.net
> > > www.aortiz.net
> > > www.progvisual.com
> > >
> > >
> > > "Bárbara González" escribió en el mensaje
> > > news:
> > > > Saludos al grupo
> > > > Tengo una aplicacion publicada en un hosting arrendado que accesa
una
> > base
> > > > de datos en un servidor de mi empresa, el problema es el


rendimiento
> ya
> > > que
> > > > uso el manejador SQL SERVER 2000 pero de DESARROLLO y estoy


logrando
> con
> > > > esto un muy pobre rendimiento. Que me pueden aconsejar para


mejorar
en
> > > > rendimiento con este manejador o si debo cambiar a la version
> comercial
> > > para
> > > > mejorarlo drasticamente?
> > > >
> > > > Bye
> > > > BG
> > > >
> > > >
> > >
> > >
> >
> >
>
>
>
> Outgoing mail is certified Virus Free.
> Checked by AVG anti-virus system (http://www.grisoft.com).
> Version: 6.0.740 / Virus Database: 494 - Release Date: 16/08/2004
>
>







Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.740 / Virus Database: 494 - Release Date: 16/08/2004
Respuesta Responder a este mensaje
#9 Manuel Etcheto
29/08/2004 - 05:37 | Informe spam
Además de lo que te indica Maxi:

Sí, el data reader funciona como un cursor rápido solo lectura hacia
adelante, y si no lo cierras inmediatamente, dejas la conexión ocupada y te
dará problemas...

En tu caso, si el resultado solo puede tener una fila y solo necesitas los
valores de 4 campos, lo recomendable sería usar 4 parámetros output en un
command y recogerlos luego en variables, no trabajar con un registro de la
bd.

Si tienes duda de cómo hacerlo con output avisa aquí...

Suerte
Manuel


"Bárbara González" wrote in message
news:
Eres muy amable con tu informacion, aunque no la capto muy bien ya que no


se
cuando estoy usando cursores o conjunto de datos como tu lo llamas. Bueno
aqui te mando algo del codigo a ver si puedes decirme si es un cursor o un
conjunto de datos.

EJEMPLO DE FUENTE
System.Data.SqlClient.SqlConnection x_coneccion = new
System.Data.SqlClient.SqlConnection(coneccion);

System.Data.SqlClient.SqlCommand x_comando = new
System.Data.SqlClient.SqlCommand(

"SELECT * FROM _usuarios " +

"WHERE (nick = @Nick) AND (clave = @Clave)",x_coneccion);

x_comando.Parameters.Add("@Nick" , SqlDbType.VarChar,20).Value = nick;

x_comando.Parameters.Add("@Clave", SqlDbType.VarChar,20).Value = clave;

x_coneccion.Open();

System.Data.SqlClient.SqlDataReader x_data = x_comando.ExecuteReader();

if (x_data.Read())

{

x_resultado.id = x_data.GetSqlInt32(0).Value;

x_resultado.nombre = x_data.GetSqlString(1).Value;

x_resultado.nick = x_data.GetSqlString(2).Value;

x_resultado.clave = x_data.GetSqlString(3).Value;

x_resultado.vence = x_data.GetSqlDateTime(4).Value;

x_resultado.estado = x_data.GetSqlString(5).Value;

x_resultado.nc = x_nc.Nc(x_data.GetSqlString(6).Value);

}


De todas maneras gracias por tus grandes consejos
Bye
BG

"Maxi" escribió en el mensaje
news:
> Hola, los motores de BDD ys obre todo SqlServer no estan pensados ni
> optimizados para trabajar con cursores, para lo que estan pensados y
> optimizados es para trabajar con conjunto de datos.
>
> El tema es que para un desarrollador es mucho mas facil hacer las cosas
con
> cursores que trabajar con comjuntos de datos, pero el uso de cursores es
muy
> malo porque degrada mucho la performance.
>
> Deberias ir estudiando un poco el tema de SqlServer y para ello puedes
> empezar adquiriendo algun buen libro o haciendo un buen curso, pero si
> quieres que tus aplicaciones sean buenas, rapidas, seguras, vas a tener
que
> empezar a trabajar de forma corporativa, SqlServer no es como Access y


ahi
> esta la diferencia mayor.
>
> Toda cosa que pienses que debas usar un cursor para resolverlo, lo


expones
> aqui y veras como los amigos de este news haran lo imposible para


destruir
> el cursor y ayudarte a armar la query de forma eficiente.
>
> Ahora, los cursores estan para usarlos, pero hay que saber cuando y


donde,
y
> ese es el punto :-)
>
>
> Salu2
> Maxi
> Buenos Aires - Argentina
> Desarrollador Microsoft 3 Estrellas .NET
> Nunca consideres el estudio como una obligación sino como
> una oportunidad para penetrar en el bello y maravillosos
> mundo del saber.
> - Albert Einstein
>
>
>
> "Bárbara González" escribió en el mensaje
> news:
> > Si no uso cursores que debo usar entonces. No soy muy experta en SQL
> SERVER.
> >
> > Bye
> > BG
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida