测试目的
使用 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 之内,符合测试指标。