摘要:Java & MySQL & Linux 性能調整文章收集
這篇是用來放Java、MySQL、Linux相關的性能問題文章的蒐集專區,
因為目前要玩的架構太大,幾百萬筆的資料量,除了注重的是執行時間、記憶體、硬體相關的IO存取、網路流量的傳輸大小、一些作業系統的特殊限制,
有太多細節要懂,只好擺一篇文章,來放這些資料蒐集。
大資料量executeQuery問題,實際遇到狀況則是,本機讀取10萬筆時,花10~20秒才執行結束返回,再需要每秒一萬筆以上的速度,光這裡就大量遺失一些效能。
而使用executeQuery不間斷的讀取,會造成記憶體被佔用的情況,而導致存取速度或可能的問題發生也是一種麻煩。
所以需要一萬或一千筆慢慢存取,但如果是mysql的limit 100000,10000這樣的話,也會同樣的有越來越慢的問題,limit 值越後面,則越容易存取速度越慢,這又是另一個議題
1.大資料execute問題 mysql-jdbc-memory-usage-on-large-resultset
http://benjchristensen.com/2008/05/27/mysql-jdbc-memory-usage-on-large-resultset/
difference between setMaxRows(int) and SetFetchSize(int)
http://www.jguru.com/faq/view.jsp?EID=462124
解決方案關鍵字:stmt.setFetchSize(Integer.MIN_VALUE);
2.mysql limit
[轉]MySQL的LIMIT簡介和性能優化
http://www.javawind.net/5b016f38218d0dea0121c2ad265008e3.jhtml
http://www.blogjava.net/bang/archive/2012/03/19/372193.html
一次性查詢幾百萬高效數據方法
http://tech.it168.com/a2012/0228/1317/000001317401_all.shtml
3.Linux記憶體的問題
查詢linux效能相關指令
top , htop , free
釋放記憶體
4.Linux資料夾數量限制
實際撰寫後,發現超過3萬以上時,出現的問題,每個資料夾下的資料夾頂多到31998。
http://lwjlaser.iteye.com/blog/1236678
MySQL & Java ResultSet
JDBC API Implementation Notes
http://dev.mysql.com/doc/refman/5.0/en/connector-j-reference-implementation-notes.html
MySQL Streaming Result Set
http://javaquirks.blogspot.tw/2007/12/mysql-streaming-result-set.html
http://dev.mysql.com/doc/refman/5.0/en/connector-j-reference-implementation-notes.html
Java memory leak
http://cloudtu.blogspot.tw/2011/12/java-memory-leak.html
http://stackoverflow.com/questions/1638011/java-memory-leak
http://www.openlogic.com/wazi/bid/188158/
http://blogs.sourceallies.com/2011/07/debugging-memory-leaks-with-visualvm/