发表于: 2021-03-17 23:46:07
1 1175
一,今天完成的事情
完成任务一21-29
1,用intelliJ 打包并运行,本地cmd中运行。
能够正常获得结果,运行了我设置的入口StudentServiceTest类。以及用main在本地运行
StudentMainTest
获得同样结果。
25.测试一下不关闭连接池的时候,在Main函数里写1000个循环调用会出现什么情况。
循环插入1000条记录,正常,无任何报错。应该不是让我调用1000次连接池,只是使用其中一个连接。使用程序主要如下。修改max最大连接。使用mybatis,开log4j日志。
@Test
@Transactional
@Rollback(true)
public void testInsertStudents() {
Student student = new Student();
long ids = 20;
int max = 1000020;
long startTime = System.currentTimeMillis();
student.setCreateAt(startTime);
student.setUpdateAt(startTime);
System.out.println(startTime);
while( ids++ < max ){
student.setId( ids );
student.setName( "nnccc" + ids );
//student.setStudentId("5671D"+ids);
studentService.addStudent(student);
}
long endTime = System.currentTimeMillis();
System.out.println(endTime);
System.out.println( (endTime - startTime) / 1000 );
}
可以正常插入
26.测试一下连接DB中断后TryCatch是否能正常处理。
可以正常处理,见图。设置的不同错误类型。
首先修改密码成错误密码。正常捕获错误。
在代码中close session。
正常捕获错误。
27.检查一下自己的代码是否符合规范,如果DB的表格有改动,应该改哪些内容,需要多久
已经检查。根据修改内容确定时间。表格设计多考虑可能发生的问题,尽量不要改动。
28.数据库里插入100万条数据,对比建索引和不建索引的效率查别。再插入3000万条数据,然后是2亿条,别说话,用心去感受数据库的性能。
3000万时间目前对我太长。我测试了有无normal index的100万和500万插入。结果如下。使用mybatis,开log4j日志。preparestatement可能速度会快,但是我测试是为了展示效率不同。同等情况有无索引对比。看了不同条数。
(1)插入100万条无索引
693s
(2)插入100万条有索引
navicat添加索引
查看添加索引在name上添加成功。
运行721s。name有索引比无索引花了更多时间,(2)比(1)多了大概百分之4的时间。
(3)插入500万条有索引.超过1000万在我这里时间预测超过1小时,100万条开始已经能看出差距。
3589s
(4)插入500万条无索引.超过1000万在我这里时间预测超过1小时,100万条开始已经能看出差距。更多的就不做了
删除索引。
查看目前索引。成功删除name上的索引。
时间结果
3192s。name无索引耗时比有更多索引短。(3)比(4)约多花12%时间。
二,今天问题:
无明显问题。数据库索引影响查询的在之后的报告。
三,今天的收获:
复习循环,这次选while没选for。try catch finally。关闭资源比如session是个好习惯。
同等情况下,如果插入的数据有更多索引,速度也会变慢。不但用索引空间换时间,插入的时候在工程上很可能会花更多时间。我在name上用的是B tree索引,插入数据需要让树平衡需要时间,本报告实际工程证明花更多时间。
四,明天的计划:
继续完成任务一21-29。
评论