是什么使资源“昂贵”?


10

我正在阅读休眠信息,并且遇到诸如“跨多个请求打开JDBC连接不是一件好事,因为它是一种昂贵的资源”这样的语句。

什么是昂贵的资源?

编辑:我要添加未知的用户添加为下面的注释。

如果建立数据库连接很昂贵,那么为什么不一次又一次地使用同一事物(而不是缓存),而不是每次都关闭并打开它?


2
昂贵的意思是如果使用频率过高或使用频率不高,都会对您造成伤害
亚历山大·盖斯勒

Answers:


20

一种昂贵的资源是:

  • 需要很长时间才能创建/初始化。任何数据库连接都可能需要1-2秒以上的时间才能完成握手。
  • 占用大量内存。在存储之前,将完整的文件上传到内存中的字节数组中读取,将在短时间内占用大量内存。
  • 使用大量的CPU周期。对大量数据的计算可能会使CPU在执行计算时费力。

每个昂贵的资源都可能提供可伸缩性问题。简而言之,您不能同时进行太多此类昂贵的操作,否则您将无法足够快地响应用户。


我喜欢同意,但必须指出,它与@Sun给出的示例冲突。因为建立连接很昂贵,所以您可以保持连接打开。
用户未知

2
在这种特殊情况下,让我澄清一下:如果创建/初始化需要花费很长时间,则您想限制创建/初始化该资源的次数。数据库连接在打开时不会占用很多资源,因此最好将这些资源池化。
Berin Loritsch 2011年

5

取决于特定资源,可能有各种各样的事情。因此,您可能会遇到以下情况:

  • 操作需要多少内存。
  • 建立连接所花费的时间。
  • 维持该连接的开销。

等等。

如果需要在操作等过程中访问硬盘驱动器或网络,则可能使事情变得昂贵的其他事情可能是。


2

昂贵的前面应加上“ computationally”。计算费用用于指完成一项操作,算法或程序所需的时间或资源(CPU,内存,磁盘,网络带宽)量。


2

数据库连接的开销来自许多因素。

  • 数据库连接的建立速度很慢,并且需要客户端和服务器端的资源。这就是连接被池化的原因。
  • 开放式事务有开销,需要由客户端和服务器进行管理。
  • 未结交易可能会阻止其他更新。这会降低整体性能。

也就是说,您需要保持连接(或至少是事务)打开足够长的时间,以确保您的事务通过了ACID测试。(原子一致隔离持久)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.