索引優越性100萬&&3000萬條記錄,資料庫性能還有try-catch異常的捕捉

主要是完成任務25的在main裡面測試1000次的查詢---->

主要的的代碼就是這個

測試完成後(測試成功)

控制台裡面的列印的信息

運行成功

運行的過程中明顯的感覺就是運行的時間在邊長---->不像以前的馬上就在控制台裡面列印出最後的信息---->Junit測試運行完成

接下來就是中斷DB,看異常能否捕捉到----->

開始正常運行一次

斷開DB錯誤的密碼mybatis裡面的密碼少個6

再次運行測試

我還測試另一種把表的名字刪除一個n

運行列印的信息

測試了連個信息的錯誤的DB斷開---->可以try ---catch捕捉到異常

任務26的try--catchDB斷開可以捕捉到異常

準備檢查自己的代碼的規範是否合格----->

如果DB的表有改動------>

要保證查詢的信息保證可以查詢到

開始的模型層的欄位要改一下------>那個是和後面的查詢的欄位相對應的

還有需要修改的地方就是category.XML查詢的語句對應的SQL的具體用到欄位語句需要修改

還有需要修改的地方就是插入數據的具體修改的欄位需要修改(在測試類的裡面)

要修改的地方知識對應的欄位修改的地方---->java的代碼最好要少的修改

最多的是XML裡面的配置詳細信息修改

對於上面如果DB裡面的信息發生了改變 --->修改了也就幾分鐘可以講對應的欄位修改好----->花費的時間比較短就可以完成

接下來就是講資料庫裡面插入100萬條數據

不知道怎麼了運行了1000條就不運行了

可能是username的欄位的範圍有關

在師兄的指點下package com.java.test;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.SQLException;

public class InsertTest {

public static void main(String[] args) {

Connection conn = DBUtil.getConnection();

String sql = "insert into stu_information (username,classes,birthday,city,qq,words,phone) values (?,?,?,?,?,?,?)";

try {

PreparedStatement prep = conn.prepareStatement(sql);

// 將連接的自動提交關閉,數據在傳送到資料庫的過程中相當耗時

conn.setAutoCommit(false);

long start = System.currentTimeMillis();

for (int i = 0; i < 10; i++) {

long start2 = System.currentTimeMillis();

// 一次性執行插入10萬條數據

for (int j = 0; j < 100000; j++) {

prep.setString(1, "老大"+i*j);

prep.setString(2, "java");

prep.setInt(3, 1995-02-02);

prep.setString(4, "成都");

prep.setInt(5, 18515465);

prep.setString(6, "插入100萬條記錄");

prep.setInt(7, 11598257);

// 將預處理添加到批中

prep.addBatch();

}

// 預處理批量執行

prep.executeBatch();

prep.clearBatch();

conn.commit();

long end2 = System.currentTimeMillis();

// 批量執行一次批量列印執行依次的時間

System.out.print("inner"+i+": ");

System.out.println(end2 - start2);

}

long end = System.currentTimeMillis();

System.out.print("total: ");

System.out.println(end - start);

} catch (SQLException e) {

e.printStackTrace();

} finally {

try {

conn.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}

blog.csdn.net/zhangjinp(參考的文檔)

最後運行的時間的輸出

在資料庫裡面

我在cmd控制台裡面查詢了一下

我在控制台裡面查詢了一下全部的數據跑了好久

100萬次太久了我就測試沒有索引的查詢

添加了索引的速度加快

開始老大說的量級不夠----?>現在覺得100萬的查詢的時間的的數據差別也是不很大

100萬的數據量的測試完成了----->看見那個索引的優越性還是有一點不是很明顯

接下來準備3000萬的數據

這次寫進去的數據感覺時間很久運行了很久現在才10個循環---->還有90個循環

這個寫入的速度很慢---->可能太多了

終於運行完了(找了一個偏後面的數據改了一下準備測試)

開始是沒有索引的測試(這次比較明顯29s左右)

接下來建立索引的查詢測試(這個索引的作用比較直觀)

測試基本就感受到比較直觀了

今天完成的事情:前面的資料庫裡面插入100萬條記錄和3000萬條記錄,在開始100萬比較輕鬆,到3000萬的時候那個就時間比較久,後面測試的索引和沒有索引的記錄也比較直觀,查詢的效率和速度也比較直觀,還有try---catchde 異常能夠捕捉到的實現

明天的計劃:準備將自己關於任務一學習的做一個總結---->還有將項目的提交到GitHub是上面

今天遇到的困難:就是在插入數據3000萬的數據.電腦快爆炸了----->運行了一個多小時終於搞定了最後的資料庫性能測試

今天的收穫:感覺索引的強大,還有好處,還有開始數據怎麼插入到資料庫這麼大的數量

加油----->堅持


推薦閱讀:

如果編譯器可以知道一個try塊不會拋出異常,那整個try-catch部分是不是會被忽略?
Python 的異常機制及規範是否相當不人性化?
如何評價王垠的《Kotlin和Checked Exception》?
為什麼C++中,析構函數、operator delete、以及operator delete []按照慣例不會拋出異常?
如何優雅的處理(或忽略)c++函數返回值代表的錯誤?

TAG:索引 | 异常处理 | 数据库 |