詳細的來說,我用程式讀取點云資料,資料比較大,將點云資料匯入到資料庫中,mysql_stmt_execute(stmt)執行時程式占用記憶體會增長是應該的,可是mysql_stmt_execute(stmt)執行完畢后,我把存盤資料的指標釋放了,結果程式還占用了很大的記憶體,感覺就像是插入之后,mysql內部開辟了一定記憶體沒釋放一樣。
修改了my.ini檔案的引數,都沒用,,,



上面從上到下第一幅圖是程式初始占用的記憶體;第二幅圖是執行插入操作時所占的記憶體情況;第三幅圖是插入完成后,把存盤資料的結構體指標釋放后,會殘留記憶體,,,就是這種情況,很頭疼,這樣沒插入一定的資料,就會增加一些記憶體,記憶體早晚會不夠用。
uj5u.com熱心網友回復:
mysql并不會釋放記憶體uj5u.com熱心網友回復:
你這個是程式占用的記憶體,不是mysql占用的記憶體。不知你c++中使用的是什么資料訪問組件,我們這都是delphi的桌面端,使用firedac,他內部應該是封裝的ado或者是odbc,當使用server端游標時,必須顯示的關閉資料集才會識訓記憶體,否則即使資料集被free了記憶體不回收起碼不是立刻回收。另外不要一次fetch全部或者太多的記錄,使用前向游標,本地資料組件如果支持Unidirectional 的話使用Unidirectional,這樣不管你多大的資料集,資料集記憶體占用都微乎其微,幾乎可以忽略uj5u.com熱心網友回復:
既然你從上到下說的都是程式占用的記憶體,那眼 MySQL 沒有關系,MySQL 占用的記憶體體現在 MySQL 的行程上如果你不確信,可以把 MySQL 服務停了,看程式的記憶體有沒有釋放
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/103665.html
標籤:MySQL
上一篇:ubuntu,集群式hbase,zookeeper連接報錯,求幫忙看看
下一篇:新人求助基礎的MySQL問題
