摘要:今天在網(wǎng)上看到一篇博文,題目是分鐘插入萬條數(shù)據(jù)到數(shù)據(jù)庫中,覺得很有意思,就記錄下來供自己學(xué)習(xí)。版本,設(shè)置數(shù)據(jù)庫表的容量數(shù)據(jù)庫表的默認(rèn)容量是,如果存儲的數(shù)據(jù)超限的話會報錯。在控制臺輸入進(jìn)入數(shù)據(jù)庫,輸入注意后邊的分號。
今天在網(wǎng)上看到一篇博文,題目是:4分鐘插入1000萬條數(shù)據(jù)到mysql數(shù)據(jù)庫中,覺得很有意思,就記錄下來供自己學(xué)習(xí)。1,設(shè)置MySQL數(shù)據(jù)庫表的容量
MySQL版本:mysql-5.7.22-winx64
數(shù)據(jù)庫表的默認(rèn)容量是:4M,如果存儲的數(shù)據(jù)超限的話會報錯。2,主要代碼
在windows控制臺輸入mysql -uroot -p,進(jìn)入MySql數(shù)據(jù)庫,輸入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(); // 設(shè)置事務(wù)為非自動提交 conn.setAutoCommit(false); // 比起st,pst會更好些 pst = (PreparedStatement) conn.prepareStatement("");//準(zhǔn)備執(zhí)行語句 // 外層循環(huán),總提交事務(wù)次數(shù) for (int i = 1; i <= 100; i++) { suffix = new StringBuffer(); // 第j次提交步長 for (int j = 1; j <= 100000; j++) { // 構(gòu)建SQL后綴 suffix.append("(""+ UUID.randomUUID().toString()+"",""+i*j+"""+"),"); } // 構(gòu)建完整SQL String sql = sqlPrefix + suffix.substring(0, suffix.length() - 1); // 添加執(zhí)行SQL pst.addBatch(sql); // 執(zhí)行操作 pst.executeBatch(); // 提交事務(wù) conn.commit(); // 清空上一次添加的數(shù)據(jù) suffix = new StringBuffer(); } endTime = new Date().getTime();//開始計時 }else { System.out.println("數(shù)據(jù)庫連接失敗"); } } catch (ClassNotFoundException e) { e.printStackTrace(); System.out.println("com.mysql.jdbc.Driver驅(qū)動類沒有找到"); } catch (SQLException e) { e.printStackTrace(); System.out.println("數(shù)據(jù)庫地址錯誤"); }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,運(yùn)行結(jié)果
可以看到用了兩分鐘
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/71953.html
摘要:進(jìn)程切換太多,影響了了效率應(yīng)該是原因之一。當(dāng)時,十萬條記錄,個進(jìn)程插入總時間為單進(jìn)程插入萬條數(shù)據(jù),耗時秒,相對個進(jìn)程插入萬記錄來說,耗時少些。而單進(jìn)程插入萬條記錄,耗時,相對來說,是挺慢的了。 個人在虛擬機(jī)centos7,單核,1G內(nèi)存 /** * 模擬并發(fā)請求,10萬次寫入數(shù)據(jù)庫 * 拆分為10個進(jìn)程,每個進(jìn)程處理一萬條插入 */ $total = 10000; $num ...
摘要:一直在找生成有效測試數(shù)據(jù)的工具與方法今天找到一個大神寫的腳本這里感謝大地上的烏龜鏈接在這自己大神的腳本上做了一些修改生成了一個對象數(shù)組并用發(fā)到后臺程序插入數(shù)據(jù)庫代碼如下腳本獲取當(dāng)前時間戳將對象數(shù)組格式化成字符串成功本人的筆記本比較渣 一直在找生成有效測試數(shù)據(jù)的工具與方法,今天找到一個大神寫的JavaScript腳本,這里感謝----大地上的烏龜.鏈接在這:http://www.cnbl...
摘要:一直在找生成有效測試數(shù)據(jù)的工具與方法今天找到一個大神寫的腳本這里感謝大地上的烏龜鏈接在這自己大神的腳本上做了一些修改生成了一個對象數(shù)組并用發(fā)到后臺程序插入數(shù)據(jù)庫代碼如下腳本獲取當(dāng)前時間戳將對象數(shù)組格式化成字符串成功本人的筆記本比較渣 一直在找生成有效測試數(shù)據(jù)的工具與方法,今天找到一個大神寫的JavaScript腳本,這里感謝----大地上的烏龜.鏈接在這:http://www.cnbl...
閱讀 3579·2021-08-02 13:41
閱讀 2450·2019-08-30 15:56
閱讀 1527·2019-08-30 11:17
閱讀 1186·2019-08-29 15:18
閱讀 591·2019-08-29 11:10
閱讀 2681·2019-08-26 13:52
閱讀 520·2019-08-26 13:22
閱讀 2962·2019-08-23 15:41