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