Fasure_Smile的博客

好的习惯,价值千金。

通过dao操作数据库的大概过程

1、连接数据库

最基本的就是JDBC。至于其他的ORM框架,如MyBatis、Hibernate等都是对JDBC的封装。
对数据库连接涉及到TCP连接,是有一定的网络开销的。

2、对sql解析、编译、优化、生成执行计划

sql写出来后数据库并不会完全按照我们写的sql去执行,还要对我们的sql进行相应的优化。
例如:表A中建立了A.a、A.b、A.c这个顺序的组合索引,而我们查的时候如果条件为A.a=a and A.c=c and A.B=b,显然 这种a-->c-->b去查的时候是不会用到我们建的组合索引的,但是数据库会帮我们调整顺序为a-->b-->c,这样就可以用到我们建的组合索引了。
至于执行计划,在我们的sql前面加上explain,即explain select * from .....,就可看到执行计划,这个能够真实反映出数据库对我们的sql进行的操作

3、内存IO操作磁盘

我们的数据是存储在计算机的存储器上的,主要概念为内存(主存)和外存(辅存)。

对内存的读取可以直接通过地址总线和数据总线进行操作,不存在机械运动,速度比较快。而存储数据、索引等则存储在磁盘上,读取磁盘的数据需要通过转动磁盘,移动磁头到对应的扇区,这涉及到机械运动,相对直接从数据总线读取数据来说肯定会慢很多。这个读取磁盘数据的过程可以理解为读取、操作数据的I/O开销。

由以上三个过程显然可以看到,如果我们通过for循环去调用dao的话,必然会造成很大程度的性能下降。
由于项目用到的RPC是HSF的,所以可以通过EDAS监测到方法中每一行所消耗的时间。之前做性能优化时候把并发设置到几千一个dao去查一个空表基本都需要10ms出头,甚至有时候会需要将近100ms,可见调用dao的消耗还是蛮大的。
阅读更多
版权声明:欢迎指正、欢迎交流,转载请注明出处,3Q~ https://blog.csdn.net/Fasure_Smile/article/details/78124690
文章标签: 数据库 dao sql 过程
个人分类: 数据库
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭