Hi,If you happen to be using the C API in the application then you need to make sure that mysql_free_result() is used after you are finished with the result set.
I'm running MySQL 4.0.17 with RH Linux 8 on Xeon 3.0/1GB RAM.
One application has to access the database (1 connection to the DB is open on startup and left open). However this application performs a lot of queries on the DB.
Main InnoDB table : 50.000 Rows Other InnoDB tables (about 8) : From 0 to 1000 rows There is 1 BLOB column in the main table (longest string currently stored : about 500 chars)
Thanks to "top", I can see that the "used memory" is constantly increasing and never freed (up to 1 GB) when performing a lot of queries. In fact, I can see the total memory usage increasing but the mysqld process memory usage remains the same. When the DB is not accessed, the memory usage is stable. Stopping MySQL server doesn't free the abnormaly allocated memory.
Here is my my.cnf file :
server-id=1 socket=/tmp/mysql.sock innodb_data_file_path = ibdata1:750M:autoextend set-variable = innodb_buffer_pool_size=500M set-variable = innodb_additional_mem_pool_size=20M set-variable = innodb_log_file_size=300M set-variable = innodb_log_buffer_size=8M innodb_flush_log_at_trx_commit=0 skip-locking set-variable = max_connections=5 set-variable = read_buffer_size=1M set-variable = sort_buffer=1M set-variable = key_buffer=10M
Maybe someone can share his experience to help me to understand/solve the problem.
Regards.
The manual states that mysql_free_result() "frees the memory allocated for a result set by |mysql_store_result()|, |mysql_use_result()|, |mysql_list_dbs()|, etc. When you are done with a result set, you must free the memory it uses by calling |mysql_free_result()|."
Not sure if other APIs or languages have a similar requirement but it might be worth having a look.
Hope it helps.
-- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]