FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Cual es la mejor opcion para aumentar rendimiento de Base de Datos
hola amigo hoy vengo con una consulta, estoy desarrollando un sistema en delphi 11 multiplataforma inicialmente para windows y luego compilarlo para mobiles, tengo una base de datos en un servidor pago en insternet con windows server y un Sql Server instalado con una base de dato donde almaceno imagenes y datos sin embargo veo que mi aplicacion aun es lenta. sera posible que pueda yo desarrollar una aplicacion que corra localmente en el servidor y que todas la consultas se hagan en el servidor y que el cliente de alguna forma solo visualizara los resultados. pude investigar algo en una aplicacion que se desarrolle con REST cliente Servidor. mi pregunta es. Es Conveniente? o hay otra alternativa?
|
#2
|
||||
|
||||
Todo depende de cómo sea la interacción entre tu aplicación y la base de datos.
El problema de trabajar a través de internet es la latencia. Por esto, deberías obtener todo lo necesario en una sola consulta en vez de hacer muchas. Por ejemplo, si obtienes la cabecera de facturas y luego tienes que obtener el nombre del cliente. Puedes hacerlo en dos consultas o en una sola con un JOIN o utilizando una vista. Llevado al extremo puedes obtener datos sobre cabecera, totales, descripciones, etc. Por otro lado, puedes hacer un cache de cosas que necesitas regularmente. Por ejemplo tablas pequeñas que puedas guardar localmente para evitar consultas. Por ejemplo tipo y descripción de doumento, lista de series de facturación, datos de usuario, etc. |
#3
|
||||
|
||||
Depende de lo que necesites.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#4
|
||||
|
||||
Es relativo y falta mucha información.
Depende de qué es lento en este caso. De qué estás haciendo. De qué SQL's o consultas estás lanzando. Tendrías que o concretar más o centrarte en un ejemplo concreto. Ejemplo: La consulta de clientes es lenta. Centrándote en esto: ¿Qué consulta estás haciendo? ¿Cuantos clientes estás leyendo? ¿Cuando tarda? Cita:
Si haces una consulta sobre clientes y tarda mucho porque trae 10000 registros. Si conviertes toda tu aplicación a esa configuración de REST y haces la misma consulta va a tardas más (va a traer los mismos 10000 registros, pero haciendo más cosas). Por eso digo, que hay que saber primero porqué va lenta y luego buscar la solución según el problema.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#5
|
|||
|
|||
Cita:
Cuando ejecutamos el programa en la PC o Movil que hace? Me refiero cuando iniciamos el programa el sistema recorre todos los query? Solamente conecta la Base de datos? carga toda la Grafica? o que? por ejemplo cuando ejecuto la aplicación lo primero que muestra es un from con el login y password y alli también se tarda. Cabe destacar que solamente el Login y password está en un from separado luego de eso el sistema entra en otro from (diria yo Unico) donde en el hay diferentes pestañas (TABCONTROL) no se si el problema está allí. es un software de telemedicina las consultas son necesaria y en las tablas estoy almacenado Fotos, Archivos entre otra cosas. Que me pueden recomendan? Desarrollar el sistema en diferente From? Que cada empresa/Licencia tenga su propia base de dato (aun haciendo eso talvez no sea la solución ya que en este momento ya es lento y estoy trabajando con una sola Empresa pero pudiera ser una de las soluciones)? Todas las tablas tienen índices. |
#6
|
||||
|
||||
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#7
|
||||
|
||||
Cita:
Por ejemplo: ¿Conectas a la base de datos antes de obtener usuario y password? No deberías hacerlo, pues todavía no puede usar nada. Luego de obtener estos datos, puedes crear la conexión y verificarlos. ¿Traes datos para crear cosas (Gráfica?) antes de obtener usuario y password? ¿Tienes los formularios con autocreate? Deberías crearlos a medida que los necesites. ¿Inicializas cosas que quizás no necesites hasta que se pidan? Como ves, habría que analizar qué es lo que estás haciendo al iniciar la aplicación. Te recomiendo hacer un Log en cada formulario para ver cuando se abren y cierran y quizás en los puntos donde se traen datos para saber cuando se pasa por alli. Lo guardas todo con fecha y hora delante en un fichero que luego puedas abrir para revisar. A veces te enteras de que estás abriendo una tabla para luego filtrarla y volverla a abrir. También podría ser que estés haciendo consultas en cada OnChange de alguna cosa y eso podría guardarse en memoria. |
#8
|
|||
|
|||
Cita:
como mencione antes solo tengo el From de Login y el prom principal donde en el tengo tabControl y todo esta alli? |
#9
|
|||
|
|||
Cita:
|
#10
|
||||
|
||||
Cita:
Transcribo a continuación la ayuda de Delphi 6. Creating forms dynamically You may not always want all your application’s forms in memory at once. To reduce the amount of memory required at load time, you may want to create some forms only when you need to use them. For example, a dialog box needs to be in memory only during the time a user interacts with it. To create a form at a different stage during execution using the IDE, you:
In the above example, note the use of try..finally. Putting in the line ResultsForm.Free; in the finally clause ensures that the memory for the form is freed even if the form raises an exception. The event handler in the example deletes the form after it is closed, so the form would need to be recreated if you needed to use ResultsForm elsewhere in the application. If the form were displayed using Show you could not delete the form within the event handler because Show returns while the form is still open. Note: If you create a form using its constructor, be sure to check that the form is not in the Auto-create forms list on the Project Options|Forms page. Specifically, if you create the new form without deleting the form of the same name from the list, Delphi creates the form at startup and this event-handler creates a new instance of the form, overwriting the reference to the auto-created instance. The auto-created instance still exists, but the application can no longer access it. After the event-handler terminates, the global variable no longer points to a valid form. Any attempt to use the global variable will likely crash the application. En el caso de que quieras mostrar un formulario con ShowModal puedes envolver todo en un try..finally En el caso de mostrarlo con Show no debes hacerlo porque estarías eliminándolo inmediatamente después de crearlo. En ese caso debes crearlo y dejar que el formulario en su evento OnClose establezca la acción caFree;
|
#11
|
||||
|
||||
Con respecto al log te sugiero ir a lo más simple:
En el DataModule principal o en una unidad compartida por toda la aplicación creas una función que guarde en un fichero lo que le envíes. Yo lo tengo así en un DataModule principal. Te crea un fichero .log con el mismo nombre que la aplicación.
Luego en los formularios, en cualquier sitio puedes poner cosas como estas:
|
#12
|
||||
|
||||
Creo que aquí hay muchas cosas además de la velocidad.
¿Datos médicos? Las normativas de protección de datos son muy estrictas con ellos. Te recomendaría ver que pide la comunidad europea o el ENS en esos casos, si hablamos de empresas españolas. Para empezar tener juntos datos de diferentes empresas es un error. Seguro. Deben estar contenidas físicamente en diferentes lugares aunque lógicamente tengan la misma estructura. No he usado SQL server a ese nivel, pero en Oracle definirías distintos tablespace para cada empresa, usuario o lo que decidas. Yo no soy partidaria de cargarlo todo de una vez mi experiencia me ha demostrado que rara vez desean ver todo, todo pero todo, aunque solo sea porque es humanamente imposible hacerlo. Además si hablas de tablas muy grandes (muchos campos) con datos pesados (imágenes, documentos adjuntos) lo mejor es hacer la carga por secciones, según lo necesites en cada pestaña o en un proceso en segundo plano que recupere la información poco a poco sin que ello dificulte el trabajo del usuario y los elementos más pesados que tenga que abrirlos el propio usuario (no la aplicación de forma automática). Las posibilidades son muchas y un buen análisis previo te ahorrará trabajo después. |
#13
|
|||
|
|||
Cita:
ok luego de eso tengo diferente from que debo abrir segun la opcion selecionada (Button) Entonces el siguiente from que abro lo abro sin singun problema: oh continuo: en este fron tengo un botton que al presionarlo deberia abrir otro from donde me muestra una pantalla de busqueda ect. y alli tengo problema ya que me da access violation. y alli finalemente se me tranco el juego ahora tambien nunca pude colocar en el Evento onclose ya que me dice que CaFree no esta declarado. |
#14
|
||||
|
||||
Cita:
Pon tu código real para poder ver qué estás haciendo. Un "Access Violation" suele ser una llamada a un objeto que no está creado. Seguramente estás liberanto antes de tiempo un objeto o lo estás utilizando antes de crearlo. Cita:
De la ayuda de Delphi 6: Cita:
|
#15
|
|||
|
|||
Cita:
el error se quito cuando coloque esta linea en Type pero ahora cuando cierro la ventada me sale un Mensaje 'Invalid Piont operation' y otro que dice 'Invalid Argument' los formulario se abren asi:
|
#16
|
||||
|
||||
Dentro de un formulario no tienes que llamarlo por su nombre...
Luego puedes tener dos ventanas de ese tipo y que cada una se cierre a si misma.
|
#17
|
|||
|
|||
Cita:
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Cual es la mejor opción de conexión a Bases de Datos en Lazarus para ... ? | rolandoj | Lazarus, FreePascal, Kylix, etc. | 20 | 24-09-2012 02:44:57 |
Cual es el mejor manejador gratis de base de datos para MySQl 5.0+ ? | juangabriel1786 | SQL | 3 | 15-12-2008 01:10:29 |
Cual es la mejor opcion para un sistema de esta clase... | jcarteagaf | Varios | 10 | 25-09-2008 00:57:51 |
Sobre cuál es la mejor opción para trabajar con Word | Gabo | Servers | 6 | 16-01-2008 14:36:21 |
Cual es la mejor opción para imprimir ?? | Delphitest | Impresión | 4 | 27-10-2006 22:50:59 |
|