Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-11-2006
mpedrero mpedrero is offline
Registrado
 
Registrado: sep 2006
Posts: 9
Poder: 0
mpedrero Va por buen camino
Conexión ADO

Estoy conectando a una base de datos de SQL Server 2005 a traves de componentes ADO de Delphi, necesito saber de que forma puedo hacer que las transacciones (Inserción, Modificación, Eliminación...) sean lo mas rápidas posible...

Me surge un problema con esto, al realizar dichas transacciones, estas me parecen excesivamente lentas:
Con 10000 registros --> Inserción: 1 min. 54 seg., Modificación: 1 min. 52 seg., Eliminación: 1 min 52 seg.

No uso sentencias SQL, de momento prefiero evitarlas...

¿Como puedo hacerlas mas rapidas?, quiero reducirlo a segundos, por ejemplo con en BDE de paradox en insertar la misma cantidad de registros no llega ni a los 5 segundos... yo quiero con ADO conseguir el mismo tiempo...

¿Alguien puede ayudarme, aconsejarme?, Gracias a todos...
Responder Con Cita
  #2  
Antiguo 27-11-2006
mensana mensana is offline
Miembro
 
Registrado: sep 2006
Posts: 69
Poder: 18
mensana Va por buen camino
Cita:
Empezado por mpedrero
... No uso sentencias SQL, de momento prefiero evitarlas...
...¿Como puedo hacerlas mas rapidas?
Usa sentencias SQL (insert into tabla ...) en lugar de Insert+Post

Prepara las sentencias con parámetros.

Utiliza transacciones de n-registros (valor de n, según pruebas, 1.000, 10.000, ...)
Responder Con Cita
  #3  
Antiguo 27-11-2006
mpedrero mpedrero is offline
Registrado
 
Registrado: sep 2006
Posts: 9
Poder: 0
mpedrero Va por buen camino
Aun usando sentencias SQL, y aplicando cambios, segun un número de registros --> (if i MOD 1000 = 0 then...), sigo obteniendo resultados ridículos, has hablado de preparar las transacciones, ¿como las preparo para un resultado optimo?...
Responder Con Cita
  #4  
Antiguo 28-11-2006
Avatar de casacham
casacham casacham is offline
Miembro
 
Registrado: abr 2006
Ubicación: Cordoba->Argentina. Arboleas->Almeria->España
Posts: 184
Poder: 18
casacham Va por buen camino
Hacete amigo del SQL

Hola, vas a tener que vencer ese miedo e iniciarte en SQL, ya que a los de Microsfot les encanta y eso te haceleraria tus procedimientos.
Bien por el amigo que te dio ese codigo, usalo, realmente es muy rapido
Responder Con Cita
  #5  
Antiguo 28-11-2006
mensana mensana is offline
Miembro
 
Registrado: sep 2006
Posts: 69
Poder: 18
mensana Va por buen camino
Cita:
Empezado por mpedrero
... has hablado de preparar las transacciones
Se preparan las sentencias, no las transacciones.

Ejemplo

// Pseudocodigo

// Los parámetros se marcan con el símbolo ":"
SQL.Text := 'insert into tabla (campo1, campo2, ...) values (:Valor1, :Valor2)';
SQL.Prepare;
for i := to 1000 do begin
SQL.Param('Valor1').AsInteger := i;
SQL.Param('Valor2').AsInteger := Random(i);
SQL.Execute()
end;
Responder Con Cita
  #6  
Antiguo 28-11-2006
mpedrero mpedrero is offline
Registrado
 
Registrado: sep 2006
Posts: 9
Poder: 0
mpedrero Va por buen camino
Buenas de nuevo, no tengo miedo al SQL, de hecho me gusta SQL, pero soy un mandao... y no ha sido idea mia usarlo como primer recurso, jeje, es una opción que ya tenia contemplada, mi problema a esto viene a que quiero migrar de una base de datos a otra, usando el código existente y realizando el mínimo de cambios posible (se que habr´1 que cambiar muuucho código, pero quiero que sea lo menos...), me he decantado por SQL server, pero se que puede ser muy veloz, y mi intención es que asi sea, quiero que me ayudeis con esto, porque, ademas, la velocidad de SQL Server no se contempla en nigun otro foro o página web, y es un tema interesante, acelerar las transacciones, y creo que el futuro es ADO (o al menos eso se pretende con ADO .NET)...

Gracias por el pequeño trozo de código que me has enviado, me ha ayudado, pero aun no es suficiente, necesito mas información, admito todo tipo de sugerencias, gracias... Más ayuda por favor...

Última edición por mpedrero fecha: 28-11-2006 a las 13:35:48.
Responder Con Cita
  #7  
Antiguo 28-11-2006
mpedrero mpedrero is offline
Registrado
 
Registrado: sep 2006
Posts: 9
Poder: 0
mpedrero Va por buen camino
Cita:
Empezado por mensana
Se preparan las sentencias, no las transacciones.

Ejemplo

// Pseudocodigo

// Los parámetros se marcan con el símbolo ":"
SQL.Text := 'insert into tabla (campo1, campo2, ...) values (:Valor1, :Valor2)';
SQL.Prepare;
for i := to 1000 do begin
SQL.Param('Valor1').AsInteger := i;
SQL.Param('Valor2').AsInteger := Random(i);
SQL.Execute()
end;
¿Que componente has usado para realizar esta sentencia?. yo utilice un ADOQuery, y las propiedades/metodos, no se asemejan a las del ejemplo, siguen siendo tiempos ridículos, para 10000 registros me tarda 1 minnuto y 28 segundos aproximadamente, quiero que sea en segundos...
gracias...
Responder Con Cita
  #8  
Antiguo 28-11-2006
mensana mensana is offline
Miembro
 
Registrado: sep 2006
Posts: 69
Poder: 18
mensana Va por buen camino
[quote=mpedrero]
...¿Que componente has usado para realizar esta sentencia?
... para 10000 registros me tarda 1 minnuto y 28 segundos aproximadamente, quiero que sea en segundos...
/quote]

Es pseudocódigo.

Nunca conseguirás que SQL-Server sea tan rápido como Paradox.
Nunca conseguirás que Paradox sea tan fiable como SQL-Server
Responder Con Cita
  #9  
Antiguo 28-11-2006
mpedrero mpedrero is offline
Registrado
 
Registrado: sep 2006
Posts: 9
Poder: 0
mpedrero Va por buen camino
[quote=mensana]
Cita:
Empezado por mpedrero
...¿Que componente has usado para realizar esta sentencia?
... para 10000 registros me tarda 1 minnuto y 28 segundos aproximadamente, quiero que sea en segundos...
/quote]

Es pseudocódigo.

Nunca conseguirás que SQL-Server sea tan rápido como Paradox.
Nunca conseguirás que Paradox sea tan fiable como SQL-Server
Ya, eso ya lo se, pero en estos momentos necesito velocidad, a costa de fiabliidad...

Entonces... siendo asi, ¿que base de datos cliente/servidor, es muy rapida, y que pueda utilizar con ADO?...

Como siempre... gracias...
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
conexion en red alfil123 Conexión con bases de datos 2 02-11-2006 22:09:14
Conexión a VPN Novás Internet 1 22-08-2006 17:18:17
php y conexion a bd halizia PHP 1 19-07-2006 15:40:34
Conexión ADO scooterjgm Conexión con bases de datos 2 03-04-2006 18:13:21
Conexión SSH danielcordovahe Varios 4 27-05-2005 01:40:23


La franja horaria es GMT +2. Ahora son las 12:53:42.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi