摘要:今天在網上看到一篇博文,題目是分鐘插入萬條數據到數據庫中,覺得很有意思,就記錄下來供自己學習。版本,設置數據庫表的容量數據庫表的默認容量是,如果存儲的數據超限的話會報錯。在控制臺輸入進入數據庫,輸入注意后邊的分號。
今天在網上看到一篇博文,題目是:4分鐘插入1000萬條數據到mysql數據庫中,覺得很有意思,就記錄下來供自己學習。1,設置MySQL數據庫表的容量
MySQL版本:mysql-5.7.22-winx64
數據庫表的默認容量是:4M,如果存儲的數據超限的話會報錯。2,主要代碼
在windows控制臺輸入mysql -uroot -p,進入MySql數據庫,輸入set global max_allowed_packet = 100*1024*1024;注意后邊的分號。
public static void main(String[] args) { final String driver = "com.mysql.jdbc.Driver"; final String url = "jdbc:mysql://localhost:3306/project"; final String user = "root"; final String password = "253432"; Connection conn = null; PreparedStatement pst = null; long beginTime = 0; long endTime = 0; try { Class.forName(driver);//指定連接類型 conn = DriverManager.getConnection(url, user, password); if(conn != null) { System.out.println("獲取連接成功"); beginTime = new Date().getTime();//開始計時 String sqlPrefix = "insert into test (id,num) values "; // 保存sql后綴 StringBuffer suffix = new StringBuffer(); // 設置事務為非自動提交 conn.setAutoCommit(false); // 比起st,pst會更好些 pst = (PreparedStatement) conn.prepareStatement("");//準備執行語句 // 外層循環,總提交事務次數 for (int i = 1; i <= 100; i++) { suffix = new StringBuffer(); // 第j次提交步長 for (int j = 1; j <= 100000; j++) { // 構建SQL后綴 suffix.append("(""+ UUID.randomUUID().toString()+"",""+i*j+"""+"),"); } // 構建完整SQL String sql = sqlPrefix + suffix.substring(0, suffix.length() - 1); // 添加執行SQL pst.addBatch(sql); // 執行操作 pst.executeBatch(); // 提交事務 conn.commit(); // 清空上一次添加的數據 suffix = new StringBuffer(); } endTime = new Date().getTime();//開始計時 }else { System.out.println("數據庫連接失敗"); } } catch (ClassNotFoundException e) { e.printStackTrace(); System.out.println("com.mysql.jdbc.Driver驅動類沒有找到"); } catch (SQLException e) { e.printStackTrace(); System.out.println("數據庫地址錯誤"); }finally {//釋放資源 System.out.println("插入成功,所有時間:"+ (endTime-beginTime)); if(conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } if(pst != null) { try { pst.close(); } catch (SQLException e) { e.printStackTrace(); } } } }3,運行結果
可以看到用了兩分鐘
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/71953.html
摘要:進程切換太多,影響了了效率應該是原因之一。當時,十萬條記錄,個進程插入總時間為單進程插入萬條數據,耗時秒,相對個進程插入萬記錄來說,耗時少些。而單進程插入萬條記錄,耗時,相對來說,是挺慢的了。 個人在虛擬機centos7,單核,1G內存 /** * 模擬并發請求,10萬次寫入數據庫 * 拆分為10個進程,每個進程處理一萬條插入 */ $total = 10000; $num ...
摘要:一直在找生成有效測試數據的工具與方法今天找到一個大神寫的腳本這里感謝大地上的烏龜鏈接在這自己大神的腳本上做了一些修改生成了一個對象數組并用發到后臺程序插入數據庫代碼如下腳本獲取當前時間戳將對象數組格式化成字符串成功本人的筆記本比較渣 一直在找生成有效測試數據的工具與方法,今天找到一個大神寫的JavaScript腳本,這里感謝----大地上的烏龜.鏈接在這:http://www.cnbl...
摘要:一直在找生成有效測試數據的工具與方法今天找到一個大神寫的腳本這里感謝大地上的烏龜鏈接在這自己大神的腳本上做了一些修改生成了一個對象數組并用發到后臺程序插入數據庫代碼如下腳本獲取當前時間戳將對象數組格式化成字符串成功本人的筆記本比較渣 一直在找生成有效測試數據的工具與方法,今天找到一個大神寫的JavaScript腳本,這里感謝----大地上的烏龜.鏈接在這:http://www.cnbl...
閱讀 3557·2021-08-02 13:41
閱讀 2390·2019-08-30 15:56
閱讀 1520·2019-08-30 11:17
閱讀 1174·2019-08-29 15:18
閱讀 580·2019-08-29 11:10
閱讀 2671·2019-08-26 13:52
閱讀 508·2019-08-26 13:22
閱讀 2949·2019-08-23 15:41