Ⅰ java 向資料庫添加大量數據時內存溢出 在不改變內存的情況下如何解決
具體問題具體處理。
你最起碼應該說明是哪種資料庫
是用JDBC還是ODBC還是hibernate。
一般這種情況都回是分批插入。
每個答會話插入50條,然後關閉,再重新做一次連接。
然後再插。
或者中間多做幾次commit
access的資料庫在使用某個版本的驅動時,如果是免費版的,
一次就只能插入50條數據。
Ⅱ Java前提下, MySQL資料庫,一次性存儲大量數據導致內存溢出
內存溢出導致程序崩潰,也分是java層崩了,還是mysql崩了。
如果是java層崩了,注意不要一次性載入太多的數據到內存,並且不在使用的數據要徹底放棄引用關系。java雖然是自動回收,回收的原則就是一個對象不再被持有,即引用計數為零。如果數據太大,可考慮臨時文件。
如果是mysql崩了,首先增加配置緩存。一般來說mysql是不容易崩的,特別是插入操作的時候。查詢的時候如果查詢結果記錄集特別大,會導致一個查詢需要使用很大的內存空間,這種是有問題的。而插入操作都是一條一條的執行,不會導致大內存的使用。
如果僅僅是數據移植,也盡量不要用ORM框架,比如hibernate,mybatis這些東西,因為他們都有自己的緩存,直接使用JDBC比較好。
Ⅲ 一般什麼情況下,資料庫會大量佔用內存導致最後的溢出情況
我能想到的常見的和理論上的情況有下面幾種:
1. 假設同時有1000個人訪問資料庫,每人需要調用3M大小的數據,同時處理的數據量是3G,伺服器只有2G內存。這種情況只是理論上,伺服器資料庫都有多線程阻塞技術,和事務處理邏輯,來保證數據處理的先後順序,而不會是絕對的同時進行。不過一般的請求很少有超過50KB的,請求的數據量越大,同時連接的人數就越少,這是公認的資料庫使用定律。
2. 復雜的join語句,造成對多個大容量的表進行join操作。
3. 資料庫端過程函數編程。程序裡面邏輯錯誤,數組分配不合理,或者陷入死循環,或者一次讀出太多數據,然後一起處理。
Ⅳ JAVA查詢資料庫出現內存溢出
讀取的時候內存不足了,你可以增大myeclipse的內存,在myeclise.ini裡面,調大各個屬性,然後你讀取的時候存對象里後,通過byte位元組來操作,用緩沖流,寫入到磁碟中。
Ⅳ 資料庫id自動增長,數據不停的刪除和插入,這樣的話id欄位會不斷的變大,直到溢出這個問題是怎麼解決的
這個看情況了復,首先看看是不是有制使用自增列的必要,如果有必要前期要有預見性,對於可能會出現溢出的情況,則盡量使用bigint類型,當然這個要多佔用存儲空間。如果刪除操作比較規則,比如會定期刪除較早的數據,那麼可以在id即將溢出的時候重置種子,從頭開始自增,如果不能循環使用id值得話只能在即將溢出的時候修改表,用更大的數據類型來作為自增列的類型,這個過程因為涉及大量的數據更新插入操作,速度會很慢,通常盡量避免。如果id快溢出了,最好新建一個表來存儲新增的數據。