자원을“비싸게”만드는 것은 무엇입니까?


10

나는 최대 절전 모드를 읽고 있는데 "여러 요청에서 열린 JDBC 연결은 비용이 많이 드는 리소스이기 때문에 좋지 않다"와 같은 문장을 발견했다.

비싼 자원이란 무엇입니까?

편집 : 나는 사용자가 알 수없는 것을 아래 주석으로 추가하고 있습니다.

데이터베이스 연결을 구축하는 데 비용이 많이 든다면, 닫고 매번 여는 대신 똑같은 것을 다시 사용하지 않는 이유 (캐싱 아님)?


2
비싼 것은 너무 자주 사용하거나 지정된 방식으로 사용하지 않으면 상처입을 수 있음을 의미 합니다.
Alexander Gessler

답변:


20

고가의 자원은 다음과 같습니다.

  • 작성 / 초기화하는 데 시간이 오래 걸립니다. 모든 데이터베이스 연결은 핸드 셰이크를 완료하는 데 1-2 초 이상 걸릴 수 있습니다.
  • 많은 메모리를 사용합니다. 저장하기 전에 메모리의 바이트 배열로 전체 파일 업로드를 읽으면 짧은 시간 동안 상당한 양의 메모리가 사용됩니다.
  • 많은 CPU주기를 사용합니다. 많은 양의 데이터를 계산하면 계산을 수행하는 동안 CPU에 세금이 부과 될 수 있습니다.

값 비싼 리소스 각각은 확장 성 문제를 제공 할 수 있습니다. 요컨대, 이러한 고가의 작업을 동시에 너무 많이 수행 할 수 없거나 사용자에게 신속하게 응답 할 수 없습니다.


나는 동의하지만, @Sun이 준 예제와 충돌한다는 것을 지적해야합니다. 연결 설정은 비용이 많이 들기 때문에 연결 상태를 유지합니다.
사용자가 알 수 없음

2
이 특정 경우에 대해 설명하겠습니다. 무언가를 작성 / 초기화하는 데 시간이 오래 걸리면 해당 자원을 작성 / 초기화하는 횟수를 제한하려고합니다. 데이터베이스 연결은 열려있는 동안 많은 리소스를 사용하지 않으므로 이러한 리소스를 풀링하는 것이 좋습니다.
Berin Loritsch

5

특정 리소스에 따라 다양한 것들이 될 수 있습니다. 따라서 다음이있을 수 있습니다.

  • 작동하는 데 필요한 메모리 양
  • 연결하는 데 걸린 시간입니다.
  • 해당 연결을 유지 관리하는 오버 헤드

등등.

비용이 많이 드는 다른 작업은 하드 드라이브 나 네트워크에 액세스해야하는 경우 작동 등일 수 있습니다.


2

비싼 곳에 "계산적으로"접두사를 붙여야합니다. 계산 비용 은 작업, 알고리즘 또는 프로그램을 완료하는 데 필요한 시간 또는 리소스 (CPU, 메모리, 디스크, 네트워크 대역폭 포함)를 나타내는 데 사용됩니다.


2

데이터베이스 연결 비용은 여러 가지 요소에서 비롯됩니다.

  • 데이터베이스 연결 속도가 느리고 클라이언트 및 서버 측에 리소스가 필요합니다. 이것이 연결이 풀링되는 이유입니다.
  • 열린 트랜잭션에는 오버 헤드가 있으므로 클라이언트와 서버 모두에서 관리해야합니다.
  • 미결 거래는 다른 업데이트를 차단할 수 있습니다. 전체 성능이 저하됩니다.

즉, 트랜잭션이 ACID 테스트를 통과 할 수있을 정도로 연결 (또는 최소한 트랜잭션)을 열어 두어야합니다 . (원자 일관성 격리 내구성)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.