事務
一組要麼同時執行成功,要麼同時執行失敗的sql語句,是數據庫操作的執行單元
事務結束於:
- 執行commit或rollback語句。
- 執行一條DLL語句,例如create table語句;在這種情況下,會自動執行commit語句。
- 執行一條DCL語句,例如GRANT語句;在這種情況下,會自動執行commit語句.
- 斷開與數據庫的連接。
- 執行了一條DML語句,該語句卻失敗了;在這種情況中,會爲這個無效的DML語句執行ROLLBACK語句。
事務四大特點:
- atomicity(原子性)
- consistency(一致性)
- isolation(隔離性)
- durability(持久性)
批處理
對於處理大量的數據,建議使用Statement,因爲PreparedStatement的預編譯空間有限,當數據量特別大時,會發生異常。
在批處理之前把事務設置爲手動提交。
Class.forName("com.mysql.cj.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/testjdbc?serverTimezone=UTC","root","root");
con.setAutoCommit(false);//事務設置爲手動提交
stmt = con.createStatement();
long start = System.currentTimeMillis();
for(int i = 0;i < 20000;i++){
stmt.addBatch("insert into student values (" + (i + 10000) + ",'www','123')");
}
stmt.executeBatch();
con.commit();//手動提交
long end = System.currentTimeMillis();
System.out.println("插入20000條數據所要的時間爲:" + (end - start) + "ms");//需要2s