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

数据库 专栏收录该内容
8 篇文章 0 订阅

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的消耗还是蛮大的。
  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

参与评论 您还未登录,请先 登录 后发表或查看评论
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

Fasure_Smile

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值