发表于: 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 index100万和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。



返回列表 返回列表
评论

    分享到