[Database] 데이터 전송 연산 시간 계산

2022. 11. 22. 12:00·공부/Database
728x90

데이터 전송 연산 시간은 다음과 같이 계산된다.

 

  1. 탐구 시간 (seek  time) : 헤드를 가지고 있는 암이 해당 실린더에 이동하는 시간
  2. 헤드 활동 개시 시간(head activation time) : 헤드가 활동을 시작하는 시간
  3. 회전 지연 시간(rotational latency) : 헤드가 트랙에서 해당 블록까지 가는 시간
  4. 전송 시간(transfer time) : 블록 안의 섹터 사이를 통과하는데 걸리는 시간
대랑 전송 (Bulk transfer)

대랑 전송은 문자 그대로 여러 블록을 전송한다는 뜻이다.

 

여기서 탐구 시간과 회전 지연 시간의 경우 첫 블록에 도달할 때만 시간이 걸리고 그 다음 연속된 블록에 도달할 때는 걸리는 시간이 0이다.

 

그렇기에 연속된 블록을 디스크에 배치시키는 것이 중요하다.

 

디스크에서 데이터 접근 효율을 높이는 방법
  1. cpu와 hdd의 속도 차이를 관리한다.
  2. 데이터를 연속된 블록으로 저장한다.
  3. 엘리베이터 알고리즘처럼 입출력의 효율성을 늘린다.
  4. 로그 디스크나 로그 파일을 사용한다.
  5. ssd 또는 플래시 메모리를 사용하여 ssd 버퍼에 기록하고 업데이트 한다.

 

Q. 20개의 기록면, 500트랙/면, 0.5KB/섹터, 40섹터/트랙, 갭 0.125KB
분당 회전 속도 : 6000rpm 탐구 시간 : 20ms
(20개의 기록면이라는 것은 양면으로 기록 가능한 디스크 원판이 10개 있다는 뜻이다.)

1. 한 트랙의 총 용량 : 섹터 개수 * (섹터 용량 + 갭 용량) = 40 * (0.5+0.125)KB = 25KB 
2. 한 트랙의 유효 용량 : 40 * 0.5KB = 20KB (갭의 용량은 제외한다.)
3. 한 실린더의 총 용량 : 기록면 * 섹터 개수 * (섹터 용량 + 갭 용량) = 20 * 40 *(0.5+0.125)KB = 500KB
4. 한 실린더의 유효 용량 : 20 * 40 * 0.5KB = 400KB (갭의 용량은 제외한다.)
5. 디스크가 한 번 도는데 걸리는 시간 : 6000/1분 = 6000/60초 = 6000/60000msec = 1/10msec 이므로 10msec이다
6. 전송률 (transfer rate) : 한 트랙의 총 용량 / 한 번 도는데 걸리는 시간 = 25KB/10msec = 2.5KB/msec

7. 평균 회전 지연시간(rd) : 한 번 도는데 걸리는 시간은 10msec이다. 평균 회전 지연 시간은 2로 나눈 5msec이다.
8. 블록 전송 시간(btt) : B/tr =  한 블록 유효 용량 / 전송률 = 0.5KB/(2.5KB/msec) = 0.2msec 
9. 대량 전송률 (btr) : tr * (B/B+G) = 2.5KB/msec * 0.8 = 2KB/msec
10. 하나의 섹터를 찾아서 읽는 시간 : 탐구 시간(seek time) + 회전 지연시간(rd) + 블록 전송 시간(btt) = 25.2msec
11. 10개의 임의의 섹터를 전송하는 시간 : 임의의 섹터이므로 탐구 시간 회전 지연 시간이 포함된다.
      = 10 * (seek time + rd + btt ) = 252msec
12. 10개의 연속된 섹터를 전송하는 시간 : 연속되어 있다면 seek time과 rd는 첫 섹터를 찾을 때만 소요된다.
      seek time + rd + 10 * btt = 27msec
      더 정확한 시간은 seek time + rd + 10 * (B/btr) = 27.5msec 이다.

 

728x90

'공부 > Database' 카테고리의 다른 글

[Database] Sequential Files(Ordered Files)의 정의와 트랜잭션 파일(transaction file)  (0) 2022.11.24
[Database] 더블 버퍼링 (double buffering)  (0) 2022.11.23
[Database] 디스크 안에 파일 레코드를 저장하는 방법  (0) 2022.11.23
[Database] 자기 디스크의 주소법  (0) 2022.11.21
[Database] 2차 저장 장치 구조(자기 디스크)  (0) 2022.11.20
'공부/Database' 카테고리의 다른 글
  • [Database] 더블 버퍼링 (double buffering)
  • [Database] 디스크 안에 파일 레코드를 저장하는 방법
  • [Database] 자기 디스크의 주소법
  • [Database] 2차 저장 장치 구조(자기 디스크)
웅대
웅대
알고리즘과 백엔드를 중심으로 열심히 공부 중입니다! 같이 소통하며 공부해요!
    250x250
  • 웅대
    웅대 개발 블로그
    웅대
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 백준 알고리즘
        • dp
        • 문자열
        • 정렬
        • 스택
        • 브루트 포스
        • 이진 탐색
        • 정리
        • 우선순위 큐
        • 자료구조
        • 그래프
        • 기타
        • 그리디
      • 컴퓨터 언어
        • Kotlin
        • Python
        • C#
      • 공부
        • Database
        • Android Studio
        • Algorithm
        • 컴퓨터 구조론
        • Spring
        • lombok
        • AWS
        • Network
        • OS
        • Git & GitHub
        • AI
        • Computer Vision
        • 보안
        • Nginx
        • 프론트
        • express
        • GCP
        • grokking concurrency
        • DevOps
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    bfs
    code tree
    푸쉬 알람
    스프링 OAuth2
    Merge
    binary search
    다익스트라
    RNN
    ci/cd
    파이썬
    스택
    AWS Lambda
    openvidu 배포
    codetree
    Vector Store
    parametric search
    nn.RNN
    embedding
    ChatPromptTemplate
    influxDB CLI
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
웅대
[Database] 데이터 전송 연산 시간 계산
상단으로

티스토리툴바