Consumo de memoria de vistas locales.

16/07/2004 - 08:03 por Oscar Arley Yepes Aristizabal | Informe spam
Hello Grupo

Hace un buen rato trabajo en VFP y todas las aplicaciones que he
desarrollado hasta ahora han sido Cliente / Servidor con bases de datos de
Access y SQL Server. Todos los procesos contra la bases de datos los hago
por medio de ODBC, SPT y vistas remotas.

Hoy día requiero hacer una aplicación monousuario y para ello quiero usar
las bases de datos de VFP. (DBC)

Para lo anterior se deben usar vistas locales y parametrizables.

Mi gran duda es la siguiente:

Que sentido tiene usar vistas locales parametrizables si de igual forma al
abrir la vista me esta cargando dos sesiones de datos? (una con la vista y
los registros del parámetro enviado y la otra sesión de datos con la tabla
original y todos los registros)

En la medida que la tablas crezcan la apertura de la vista local será mas
lenta porque igual esta cargando las tablas que la conforman con todos sus
registros?

De antemano gracias por sus respuestas.



Oscar Arley Yepes Aristizabal.
Medellín - Colombia

Preguntas similare

Leer las respuestas

#1 José Moyano Huergo
16/07/2004 - 16:56 | Informe spam
Hola Oscar:

Efectivamente cuando utilizas vistas parametrizadas se abren las tablas que

están involucradas en esa vista, pero esto es tan solo para que tu vista

pueda tomar los datos que filtrarás mediante tu vista y asi tan solo te

manda a memoria los datos filtrados, esto tiene una mejor aplicación en red,

ya que teniendo la base de datos en el server los datos que se envian entre

máquinas son únicamente los necesarios para correr tu aplicación, con lo que

se disminuye el trafico en la red.

Ahora si tu estas trabajando en un ambiente monousuario solo con vistas,
esto se

convierte automáticamente en multiusuario.

Esperando que esto te sea de utilidad, que Dios te bendiga.

"Oscar Arley Yepes Aristizabal" escribió en el mensaje
news:
Hello Grupo

Hace un buen rato trabajo en VFP y todas las aplicaciones que he
desarrollado hasta ahora han sido Cliente / Servidor con bases de datos de
Access y SQL Server. Todos los procesos contra la bases de datos los hago
por medio de ODBC, SPT y vistas remotas.

Hoy día requiero hacer una aplicación monousuario y para ello quiero usar
las bases de datos de VFP. (DBC)

Para lo anterior se deben usar vistas locales y parametrizables.

Mi gran duda es la siguiente:

Que sentido tiene usar vistas locales parametrizables si de igual forma al
abrir la vista me esta cargando dos sesiones de datos? (una con la vista y
los registros del parámetro enviado y la otra sesión de datos con la tabla
original y todos los registros)

En la medida que la tablas crezcan la apertura de la vista local será mas
lenta porque igual esta cargando las tablas que la conforman con todos sus
registros?

De antemano gracias por sus respuestas.



Oscar Arley Yepes Aristizabal.
Medellín - Colombia






Respuesta Responder a este mensaje
#2 Oscar Arley Yepes Aristizabal
16/07/2004 - 22:35 | Informe spam
Gracias por responder



Acabo de leer el hijo del 7 de julio muy interesante pero la gran duda sigue
en pie.



Imaginemos la tabla de clientes con los famosos 10 millones de registros



No tiene sentido abrir toda la tabla para buscar solo un cliente, en el caso
de trabajar directamente sobre la tabla.



Igualmente no tendría sentido usar la vista local puesto que la vista
cargaría solo el registro necesario pero en otra sesión de datos tengo toda
la tabla con sus registros.



¿Entonces cual técnica es la mas aconsejable para sistemas monousuarios y el
uso de las dbc de fox.?



O será que me estoy preocupando mucho por eso?



De momento solo se me ocurre hacer lo siguiente:



Trabajar con la DBC de Fox y usarla desde la aplicación por medio de solo
vistas remotas.



Gracias.



Oscar Arley Yepes Aristizabal.
Medellín - Colombia





"Oscar Arley Yepes Aristizabal" escribió en el mensaje
news:
Hello Grupo

Hace un buen rato trabajo en VFP y todas las aplicaciones que he
desarrollado hasta ahora han sido Cliente / Servidor con bases de datos de
Access y SQL Server. Todos los procesos contra la bases de datos los hago
por medio de ODBC, SPT y vistas remotas.

Hoy día requiero hacer una aplicación monousuario y para ello quiero usar
las bases de datos de VFP. (DBC)

Para lo anterior se deben usar vistas locales y parametrizables.

Mi gran duda es la siguiente:

Que sentido tiene usar vistas locales parametrizables si de igual forma al
abrir la vista me esta cargando dos sesiones de datos? (una con la vista y
los registros del parámetro enviado y la otra sesión de datos con la tabla
original y todos los registros)

En la medida que la tablas crezcan la apertura de la vista local será mas
lenta porque igual esta cargando las tablas que la conforman con todos sus
registros?

De antemano gracias por sus respuestas.



Oscar Arley Yepes Aristizabal.
Medellín - Colombia






Respuesta Responder a este mensaje
#3 Oscar Arley Yepes Aristizabal
17/07/2004 - 07:50 | Informe spam
Mas claro que el agua no puede ser.

Mil Gracias
Estimado Carlos.
Saludos


Oscar Arley Yepes Aristizabal.
Medellín - Colombia





"Carlos Rod" escribió en el mensaje
news:eTQKD$

>
>
>
> Imaginemos la tabla de clientes con los famosos 10 millones de registros
>
>
>
> No tiene sentido abrir toda la tabla para buscar solo un cliente, en el
caso
> de trabajar directamente sobre la tabla.
>

Foxpro nunca "Abre toda la tabla". Eso es imposible. No creo que ningun
lenguaje lo haga. Para eso existen las tecnicas de cache y paginacion por
las cuales no debemos ni preocuparnos pues estan resueltas desde hace
tiempo. Ahora bien, una consulta (sea una vista o un simple select-sql)


que
tenga que recorrer todos los registros con una condicion NO OPTIMIZADA,


sin
duda que leera todos los registros de la tabla origen y eso sera muy


lento.
Si la consulta esta optimizada, pues se auxiliará de los índices para solo
recorrer el bloque de registros necesario para dar el subconjunto
resultante.

>
>
> Igualmente no tendría sentido usar la vista local puesto que la vista
> cargaría solo el registro necesario pero en otra sesión de datos tengo
toda
> la tabla con sus registros.
>
>

Tampoco. En la otra sesion tampoco tienes "toda la tabla". Simplemente
tienes un acceso abierto (conexion) a la tabla que con los comandos de
acceso y consulta se van cargando los registros desde el servidor.

>
> ¿Entonces cual técnica es la mas aconsejable para sistemas monousuarios


y
el
> uso de las dbc de fox.?
>
>

No es necesario que uses vistas locales en una aplicacion con dbc's.


Puedes
trabajar directamente con las tablas y si deseas con buffers. Ahora bien,
la idea de la discusion aqui es que se demuestra que usar o no vistas
locales no tiene importancia porque el secreto de la rapidez de las
consultas esta en usar correctamente la optimizacion Rushmore aun en la
sentencia sql en que se basa la vista local. Con C/S es otra la


historia.
Aqui estamos hablando de DBC's

>
> O será que me estoy preocupando mucho por eso?
>
>

sin duda alguna

>


Respuesta Responder a este mensaje
#4 Ricardo Passians
17/07/2004 - 16:02 | Informe spam
Nuevamente de acuerdo. Para los que trabajen con DBC's y estén
preocupados por la eficiencia, el punto básico debe ser aplicar un adecuado
diseño de índices y una correcta definición de expresiones de selección que
maximicen la optimización rushmore cuando sea posible.
El resto de si usar o no vistas locales ya es cuestión de gusto personal.
Otra cosa es que el uso de vistas locales tampoco debe confundirse con "Capa
de datos". Yo puedo tener un capa de datos utilizando sentencias sql sin
tener vistas definidas. Es un concepto.

Aqui un articulo para tratar de entender las bases de rushmore:

http://www.portalfox.com/article.php?sidE7


Otro para entender la programacion por Capas:

http://www.mug.org.ar/FoxProGufa/ArticFox/210.aspx









"Carlos Rod" wrote in message
news:eTQKD$

>
>
>
> Imaginemos la tabla de clientes con los famosos 10 millones de registros
>
>
>
> No tiene sentido abrir toda la tabla para buscar solo un cliente, en el
caso
> de trabajar directamente sobre la tabla.
>

Foxpro nunca "Abre toda la tabla". Eso es imposible. No creo que ningun
lenguaje lo haga. Para eso existen las tecnicas de cache y paginacion por
las cuales no debemos ni preocuparnos pues estan resueltas desde hace
tiempo. Ahora bien, una consulta (sea una vista o un simple select-sql)


que
tenga que recorrer todos los registros con una condicion NO OPTIMIZADA,


sin
duda que leera todos los registros de la tabla origen y eso sera muy


lento.
Si la consulta esta optimizada, pues se auxiliará de los índices para solo
recorrer el bloque de registros necesario para dar el subconjunto
resultante.

>
>
> Igualmente no tendría sentido usar la vista local puesto que la vista
> cargaría solo el registro necesario pero en otra sesión de datos tengo
toda
> la tabla con sus registros.
>
>

Tampoco. En la otra sesion tampoco tienes "toda la tabla". Simplemente
tienes un acceso abierto (conexion) a la tabla que con los comandos de
acceso y consulta se van cargando los registros desde el servidor.

>
> ¿Entonces cual técnica es la mas aconsejable para sistemas monousuarios


y
el
> uso de las dbc de fox.?
>
>

No es necesario que uses vistas locales en una aplicacion con dbc's.


Puedes
trabajar directamente con las tablas y si deseas con buffers. Ahora bien,
la idea de la discusion aqui es que se demuestra que usar o no vistas
locales no tiene importancia porque el secreto de la rapidez de las
consultas esta en usar correctamente la optimizacion Rushmore aun en la
sentencia sql en que se basa la vista local. Con C/S es otra la


historia.
Aqui estamos hablando de DBC's

>
> O será que me estoy preocupando mucho por eso?
>
>

sin duda alguna

>


Respuesta Responder a este mensaje
#5 Carlos Rod
19/07/2004 - 19:04 | Informe spam
Hola Oscar:

Efectivamente cuando utilizas vistas parametrizadas se abren las tablas


que

están involucradas en esa vista, pero esto es tan solo para que tu vista

pueda tomar los datos que filtrarás mediante tu vista y asi tan solo te

manda a memoria los datos filtrados, esto tiene una mejor aplicación en


red,

ya que teniendo la base de datos en el server los datos que se envian


entre

máquinas son únicamente los necesarios para correr tu aplicación,




El esta hablando de DBC's, las cuales NO son cliente/servidor por tanto lo
que dices no aplica ni siquiera con vistas.
Las vistas son solo una sentencia SQL embebida en una estructura. Se haga
o no con vistas el trafico de la red para una sentencia SQL sera el mismo.
Eso de las vistas locales que reducen el trafico es un mito. Con lo que
hay que luchar es con tener expresiones optimizables por Rushmore para
agilizar el proceso a traves de los indices existentes.
Ahora bien, si es C/S (como sql server) ya es otra cosa pues la seleccion se
verifica en el servidor ANTES de ser transmitida al cliente a traves de la
red.

Revisar el hilo del dia 07/JUL : "Gran duda sobre ventajas de las vistas"
para que aclares esa confusion que tu, como muchos otros tienen. Incluso en
un articulo de la web tambien vimos que existe la informacion incorrecta.
De ahí lo delicado de postear información inexacta pues confunde a muchos.






con lo que

se disminuye el trafico en la red.

Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida