la consulta nunca llega a ejecutarse

31/10/2005 - 10:06 por Ricardo Escudero | Informe spam
tengo que actualizar cinco tablas con 27000 registros de un fichero de
texto, de los cuales unos miles ya existen, por lo que se tienen que
actualizar.

estas tablas no tienen triggers, sin embargo alguna de ellas , tienen muchas
relaciones.

la consulta inserta los articulos que no existen y actualizar algunos datos
de los que si existen.
el proceso de lectura del fichero y preparacion de los datos (que se
introducen en tablas temporales) tarda unos 10 segundos.

utilizo begin trans y rollback por si acaso.

bueno pues siempre me da tiempo de espera, he tenido que partir el fichero
en unos 210 registros y asi si funciona, pero si calculais son 130 archivos,
lo cual no es factible.

Alguien tiene alguna posible solucion para agilizar esto?

Podria inflir el begin trans en algo?

muchas gracias

Preguntas similare

Leer las respuestas

#11 Alejandro Mesa
31/10/2005 - 19:09 | Informe spam
Ricardo Escudero,

- Desde donde ejecutas este proceso?
- Pudieras mostrarnos el codigo asociado a este proceso?


AMB

"Ricardo Escudero" wrote:

son tablas donde la clave principal es indice.
tienen unos 5000000 de registros ya.
como dije muchas tablas apuntan a estas mediante relaciones.
la instruccion que hago es un simple insert into y update de la tabla
temporal a la tabla real.
El servidor es de doble procesador con windows 2000 server y sql server 2000
sp4

Saludos

"Miguel Egea" escribió en el mensaje
news:
> Hola Ricardo,
> en mi portatil SQL es capaz de ejecutar más de 40000 inserciones por
> segundo sin despeinarse, vamos que no me cuadra mucho lo que me dices.
> Seguramente el problema esté en los índices que existan para actualizar
> los datos. Por favor muestranos la estructura de la tabla destino y la
> estructura de la tabla temporal, así como la instruccio´n que usas para
> ejecutar ese comando, a ver si por ahí podemos ayudarte.
>
>
> Miguel Egea
> Visita mi web http://www.portalsql.com
> SQL Server MVP, Mentor
> Solid Quality Learning
> http://www.SolidQualityLearning.com
> "Solid Quality Learning is the trusted global provider of advanced
> education and solutions for the entire Microsoft database platform"
>
>
>
> "Ricardo Escudero" wrote in message
> news:%
>> tengo que actualizar cinco tablas con 27000 registros de un fichero de
>> texto, de los cuales unos miles ya existen, por lo que se tienen que
>> actualizar.
>>
>> estas tablas no tienen triggers, sin embargo alguna de ellas , tienen
>> muchas relaciones.
>>
>> la consulta inserta los articulos que no existen y actualizar algunos
>> datos de los que si existen.
>> el proceso de lectura del fichero y preparacion de los datos (que se
>> introducen en tablas temporales) tarda unos 10 segundos.
>>
>> utilizo begin trans y rollback por si acaso.
>>
>> bueno pues siempre me da tiempo de espera, he tenido que partir el
>> fichero en unos 210 registros y asi si funciona, pero si calculais son
>> 130 archivos, lo cual no es factible.
>>
>> Alguien tiene alguna posible solucion para agilizar esto?
>>
>> Podria inflir el begin trans en algo?
>>
>> muchas gracias
>>
>
>



Respuesta Responder a este mensaje
#12 Ricardo Escudero
02/11/2005 - 10:18 | Informe spam
el proceso esta divido en tres partes

1ª recogida de datos del fichero a una tabla temporal, mediante bulk insert
2ª poner estos datos recogidos en tablas ya preparadas para la insercion,
sabiendo ya en este paso si son datos nuevos o para actualizar.(para ello se
utiliza el campo de nombre "nuevo")
3ª que contiene:
a.-el begin trans
b.-insert into tabla_real_1 select campo1,campo2,... from
#tabla_temporal where nuevo=1
(este paso lo hago con cinco tablas distintas)
c.-update tabla_real_1 set campo1=t.campo1 from tabla_real_1 as
t2,#tabla_temporal as t1
where t1.campo3=t2.campo3 and nuevo=0
(este paso lo hago con cinco tablas distintas)
d.-en caso de fallo el rollback y en caso de exito el commit tran

Vuelvo a decir que no hay ningun trigger en estas tablas.

del proceso 1 al 2 tarda unos 10 segundos en realizarse.
el paso tres es donde se queda.

todo esta consulta la hago en un servidor remoto ,desde una pagina ASP, por
lo que no puedo acceder al sql server
la pagina ASP tiene tiempo de espera puesto a 90 segundos y el proceso de
ejecutar la consulta tambien tiene puesto tiempo de espera a 90 segundos.

Nota: yo en mi servidor, que es un servidor muy inferior a donde ocurre este
problema, se me ejecuta sin problemas en 60 segundos, aunque los datos
insertados son 300.000 , pero el fichero es el mismo.


un saludo
Ricardo Escudero



"Alejandro Mesa" escribió en el
mensaje news:
Ricardo Escudero,

- Desde donde ejecutas este proceso?
- Pudieras mostrarnos el codigo asociado a este proceso?


AMB

"Ricardo Escudero" wrote:

son tablas donde la clave principal es indice.
tienen unos 5000000 de registros ya.
como dije muchas tablas apuntan a estas mediante relaciones.
la instruccion que hago es un simple insert into y update de la tabla
temporal a la tabla real.
El servidor es de doble procesador con windows 2000 server y sql server
2000
sp4

Saludos

"Miguel Egea" escribió en el mensaje
news:
> Hola Ricardo,
> en mi portatil SQL es capaz de ejecutar más de 40000 inserciones por
> segundo sin despeinarse, vamos que no me cuadra mucho lo que me dices.
> Seguramente el problema esté en los índices que existan para actualizar
> los datos. Por favor muestranos la estructura de la tabla destino y la
> estructura de la tabla temporal, así como la instruccio´n que usas para
> ejecutar ese comando, a ver si por ahí podemos ayudarte.
>
>
> Miguel Egea
> Visita mi web http://www.portalsql.com
> SQL Server MVP, Mentor
> Solid Quality Learning
> http://www.SolidQualityLearning.com
> "Solid Quality Learning is the trusted global provider of advanced
> education and solutions for the entire Microsoft database platform"
>
>
>
> "Ricardo Escudero" wrote in message
> news:%
>> tengo que actualizar cinco tablas con 27000 registros de un fichero de
>> texto, de los cuales unos miles ya existen, por lo que se tienen que
>> actualizar.
>>
>> estas tablas no tienen triggers, sin embargo alguna de ellas , tienen
>> muchas relaciones.
>>
>> la consulta inserta los articulos que no existen y actualizar algunos
>> datos de los que si existen.
>> el proceso de lectura del fichero y preparacion de los datos (que se
>> introducen en tablas temporales) tarda unos 10 segundos.
>>
>> utilizo begin trans y rollback por si acaso.
>>
>> bueno pues siempre me da tiempo de espera, he tenido que partir el
>> fichero en unos 210 registros y asi si funciona, pero si calculais son
>> 130 archivos, lo cual no es factible.
>>
>> Alguien tiene alguna posible solucion para agilizar esto?
>>
>> Podria inflir el begin trans en algo?
>>
>> muchas gracias
>>
>
>



Respuesta Responder a este mensaje
#13 Miguel Egea
02/11/2005 - 12:00 | Informe spam
Ricardo, aisla lo que tarda el insert de lo que tarda el update, y nos lo
cuentas, estoy casi seguro que el insert es practicamente inmediato mientras
que el update es lo que se te tuesta

Cambia C por
update t2
set campo1=t1.campo1 from tabla_real_1 as
t2 inner join #tabla_temporal as t1 on t1.campo3=t2.campo3 and nuevo=0

Añade esto antes del begin tran

create index #ix_tttttttttt on #tabla_temporal1 (nuevo,campo3,campo1)

asegurate que tu tabla Tabla_real_1 tiene un índice por campo3.

Cuentanos que tal te fué.

Miguel Egea
Visita mi web http://www.portalsql.com
SQL Server MVP, Mentor
Solid Quality Learning
http://www.SolidQualityLearning.com
"Solid Quality Learning is the trusted global provider of advanced education
and solutions for the entire Microsoft database platform"




"Ricardo Escudero" wrote in message
news:
el proceso esta divido en tres partes

1ª recogida de datos del fichero a una tabla temporal, mediante bulk
insert
2ª poner estos datos recogidos en tablas ya preparadas para la insercion,
sabiendo ya en este paso si son datos nuevos o para actualizar.(para ello
se utiliza el campo de nombre "nuevo")
3ª que contiene:
a.-el begin trans
b.-insert into tabla_real_1 select campo1,campo2,... from
#tabla_temporal where nuevo=1
(este paso lo hago con cinco tablas distintas)
c.-update tabla_real_1 set campo1=t.campo1 from tabla_real_1 as
t2,#tabla_temporal as t1
where t1.campo3=t2.campo3 and nuevo=0
(este paso lo hago con cinco tablas distintas)
d.-en caso de fallo el rollback y en caso de exito el commit tran

Vuelvo a decir que no hay ningun trigger en estas tablas.

del proceso 1 al 2 tarda unos 10 segundos en realizarse.
el paso tres es donde se queda.

todo esta consulta la hago en un servidor remoto ,desde una pagina ASP,
por lo que no puedo acceder al sql server
la pagina ASP tiene tiempo de espera puesto a 90 segundos y el proceso de
ejecutar la consulta tambien tiene puesto tiempo de espera a 90 segundos.

Nota: yo en mi servidor, que es un servidor muy inferior a donde ocurre
este problema, se me ejecuta sin problemas en 60 segundos, aunque los
datos insertados son 300.000 , pero el fichero es el mismo.


un saludo
Ricardo Escudero



"Alejandro Mesa" escribió en el
mensaje news:
Ricardo Escudero,

- Desde donde ejecutas este proceso?
- Pudieras mostrarnos el codigo asociado a este proceso?


AMB

"Ricardo Escudero" wrote:

son tablas donde la clave principal es indice.
tienen unos 5000000 de registros ya.
como dije muchas tablas apuntan a estas mediante relaciones.
la instruccion que hago es un simple insert into y update de la tabla
temporal a la tabla real.
El servidor es de doble procesador con windows 2000 server y sql server
2000
sp4

Saludos

"Miguel Egea" escribió en el mensaje
news:
> Hola Ricardo,
> en mi portatil SQL es capaz de ejecutar más de 40000 inserciones por
> segundo sin despeinarse, vamos que no me cuadra mucho lo que me dices.
> Seguramente el problema esté en los índices que existan para
> actualizar
> los datos. Por favor muestranos la estructura de la tabla destino y la
> estructura de la tabla temporal, así como la instruccio´n que usas
> para
> ejecutar ese comando, a ver si por ahí podemos ayudarte.
>
>
> Miguel Egea
> Visita mi web http://www.portalsql.com
> SQL Server MVP, Mentor
> Solid Quality Learning
> http://www.SolidQualityLearning.com
> "Solid Quality Learning is the trusted global provider of advanced
> education and solutions for the entire Microsoft database platform"
>
>
>
> "Ricardo Escudero" wrote in message
> news:%
>> tengo que actualizar cinco tablas con 27000 registros de un fichero
>> de
>> texto, de los cuales unos miles ya existen, por lo que se tienen que
>> actualizar.
>>
>> estas tablas no tienen triggers, sin embargo alguna de ellas , tienen
>> muchas relaciones.
>>
>> la consulta inserta los articulos que no existen y actualizar algunos
>> datos de los que si existen.
>> el proceso de lectura del fichero y preparacion de los datos (que se
>> introducen en tablas temporales) tarda unos 10 segundos.
>>
>> utilizo begin trans y rollback por si acaso.
>>
>> bueno pues siempre me da tiempo de espera, he tenido que partir el
>> fichero en unos 210 registros y asi si funciona, pero si calculais
>> son
>> 130 archivos, lo cual no es factible.
>>
>> Alguien tiene alguna posible solucion para agilizar esto?
>>
>> Podria inflir el begin trans en algo?
>>
>> muchas gracias
>>
>
>









Respuesta Responder a este mensaje
#14 Ricardo Escudero
02/11/2005 - 16:39 | Informe spam
he probado tal y como me dices y mas o menos (en mi servidor,no me atrevo a
probarlo en el servidor del cliente) me tarda igual

"Miguel Egea" escribió en el mensaje
news:
Ricardo, aisla lo que tarda el insert de lo que tarda el update, y nos lo
cuentas, estoy casi seguro que el insert es practicamente inmediato
mientras que el update es lo que se te tuesta

Cambia C por
update t2
set campo1=t1.campo1 from tabla_real_1 as
t2 inner join #tabla_temporal as t1 on t1.campo3=t2.campo3 and nuevo=0

Añade esto antes del begin tran

create index #ix_tttttttttt on #tabla_temporal1 (nuevo,campo3,campo1)

asegurate que tu tabla Tabla_real_1 tiene un índice por campo3.

Cuentanos que tal te fué.

Miguel Egea
Visita mi web http://www.portalsql.com
SQL Server MVP, Mentor
Solid Quality Learning
http://www.SolidQualityLearning.com
"Solid Quality Learning is the trusted global provider of advanced
education and solutions for the entire Microsoft database platform"




"Ricardo Escudero" wrote in message
news:
el proceso esta divido en tres partes

1ª recogida de datos del fichero a una tabla temporal, mediante bulk
insert
2ª poner estos datos recogidos en tablas ya preparadas para la insercion,
sabiendo ya en este paso si son datos nuevos o para actualizar.(para ello
se utiliza el campo de nombre "nuevo")
3ª que contiene:
a.-el begin trans
b.-insert into tabla_real_1 select campo1,campo2,... from
#tabla_temporal where nuevo=1
(este paso lo hago con cinco tablas distintas)
c.-update tabla_real_1 set campo1=t.campo1 from tabla_real_1 as
t2,#tabla_temporal as t1
where t1.campo3=t2.campo3 and nuevo=0
(este paso lo hago con cinco tablas distintas)
d.-en caso de fallo el rollback y en caso de exito el commit tran

Vuelvo a decir que no hay ningun trigger en estas tablas.

del proceso 1 al 2 tarda unos 10 segundos en realizarse.
el paso tres es donde se queda.

todo esta consulta la hago en un servidor remoto ,desde una pagina ASP,
por lo que no puedo acceder al sql server
la pagina ASP tiene tiempo de espera puesto a 90 segundos y el proceso de
ejecutar la consulta tambien tiene puesto tiempo de espera a 90 segundos.

Nota: yo en mi servidor, que es un servidor muy inferior a donde ocurre
este problema, se me ejecuta sin problemas en 60 segundos, aunque los
datos insertados son 300.000 , pero el fichero es el mismo.


un saludo
Ricardo Escudero



"Alejandro Mesa" escribió en el
mensaje news:
Ricardo Escudero,

- Desde donde ejecutas este proceso?
- Pudieras mostrarnos el codigo asociado a este proceso?


AMB

"Ricardo Escudero" wrote:

son tablas donde la clave principal es indice.
tienen unos 5000000 de registros ya.
como dije muchas tablas apuntan a estas mediante relaciones.
la instruccion que hago es un simple insert into y update de la tabla
temporal a la tabla real.
El servidor es de doble procesador con windows 2000 server y sql server
2000
sp4

Saludos

"Miguel Egea" escribió en el
mensaje
news:
> Hola Ricardo,
> en mi portatil SQL es capaz de ejecutar más de 40000 inserciones por
> segundo sin despeinarse, vamos que no me cuadra mucho lo que me
> dices.
> Seguramente el problema esté en los índices que existan para
> actualizar
> los datos. Por favor muestranos la estructura de la tabla destino y
> la
> estructura de la tabla temporal, así como la instruccio´n que usas
> para
> ejecutar ese comando, a ver si por ahí podemos ayudarte.
>
>
> Miguel Egea
> Visita mi web http://www.portalsql.com
> SQL Server MVP, Mentor
> Solid Quality Learning
> http://www.SolidQualityLearning.com
> "Solid Quality Learning is the trusted global provider of advanced
> education and solutions for the entire Microsoft database platform"
>
>
>
> "Ricardo Escudero" wrote in message
> news:%
>> tengo que actualizar cinco tablas con 27000 registros de un fichero
>> de
>> texto, de los cuales unos miles ya existen, por lo que se tienen que
>> actualizar.
>>
>> estas tablas no tienen triggers, sin embargo alguna de ellas ,
>> tienen
>> muchas relaciones.
>>
>> la consulta inserta los articulos que no existen y actualizar
>> algunos
>> datos de los que si existen.
>> el proceso de lectura del fichero y preparacion de los datos (que se
>> introducen en tablas temporales) tarda unos 10 segundos.
>>
>> utilizo begin trans y rollback por si acaso.
>>
>> bueno pues siempre me da tiempo de espera, he tenido que partir el
>> fichero en unos 210 registros y asi si funciona, pero si calculais
>> son
>> 130 archivos, lo cual no es factible.
>>
>> Alguien tiene alguna posible solucion para agilizar esto?
>>
>> Podria inflir el begin trans en algo?
>>
>> muchas gracias
>>
>
>













Respuesta Responder a este mensaje
#15 Miguel Egea
03/11/2005 - 00:15 | Informe spam
Veamos, ejecuta

Set showplan_text on,
ejecuta tu consulta
pasanos lo que devuelve.
ejecuta set showplan_text off
ejecuta set statistics io on
ejecuta tu consulta
pasanos lo que devuelve.


Miguel Egea
Visita mi web http://www.portalsql.com
SQL Server MVP, Mentor
Solid Quality Learning
http://www.SolidQualityLearning.com
"Solid Quality Learning is the trusted global provider of advanced education
and solutions for the entire Microsoft database platform"



"Ricardo Escudero" wrote in message
news:%
he probado tal y como me dices y mas o menos (en mi servidor,no me atrevo
a probarlo en el servidor del cliente) me tarda igual

"Miguel Egea" escribió en el mensaje
news:
Ricardo, aisla lo que tarda el insert de lo que tarda el update, y nos lo
cuentas, estoy casi seguro que el insert es practicamente inmediato
mientras que el update es lo que se te tuesta

Cambia C por
update t2
set campo1=t1.campo1 from tabla_real_1 as
t2 inner join #tabla_temporal as t1 on t1.campo3=t2.campo3 and nuevo=0

Añade esto antes del begin tran

create index #ix_tttttttttt on #tabla_temporal1 (nuevo,campo3,campo1)

asegurate que tu tabla Tabla_real_1 tiene un índice por campo3.

Cuentanos que tal te fué.

Miguel Egea
Visita mi web http://www.portalsql.com
SQL Server MVP, Mentor
Solid Quality Learning
http://www.SolidQualityLearning.com
"Solid Quality Learning is the trusted global provider of advanced
education and solutions for the entire Microsoft database platform"




"Ricardo Escudero" wrote in message
news:
el proceso esta divido en tres partes

1ª recogida de datos del fichero a una tabla temporal, mediante bulk
insert
2ª poner estos datos recogidos en tablas ya preparadas para la
insercion,
sabiendo ya en este paso si son datos nuevos o para actualizar.(para
ello se utiliza el campo de nombre "nuevo")
3ª que contiene:
a.-el begin trans
b.-insert into tabla_real_1 select campo1,campo2,... from
#tabla_temporal where nuevo=1
(este paso lo hago con cinco tablas distintas)
c.-update tabla_real_1 set campo1=t.campo1 from tabla_real_1 as
t2,#tabla_temporal as t1
where t1.campo3=t2.campo3 and nuevo=0
(este paso lo hago con cinco tablas distintas)
d.-en caso de fallo el rollback y en caso de exito el commit tran

Vuelvo a decir que no hay ningun trigger en estas tablas.

del proceso 1 al 2 tarda unos 10 segundos en realizarse.
el paso tres es donde se queda.

todo esta consulta la hago en un servidor remoto ,desde una pagina ASP,
por lo que no puedo acceder al sql server
la pagina ASP tiene tiempo de espera puesto a 90 segundos y el proceso
de ejecutar la consulta tambien tiene puesto tiempo de espera a 90
segundos.

Nota: yo en mi servidor, que es un servidor muy inferior a donde ocurre
este problema, se me ejecuta sin problemas en 60 segundos, aunque los
datos insertados son 300.000 , pero el fichero es el mismo.


un saludo
Ricardo Escudero



"Alejandro Mesa" escribió en
el mensaje news:
Ricardo Escudero,

- Desde donde ejecutas este proceso?
- Pudieras mostrarnos el codigo asociado a este proceso?


AMB

"Ricardo Escudero" wrote:

son tablas donde la clave principal es indice.
tienen unos 5000000 de registros ya.
como dije muchas tablas apuntan a estas mediante relaciones.
la instruccion que hago es un simple insert into y update de la tabla
temporal a la tabla real.
El servidor es de doble procesador con windows 2000 server y sql
server 2000
sp4

Saludos

"Miguel Egea" escribió en el
mensaje
news:
> Hola Ricardo,
> en mi portatil SQL es capaz de ejecutar más de 40000 inserciones por
> segundo sin despeinarse, vamos que no me cuadra mucho lo que me
> dices.
> Seguramente el problema esté en los índices que existan para
> actualizar
> los datos. Por favor muestranos la estructura de la tabla destino y
> la
> estructura de la tabla temporal, así como la instruccio´n que usas
> para
> ejecutar ese comando, a ver si por ahí podemos ayudarte.
>
>
> Miguel Egea
> Visita mi web http://www.portalsql.com
> SQL Server MVP, Mentor
> Solid Quality Learning
> http://www.SolidQualityLearning.com
> "Solid Quality Learning is the trusted global provider of advanced
> education and solutions for the entire Microsoft database platform"
>
>
>
> "Ricardo Escudero" wrote in message
> news:%
>> tengo que actualizar cinco tablas con 27000 registros de un fichero
>> de
>> texto, de los cuales unos miles ya existen, por lo que se tienen
>> que
>> actualizar.
>>
>> estas tablas no tienen triggers, sin embargo alguna de ellas ,
>> tienen
>> muchas relaciones.
>>
>> la consulta inserta los articulos que no existen y actualizar
>> algunos
>> datos de los que si existen.
>> el proceso de lectura del fichero y preparacion de los datos (que
>> se
>> introducen en tablas temporales) tarda unos 10 segundos.
>>
>> utilizo begin trans y rollback por si acaso.
>>
>> bueno pues siempre me da tiempo de espera, he tenido que partir el
>> fichero en unos 210 registros y asi si funciona, pero si calculais
>> son
>> 130 archivos, lo cual no es factible.
>>
>> Alguien tiene alguna posible solucion para agilizar esto?
>>
>> Podria inflir el begin trans en algo?
>>
>> muchas gracias
>>
>
>

















email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida