Page 1 of 2
Nuevo FWH 16.10
Posted: Tue Nov 01, 2016 10:37 am
by Antonio Linares
Re: Nuevo FWH 16.10
Posted: Mon Nov 14, 2016 5:42 am
by luisduque
Maestro Antonio Saludos
Desde la versión 16.05 que salió la primera versión para el manejo de MySql la he probado y se han resuelto bastantes de los detalles que coloqué al principio, sin embargo lo mas preocupante es la perdida de memoria que se consume cada vez que se abre una tabla debido a que no se cierra y se aumenta hasta consumir toda la memoria, esto lo reporté desde esa versión y al actualizar a la version 16.10 continua el consumo de memoria. Simplemente al abrir una tabla, abrir otra y trabajar normalmente la memoria ram va en aumento y por supuesto eso hace que se vuelva muy lento el windows.
ejemplo
Code: Select all
#include "fivewin.ch"
#include "xbrowse.ch"
function Main()
local oWnd
oConexion := mysql_Connect( { "localhost", "rovigo", "root", "1223", "3306" } )
If oConexion == nil
msginfo("error base de datos")
return(.f.)
EndIf
oRcs := oConexion:Query("Select CodCli,NomCli From Clientes") //cada vez que se abre la tabla aumenta la memoria y cualquier tabla
If oRcs==Nil
msginfo("error tabla")
Return(.f.)
EndIf
No sirve
oRcs:Close()
Esto es sumamente importante porque el consumo de memoria es lo que debemos cuidar en cualquier sistema (aplicación).
Aprovechando quisiera saber si se puede pasar por alto el mensaje de dialogo cuando al abrir una base de datos no está
mysql_Connect()
En el caso de oCn:Query("Select * from tabla",.f.) con .f. no lo muestra se puede de alguna manera para una base de datos con mysql_Connect()
Gracias.
Re: Nuevo FWH 16.10
Posted: Mon Nov 14, 2016 7:55 am
by Antonio Linares
Luis,
Has probado con ?
oRcs:End()
y
oRc := nil
Re: Nuevo FWH 16.10
Posted: Mon Nov 14, 2016 7:58 am
by Antonio Linares
Luis,
Aprovechando quisiera saber si se puede pasar por alto el mensaje de dialogo cuando al abrir una base de datos no está
mysql_Connect()
En el caso de oCn:Query("Select * from tabla",.f.) con .f. no lo muestra se puede de alguna manera para una base de datos con mysql_Connect()
Se lo he enviado traducido a Rao para saber su opinión
Re: Nuevo FWH 16.10
Posted: Mon Nov 14, 2016 1:51 pm
by luisduque
Maestro Antonio
Antonio Linares wrote:Luis,
Has probado con ?
oRcs:End()
y
oRc := nil
Si lo he probado y cada vez que se hace un query va aumentando la memoria
Re: Nuevo FWH 16.10
Posted: Mon Nov 14, 2016 6:21 pm
by Antonio Linares
Luis,
Me ha enviado Rao este mensaje:
I modified the libs.
1) If the last parameter of mysql_connect(...) is .F., display of error is suppressed. The actual number of parameter is not important. It should be the last paramter.
He can read more about its usage in the whatsnew.txt of FWH16.11
2) In the example he posted, he specified 5th param as "3306". Port 3306 is default and better it is omitted. If he still wants to specify the port, it should be NUMERIC not Charactger.
MEMORY:
When a RowSet is closed, the freed memory is not surrendered by Harbour to the OS, but still kept as free memory by Harbour. When another recordset is opened, the same memory heap is used by Harbour
Re: Nuevo FWH 16.10
Posted: Mon Nov 14, 2016 11:29 pm
by luisduque
Maestro Antonio
Lo del puerto numérico eso lo se al hacer un copiar pegar quedó, y ese no es el punto a tratar sino que quiero que al realizar
oConexion := mysql_Connect( { "localhost", "rovigo", "root", "1223", 3306 } )
si no consigue la base de datos o no hay conexión sale un mensaje de alerta y eso es algo que quiero evitar, debido a que unos de los programas corre en segundo plano y no necesito mensajes.
Lo intenté colocando en el parámetro 6 después del 3306 un .f. un 0 un 1 y nada ejemplo
oConexion := mysql_Connect( { "localhost", "rovigo", "root", "1223", 3306,.f. } )
oConexion := mysql_Connect( { "localhost", "rovigo", "root", "1223", 3306,0 } )
oConexion := mysql_Connect( { "localhost", "rovigo", "root", "1223", 3306,1 } )
por ejemplo con
oRcs := oConexion:Query("Select CodCli,NomCli From Clientes") al colocarle .f. no sale el mensaje cuando no consigue la tabla, ejemplo
oRcs := oConexion:Query("Select CodCli,NomCli From Clientes",.f.)
la idea es saber si se puede con mysql_Connect()
Lo otro que es mas importante es la perdida de memoria RAM cada vez que se abre un oConexion:Query() y eso es demasiado preocupante cuando se usa la aplicación todo el dia,
Con ADO no hay problema.
la idea es verificar que errores uno ve para replicarlo y tratar de solucionar
Muchas Gracias Maestro
Re: Nuevo FWH 16.10
Posted: Tue Nov 15, 2016 9:39 am
by Antonio Linares
Luis,
Lo estamos revisando para ver si lo solucionamos cuanto antes, gracias
Re: Nuevo FWH 16.10
Posted: Tue Nov 15, 2016 10:00 am
by Antonio Linares
Luis,
Si minimizas la aplicación y pasa a segundo plano, puedes comprobar si libera la memoria ? gracias
http://www.techrepublic.com/blog/window ... e-monitor/
Standby
The Standby list, which is shown in blue, contains pages that have been removed from process working sets but are still linked to their respective working sets. As such, Standby list is essentially a cache. However, memory pages in the Standby list are prioritized in a range of 0-7, with 7 being the highest. Essentially, a page related to a high-priority process will receive a high-priority level in the Standby list.
For example, processes that are Shareable will be a high priority and pages associated with these Shareable processes will have the highest priority in the Standby list.
Now, if a process needs a page that is associated with the process and that page is now in the Standby list, the memory manager immediately returns the page to that process' working set. However, all pages on the Standby list are available for memory allocation requests from any process. When a process requests additional memory and there is not enough memory in the Free list, the memory manager checks the page's priority and will take a page with a low priority from the Standby list, initialize it, and allocate it to that process.
https://blogs.technet.microsoft.com/ask ... ol-rammap/
Standby: Pages of physical ram not actively being used. These are still left in physical ram but will be repurposed first by the memory manager (either returned to the active list or zeroed out and reused) if something needs physical ram for active pages. Standby pages are essentially cache – it’s better to have infrequently used data kept in RAM “just in case” than pushing it out to disk when the memory isn’t needed for anything else.
Re: Nuevo FWH 16.10
Posted: Tue Nov 15, 2016 2:56 pm
by luisduque
Maestro Antonio
Estoy trabajando en paralelo probando ADO(Que tiene años trabajando bien ) y la conexion directa a mysql(lo nuevo)
Para estar seguro si lo puedo instalar a clientes, y ya muchas cosas que anteriormente comenté están solucionadas sin embargo lo que falta que es lo mas importante
es que cada vez que se hace un query la memoria ram aumenta, lo que no sucede con ADO,
Lo del mensaje de Alerta es porque esos mensajes deben depender de uno y por eso seria bueno que mysql_conect() no saque mensajes sino que de el código de error y uno verá si lo saca el mensaje o no depende de la ocasión.
La idea es mejorar y que quede bien la nueva clase para el manejo de mysql
Muchas gracias
Re: Nuevo FWH 16.10
Posted: Tue Nov 15, 2016 7:05 pm
by Antonio Linares
Luis,
Seguimos investigando para descubrir que pasa
Muchas gracias por tu información
Re: Nuevo FWH 16.10
Posted: Tue Nov 15, 2016 9:04 pm
by Antonio Linares
Luis,
Podrias probar a llamar a hb_gcAll() después de terminar de usar el query y ver si asi se estabiliza el consumo de memoria
http://forums.fivetechsupport.com/viewt ... 25#p195525
Re: Nuevo FWH 16.10 (Solucionado)
Posted: Tue Nov 15, 2016 9:39 pm
by luisduque
Maestro Antonio
Siempre uso
hb_gcAll( .t. )
SysRefresh()
No se me había ocurrido usarlo para los query y funciona perfecto.
Ya con esto soluciono el problema de recursos (consumo de memoria) que es lo mas importante
Ahora no olvides si se puede quitar el mensaje de alerta que da mysql_connect() y seria excelente que diera el mensaje de error si no es mucho pedir
Muchas Gracias
Re: Nuevo FWH 16.10
Posted: Tue Nov 15, 2016 9:56 pm
by Antonio Linares
Luis,
Me alegro de que hayamos solucionado el problema de la memoria.
He comentado con Rao el quitar ese mensaje.
gracias por tu ayuda
Re: Nuevo FWH 16.10
Posted: Wed Feb 15, 2017 3:57 am
by jesusdelamora
Master antonio
En la versión 16.10 o mas reciente, puedo usar mysql embebido y conexión remota a una base de datos mysql ?
Gracias por tu ayuda