Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-11-2007
kverna kverna is offline
Miembro
 
Registrado: may 2006
Posts: 29
Poder: 0
kverna Va por buen camino
Comparacion IBTable.post y Procedimientos Almacenados

Amigos, necesito saber si conocen algun link donde se compare la eficiencia entre grabar registros usando el comando IBtable.post y usando un Store Procedure para el mismo fin.

Gracias
Responder Con Cita
  #2  
Antiguo 30-11-2007
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
No conozco ninguno, pero si haces la prueba, por favor, coméntalo por aquí, gracias
Responder Con Cita
  #3  
Antiguo 30-11-2007
Avatar de RolphyReyes
RolphyReyes RolphyReyes is offline
Miembro
 
Registrado: ago 2004
Ubicación: Santo Domingo
Posts: 285
Poder: 20
RolphyReyes Va por buen camino
Exclamation

Saludos.

No conozco ningun link. Pero puedes buscar referencia el porque NO se debe utilizar TTable en aplicaciones Cliente/Servidor.

Una de las principales caracteristicas de porque no es que esos componentes hacen Fetch de todos los registros y dependiendo del ambiente puede que tu aplicacion no funcione adecuadamente.

Los Stored Procedure y Triggers hacen el trabajo en el servidor que es lo mas recomendado porque asi liberas el cliente; ademas de que el servidor debe ser mejor equipo que las maquinas clientes.

Otro asunto a tomar en consideracion es que si decides cambiar tu motor de BD y tienes todas (o el gran porcentaje) de tus procesos en la BD tu aplicacion no sufria tanto al momento de realizar dicho cambio.

Estos son solo algunos Tips, pero busca en la red sobre el tema que te habia indicado anteriormente.

Hasta luego.
__________________
Gracias,
Rolphy Reyes
Responder Con Cita
  #4  
Antiguo 30-11-2007
kverna kverna is offline
Miembro
 
Registrado: may 2006
Posts: 29
Poder: 0
kverna Va por buen camino
gracias amigos, si encuentro algo lo publicare aqui
Responder Con Cita
  #5  
Antiguo 30-11-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 30
jhonny Va camino a la famajhonny Va camino a la fama
Bueno, acabo de hacer una prueba que quizá sea insuficiente pero nos ayudara a crearnos una idea del asunto:

Para realizar esta prueba he utilizado...
  • FB 2.1 Beta 2.
  • Los componentes, IBTable (Para realizar los insert), IBQuery (Para ejecutar el procedimiento almacenado), por consiguiente el IBDatabase y el IBTransaction.
  • Delphi 2007 for Win32.

* En la base de datos he creado lo siguiente:

Tabla
=====

Código SQL [-]
create table ib_vs_sp (
    conteo  integer not null
);

alter table ib_vs_sp add constraint pk_ib_vs_sp primary key (conteo);

Procedimiento almacenado
========================
Código SQL [-]
CREATE PROCEDURE SP_INS_IB_VS_SP 
as
declare variable i integer;
begin
  I = 0;
  while (I <= 100000) do
  begin
    insert into ib_vs_sp (CONTEO) values(:I);
    I = :I + 1;
  end
end

* En Delphi coloque dos botones para ejecutar cada cosa y para tomar los Ticks del procesador... tambien dos labels para mostrar los resultados.

Boton para el .Post del TIBTable
================================
Código Delphi [-]
var
  Ticks, I :Cardinal;
begin
  IBTable1.Close;
  IBTable1.Open;
  
  Ticks := GetTickCount; //Comienza el conteo de Ticks...
  for I := 0 to 100000 do
  begin
    IBTable1.Insert;
    IBTable1CONTEO.AsInteger := I;
    IBTable1.Post;
  end;
  Label2.Caption := IntToStr(GetTickCount - Ticks); //Termina solo teniendo en cuenta el proceso de insercción.

  Label6.Caption := 'Termino';
end;

Boton para ejecutar el procedimiento almacenado
===============================================

Código Delphi [-]
var
  Ticks :Cardinal;
begin
  IBQuery1.Close;
  Ticks := GetTickCount; //Comienza el conteo de Ticks...
  IBQuery1.ExecSQL;//Termina solo teniendo en cuenta el proceso de insercción.
  Label4.Caption := IntToStr(GetTickCount - Ticks);
  Label5.Caption := 'Termino';
end;



* Como pueden ver la prueba la hago en ambos casos, simplemente insertando 100000 registros.


Antes de hacer click en cada boton me cerciore que fuera lo "primero" que hacia el programa y que fuera el "unico" programa en ejecución en mi maquina... Osea, hice click en el primer boton, obtuve el resultado, cerre la aplicación, volví a abrirla e hice click en el otro botón.

Los resultados finales fueron los siguientes:

Con el IBTable
==============
72156 Ticks


Con el SP
=========
64532 Ticks

Bueno, Se que no es una prueba optima pero nos dara alguna idea .
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/

Última edición por jhonny fecha: 30-11-2007 a las 17:13:29.
Responder Con Cita
  #6  
Antiguo 30-11-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 30
jhonny Va camino a la famajhonny Va camino a la fama
Se me olvido mencionar que el FireBird esta instalado en la misma maquina donde hice las pruebas, por lo que supongo que si hubiera estado en un computador distinto (Como es en la mayoria de los casos), supongo que la diferencia hubiera sido mas grande.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #7  
Antiguo 30-11-2007
Avatar de RolphyReyes
RolphyReyes RolphyReyes is offline
Miembro
 
Registrado: ago 2004
Ubicación: Santo Domingo
Posts: 285
Poder: 20
RolphyReyes Va por buen camino
Talking

Saludos.

Es claro que es mejor utilizar SP que componentes TTable y eso como indicas jhonny que el firebird estaba en tu pc que si hubiese estado en un "Servidor" se veria mejor la diferencia, porque ahi tendria que pasar por la red y bla bla bla que son necesarias para tomar en cuenta el modelo a utilizar al momento de diseñar tu aplicacion.
__________________
Gracias,
Rolphy Reyes
Responder Con Cita
  #8  
Antiguo 01-12-2007
Delfino Delfino is offline
Miembro
 
Registrado: jul 2003
Ubicación: Madrid
Posts: 974
Poder: 21
Delfino Va por buen camino
Cita:
Bueno, Se que no es una prueba optima pero nos dara alguna idea
Es una prueba mas q suficiente, yo tb hice pruebas similares y arrojaron diferencias minimas, por eso los componentes IBX y MDO son loas mas rapidos pq no interfieren mucho en el procedimiento y lo q hacen realmente es enviar sentencias SQL al servidor, las diferencias en red serian igual de minimas q en local..
__________________
¿Microsoft? No, gracias..
Responder Con Cita
  #9  
Antiguo 01-12-2007
Avatar de RONPABLO
[RONPABLO] RONPABLO is offline
Miembro Premium
 
Registrado: oct 2004
Posts: 1.514
Poder: 21
RONPABLO Va por buen camino
Me gustariá añadir que con las IBTable se pueden tener tiempos realmente cortos en esquemas C/S, solo hay qusar la propiedad Filter que estas tienen para asi alijerar los resultados.... yo migre un programa de paradox a Firebird y por la gran cantidad de componentes ttable que tenia trabaje con los filtros y me va muy bienn en una red con muchos equipos
__________________
"Como pasa el tiempo..... ayer se escribe sin H y hoy con H"
Responder Con Cita
  #10  
Antiguo 18-12-2007
Avatar de rastafarey
rastafarey rastafarey is offline
Miembro
 
Registrado: nov 2003
Posts: 927
Poder: 21
rastafarey Va por buen camino
Resp

Bueno yo no he echo ninguna prueba y segun veo no necesita de pruebas. Hacer un pos que desd eun ttable un query o stament o el compoenete que sea que es lo que al fin y al cabo hace. Lo unico que hace es tirar una intrccion sql o ddl hacia el manejador y un store procedure hace lo mismo. Asi que hay que hacer ningun tipo de pruebas.
Ahora de como se traen lso datos es otra cosa.
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa.
Responder Con Cita
Respuesta



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
Procedimientos almacenados AS/400 Carlos A Ortega DB2 1 12-12-2006 00:32:39
procedimientos almacenados davidgaldo SQL 7 09-11-2006 17:28:33
procedimientos almacenados datorar Conexión con bases de datos 8 03-01-2006 17:05:43
procedimientos almacenados Gabriel2 SQL 1 13-01-2005 14:50:09
Procedimientos almacenados VS UDF rqc Firebird e Interbase 6 18-03-2004 01:29:46


La franja horaria es GMT +2. Ahora son las 00:44:46.


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