測試目的
使用 JAVA 語言對數據庫進行增刪改查功能,驗證是否能夠達到預期的性能指標。
測試環境
平臺:Win10 x64 操作系統
數據庫:Navicat for MySQL,此數據庫蘋果,谷歌,微軟,阿里等知名公司都有使用。
開發環境:IntelliJ IDEA,業界公認最好的 Java 開發環境。
測試指標
- 首先創建數據庫並與開發環境進行關聯,使之開發環境能夠對數據庫進行操作。
- 向數據庫中插入 150w 條數據,使用數據庫 Select 語句進行多條件查詢。
- 條件匹配 5 項字段值,查詢一條需要花費的時間在 50ms 以內。
數據庫操作 | 耗時(ms) | 記錄 | SQL 語句 |
---|---|---|---|
插入150w條數據 | 2.6 h | INSERT INTO table_b_bul(FULLNAME,ISCONTENT,COMTYPE,COMDUR) VALUES(“張三”,“是”,“1”,1) | |
匹配一項字段值 | 第一次 165ms,後續 4ms左右 | SELECT * FROM table_b_bul WHERE ID=1000000 | |
匹配兩項字段值 | 第一次167ms,後續5ms左右 | SELECT * FROM table_b_bul WHERE ID=1000000 AND FULLNAME = ‘張三’ | |
匹配三項字段值 | 第一次175ms,後續5ms左右 | SELECT * FROM table_b_bul WHERE ID=1000000 AND FULLNAME = ‘張三’ AND COMTYPE = '999994’ | |
匹配四項字段值 | 第一次163ms,後續5ms左右 | SELECT * FROM table_b_bul WHERE ID=1000000 AND FULLNAME = ‘張三’ AND COMTYPE = '999994’AND COMDUR = 999994 | |
匹配五項字段值 | 第一次 182ms,後續 5ms左右 | SELECT * FROM table_b_bul WHERE ID=1000000 AND FULLNAME = ‘張三’ AND COMTYPE = '999994’AND COMDUR = 999994 AND ISCONTENT = ‘是’ | |
添加時間索引查詢 | 平均時間 5 ms | SELECT * FROM table_b_bul WHERE FULLNAME = ‘張三’ AND COMTYPE = '1579693’AND COMDUR = 1579693 BETWEEN ‘2020-02-28 11:18:44’ and ‘2020-02-28 11:18:54’ | |
不添加索引查詢 | 平均時間 1500ms | SELECT * FROM table_b_bul WHERE FULLNAME = ‘張三’ AND COMTYPE = '1579693’AND COMDUR = 1579693 BETWEEN ‘2020-02-28 11:18:44’ and ‘2020-02-28 11:18:54’ |
測試分析
- 向數據庫中插入 150w 條數據耗時 2.5h,對比於 c 語言插入數據是比較慢。
- 根據數據庫字段 ID 查詢,匹配 1 個條件與匹配 5 個條件第一次查詢耗時在 165ms左右,再次進行多次查詢耗時 5ms 左右,第一次耗時原因是連接超時並加入緩存。
- 查詢條件不加入 ID 主鍵,匹配 1- 5 項條件,平均查詢時間 1500ms。
- 查詢條件不加入 ID 主鍵,時間字段添加索引,查詢時間範圍內中一條數據,查詢速度大幅度提高,查詢平均時間 4ms 左右。
- 另測同時插入與查詢實際場景操作,得出結果插入操作並不影響查詢速度,查詢時間幾乎保持不變。
- 綜上,數據庫的 5 項匹配條件查詢一條數據,完全在 50ms 之內,符合測試指標。