发表于: 2017-10-17 22:13:34
1 698
今日完成的事情:
1)对于昨天数据库添加索引和没有添加索引查找的问题。今天又重新测试了一遍,今天又重新测试一遍,发现和昨天差不多的情况。请教师兄,师兄告诉我,在集成开发环境中测试,由于Java虚拟机要经过编译过程,所以我昨天的数据不能够说明有没有索引对查找数据的区别,师兄让我在加索引和不加索引的情况下,连续取出10次,看剩下9次取出结果进行比较。
数据库里面利用for循环加入60万条数据,online_id添加的是for循环的参数i,这样每个online_id都不一样,可以加唯一索引。
为online_id加唯一索引:
for循环连续取10次:
public static void main(String[] args) {
userDao = (UserDao) ac.getBean("userdao");
//测试根据用户线上id查询用户信息
for(int i=0;i<10;i++){
//计时器
long timeStart=System.currentTimeMillis();
User user=userDao.selectUserByOnline_id(434343);
long timeEnd=System.currentTimeMillis();
System.out.println(timeEnd-timeStart);
}
测试结果:
忽略第一次,剩下的9次平均值为:3.11毫秒。
去掉索引:
相同的查询语句,查询结果:
忽略第一次,剩下的9次,一眼就可以看出巨大的差距,差了100多倍。
结论:索引提供指针以指向存储在表中指定列的数据值,然后根据指定的排序次序排列这些指针。数据库使用索引的方式与使用书的目录很相似:通过搜索索引找到特定的值,然后跟随指针到达包含该值的行。 所以说,对于是以查询为目的数据库,加上索引,会非常提高效率。
2)数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而再不是重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能。
简单来说就是通过数据库连接池,可以让程序自动管理数据库连接的释放和断开。由于建立数据库连接是一个非常耗时耗资源的行为,所以通过连接池预先同数据库建立一些连接,放在内存中,应用程序需要建立数据库连接时直接到连接池中申请一个就行,用完后再放回去。
3)今天学习svn,使用svn把自己的task1上传到制定位置。
首先,下载和安装svn以及tortoise.svn。然后找到task1(我的整个task1所有的东西都在里面)这个文件夹右键tortoise svn 选择import。
点击ok,等待上传就完事了。
OK。
今天总的来说是把任务一没有搞明白的地方,又重新过了一遍。
明天计划的事情:
学习rest接口设计规范,以及springMVC。
遇到的问题:
数据库有无索引查找数据的的差别,最后又师兄帮忙解决。
收获:
今天学习的svn上传的使用,以及数据库有无索引查询数据的差别,连接池的作用,为什么要用连接池。
任务开始时间:2017/10/12
预计完成时间:2017/10/18
延期:无
禅道:http://task.ptteng.com/zentao/project-task.html
评论