KR101087425B1 - 파일 크기 조절 방법, 메모리 크기 조절 시스템 및 컴퓨터 판독가능 기록매체 - Google Patents

파일 크기 조절 방법, 메모리 크기 조절 시스템 및 컴퓨터 판독가능 기록매체 Download PDF

Info

Publication number
KR101087425B1
KR101087425B1 KR1020040039096A KR20040039096A KR101087425B1 KR 101087425 B1 KR101087425 B1 KR 101087425B1 KR 1020040039096 A KR1020040039096 A KR 1020040039096A KR 20040039096 A KR20040039096 A KR 20040039096A KR 101087425 B1 KR101087425 B1 KR 101087425B1
Authority
KR
South Korea
Prior art keywords
page
pages
file
dirty
skipped
Prior art date
Application number
KR1020040039096A
Other languages
English (en)
Other versions
KR20040103483A (ko
Inventor
스티븐제이. 베일리
Original Assignee
마이크로소프트 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20040103483A publication Critical patent/KR20040103483A/ko
Application granted granted Critical
Publication of KR101087425B1 publication Critical patent/KR101087425B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/40Data acquisition and logging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99932Access augmentation or optimizing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99942Manipulating data structure, e.g. compression, compaction, compilation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99956File allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

데이타베이스 파일의 축소는, 모든 빈 페이지들이 파일의 마지막에 위치하도록 파일 안에서 페이지들을 조작해서 수행된다. 파일의 끝에서부터 비어 있지 않은 페이지들은 파일의 처음의 빈 페이지들에 쓰여진다. 적절한 횟수만큼, 이 프로세스를 반복하면 파일의 끝에 모든 빈 페이지들을 위치시키게 한다. 일단 이 과정이 성취되면, 파일은 모든 비어 있고 쓸모 없는 페이지들에 의해 점유된 공간이 파일 시스템에 리턴이 되도록 절단 된다. 파일 절단은 첫 번째 비어있지 않은 페이지가 발견될 때까지 파일의 끝으로부터 거꾸로 파일을 트래버스 (traverse)하는 것과 관련이 있다. 파일은 최종의 비어 있지 않은 페이지 다음에서 절단된다.
데이타베이스 자동 수축 프로세스, 더러운 페이지 (dirty page), 건너뛴 페이지 (skipped page), 논리 ID, 물리 주소, 논리 오프셋 (logical offset)

Description

파일 크기 조절 방법, 메모리 크기 조절 시스템 및 컴퓨터 판독가능 기록매체{SYSTEM AND METHOD FOR RESIZING A DATABASE}
도1은, 본 발명의 실시예에 따라서, 메모리 페이지들을 포함하는 데이타베이스 파일의 예의 설명이다.
도2는, 본 발명의 실시예에 따라서, 빈 페이지들에 기록될 페이지들로서 식별되는 페이지들을 보이는 데이타베이스 파일의 설명이다.
도3은, 본 발명의 실시예에 따라서, 건너뜀으로 표시된 페이지들 및 더러움으로 표시된 페이지들을 보이는 파일의 설명이다.
도4는, 본 발명의 실시예에 따라서, 자동 수축 프로세스의 완료에서 데이타베이스 파일을 설명한다.
도5는, 본 발명의 실시예에 따라서, 논리 ID들을 물리 주소들에 맵핑하는 맵핑 표의 예의 설명이다.
도6은, 본 발명의 실시예에 따라서, 자동 수축을 수행하는 프로세스의 흐름도의 예이다.
도7은, 본 발명의 실시예에 따라서, 데이타베이스 파일 크기를 조절하는 시스템의 블럭도이다.
도8은, 본 발명의 실시예에 따라서 메모리 크기를 조절하는 방법 및 시스템 이 구현될 수 있는 적절한 컴퓨팅 시스템 환경의 예를 설명한다.
<주요 도면 부호 설명>
90: 절단기
92: 컨트롤러
94: 할당 지시기 (비트맵 생성기)
96: 시스템 메모리 (파일들/페이지들)
본 발명은 일반적으로 데이타베이스들에 관한 것이고, 더 구체적으로 데이타베이스 파일 크기의 자동 조절에 관한 것이다.
데이타베이스들과 데이타베이스 제품들은 오늘날 보편적으로 사용되고 있다. 데이타베이스는, 레코드들 (records), 표들, 및 인덱스들과 같은, 객체들을 저장할 수 있다. 객체들을 삭제하는 것과 같은, 데이타베이스에 수행되는 다양한 동작들은 데이타베이스에서 빈 공간 (메모리)을 생성할 수 있다. 이 빈 공간은 전형적으로 데이타베이스 파일 전체에 분포되어 있고, 그러므로 그 데이타베이스 파일로부터 쉽게 제거될 수 없다. 이 빈 메모리는 데이타베이스들에게, 특히 모바일 데이타베이스 제품들에게, 문젯거리이다. 모바일 데이타베이스 제품들은 일반적으로 제한된 저장 공간 및/또는 속도를 갖는 소형의, 포터블 디바이스들에 사용된다. 그러므로 저장 장치의 효율적 사용은 많은 모바일 데이타베이스 제품들의 목표 사 항이다.
이 빈 메모리 공간을 더 효율적으로 사용하려는 현재 시도들은 컴팩팅 (compacting)이라고 알려진 기술을 포함한다. 데이타베이스의 컴팩팅은 전형적으로 새로운 데이타베이스를 생성하고, 그 다음에 소스 데이타베이스로부터 새 데이타베이스로 모든 객체들을 복사하는 것과 관련있다. 컴팩팅은 데이타베이스 파일로부터 빈 페이지들을 제거할 뿐만이 아니라 데이타베이스를 디프래그멘트 (defragment)하는 효과를 갖는다. 프래그멘트 (fragment)된 데이타베이스는 다수의 비어 있지 않은 페이지들을 갖고, 그 비어 있지 않은 페이지들은 단지 일부만 채워져 있다. 전형적으로, 컴팩팅은, 컴팩팅 프로세스가 프로세서 및 디스크 인텐시브 (process and disk intensive)하고, 그러므로 프로세스가 수행되는 동안에 데이타베이스의 서비스 제공에 차질을 일반적으로 빚게 하기 때문에 - 혹은, 적어도 사용자가 성능에서 현저한 영향을 경험할 수 있을 정도로 데이타베이스를 느리게 함 -, 자동적으로 시작되지 않는다 (예를 들어, 스케쥴에 따라서 혹은 특정 사용자 발생이 아닌 트리거 (triger)에 응답해서).
사용자가 현재 무엇을 하는지에 상관 없이 자동적으로 시작하기에 적절하고, 사용자에 의해 비교적 눈에 띄지 않게 백그라운드에서 수행될 수 있고, 제한된 속도 및/또는 메모리를 갖는 제품들에 구현될 수 있도록 비교적 단순하고 효율적인, 데이타베이스의 크기를 조절하는 기술에 대한 요구가 있어 왔다.
본 발명은 데이타베이스의 크기를 자동 축소시키는 메카니즘을 제공한다. " 데이타베이스 자동 수축"이라고 일컬어지는, 이 메카니즘은 데이타베이스 파일의 크기를 자동 조절하기 위한 능력을 제공한다. 이 자동 수축 기술은 복수 사용자 환경에서 기능을 할 수 있다. 이 기술은 비교적 적은 프로세서 시간 및 메모리를 사용하고, 그러므로, 핸드핼드 디바이스들, 및/또는 모바일 데이타베이스 제품들과 같은, 제한된 메모리를 갖는 전자 디바이스들을 위해 특히 적절하게 한다. 일반적으로, 자동 수축 기술은, 모든 빈 혹은 비할당된 페이지들이 파일의 끝에 연속적으로 위치되도록 파일 내에서 페이지들을 이동한다. 그 다음에 빈 페이지들 및 버릴 페이지들은 절단된다. 그 다음에 절단된 페이지들은 데이타베이스 파일 시스템에 의해 사용될 수 있다. 데이타베이스 파일 시스템으로의 절단된 페이지들의 리턴은 파일 시스템 공간을 증가시킨다.
본 발명의 자동 수축 프로세스를 수행하기 위해서, 데이타베이스 파일은 파일의 최종 페이지에서 시작해서 트래버스되고, 파일의 첫 페이지로 진행된다. 각 페이지에 도달하면서, 비어 있으면 건너뜀으로 표시되고, 비어 있지 않으면 더러움으로 표시된다. 건너뛴 페이지들 및 더러운 페이지들의 합계는 파일의 전체 빈 페이지 수와 비교된다. 합계가 파일의 전체 빈 페이지 수보다 작으면, 트래버싱은 파일의 다음 페이지로 계속된다. 합계가 전체 빈 페이지 수보다 크거나 같으면, 더러운 페이지들의 내용은 트래버스되지 않은 파일의 빈 페이지들에 기록되고, 각 더러운 페이지 및 각 건너뛴 페이지는 비할당됨으로 표시된다. 그 다음에 비할당된 페이지들은 파일로부터 절단된다.
이 방법을 구현하는 시스템의 예는 페이지들, 컨트롤러, 할당 지시기, 및 절 단기를 포함하는 메모리 파일을 포함한다. 컨트롤러는 파일의 최종 페이지에서 파일의 트래버싱을 시작하고 파일의 첫 페이지로 진행한다. 각 도달된 페이지에서, 컨트롤러는 비어 있으면 건너뜀으로, 비어 있지 않으면 더러움으로 도달된 페이지를 표시한다. 컨트롤러는 건너뛴 페이지들 및 더러운 페이지들의 합계를 파일의 전체 빈 페이지 수와 비교한다. 합계가 전체 빈 페이지들의 수보다 작으면, 트래버싱 프로세스는 트래버싱 순서로 파일의 다음 페이지로 계속한다. 합계가 전체 빈 페이지들의 수보다 크거나 같으면, 더러운 페이지들의 내용은 트래버스되지 않은 파일의 빈 페이지들에 기록된다. 할당 지시기는 각 더러운 페이지 및 각 건너뛴 페이지를 비할당됨으로 표시한다. 그 다음에 절단기는 파일로부터 비할당된 페이지들을 절단한다.
본 발명의 특징들 및 잇점들은 첨부된 도면들과 연결해서 다음의 설명을 고려할 때 가장 잘 이해될 수 있다.
본 발명에 따라서 데이타베이스 자동 수축은 데이타베이스 파일의 크기를 자동 조절하는 능력을 제공한다. 일반적으로, 자동 수축 기술은, 모든 빈 페이지들이 파일의 끝에 연속적으로 위치되도록 파일 안에서 페이지들을 이동시킨다. 그 다음에 그 빈 페이지들은 절단된다. 절단된 페이지들은 데이타베이스 파일 시스템에 의해 사용이 가능하다. 데이타베이스 파일이 절단되었기 때문에, 파일 시스템에 리턴된 공간은 다른 응용 프로그램들을 위해 이제 사용 가능하다 (즉, 그것은 디스크 공간을 비운다)
도1은 9 페이지의 메모리를 포함하는 데이타베이스 파일의 도시이다. 도1은, 데이타베이스 자동 수축이 데이타베이스 파일에 갖는 영향의 예를 제공한다. 도1에 도시된 바와 같이, 페이지 2, 4, 6, 및 8은 비어 있고, 페이지 1,3,5,7,및 9는 비어 있지 않다 (검은 회색). 비어 있는, 비어 있지 않은 페이지들, 및 페이지들의 수의 도시된 구성은 한 예이다. 빈 페이지는 데이타베이스 사용자들에게는 관심이 없는 정보를 포함하는 페이지 - 즉, 데이타가 없는 페이지, 혹은 데이타베이스 관리 시스템에 의해 비할당된 페이지 - 이다. 그러므로, 빈 페이지는 다른 개체에 의해 (예를 들어, 다른 사용자) 버려지거나 사용될 수 있다. 비어 있지 않은 페이지는 데이타베이스 사용자(들)에게 관심 있는 내용을 포함하는 페이지이다. 도1에 도시된 파일은 비어 있는 4 페이지들 및 비어 있지 않은 5 페이지들을 포함한다. 도1의 파일에서 총 페이지 수는 9이지만, 단지 5 페이지들만에 관심이 있다. 비어 있는 4 페이지들을 버리는 것은 5 페이지로 파일의 크기를 줄일 수 있다.
한 실시예에서, 파일의 한 끝으로부터의 비어 있지 않은 페이지들은 파일의 다른 끝에 더 가까운 빈 페이지들로 복사된다. 예를 들어, 비어 있지 않은 페이지 7 및 9의 (파일의 우측 가까이) 내용은 빈 페이지들 2 및 4 (파일의 좌측에 더 가까이)로 이동될 수 있다. 그 결과로, 필요하지 않은 페이지들의 어떤 연속 블럭은 데이타베이스 파일 끝에 위치할 것이고, 파일은 절단될 수 있게 된다. 도2는 빈 페이지들에 기록될 페이지들로써 식별되는 페이지 7 및 9를 보이는 데이타베이스 파일의 설명이다. 파일의 한 쪽 끝으로부터 다른 쪽 끝으로 페이지들을 기록하기 이전에, 기록될 페이지들이 식별된다. 도2에서 도시된 바와 같이, 페이지 7 및 9는, 회색 빗금에 의해 표시된 빈 페이지들로 기록되는 페이지들로 식별된다. 일단 페이지 7 및 9가 식별되면, 그들은 파일의 다른 쪽 끝의 빈 페이지들로 기록된다. 페이지 7 및 9는 도2에서 점선 화살표들에 의해 표시된 페이지 2 및 4로 기록된다. 도2에서 도시된 바대로, 페이지 7은 페이지 4로 기록되고 페이지 9는 페이지 2로 기록된다. 이 패턴은 예이다. 예를 들어, 페이지 7은 페이지 2로 기록되고, 페이지 9는 페이지 4로 기록될 수 있다. 페이지들의 위치들이 관리되는 동안, 내용이 들어있는 실제 페이지에 상관없이 페이지 7 및 9의 내용이 검색 수거 가능하다. 페이지들의 위치들은 논리 ID들의 사용을 통해서 관리된다. 논리 ID들 및 논리 ID들을 사용한 페이지 관리는 아래에 더 상세하게 기술된다.
페이지 7 및 9는, 복사될 페이지들이 자리잡는 파일의 끝 (도2의 도면의 우측)에서 시작해서 다른 쪽 끝으로 파일의 뒤로 트래버스해서, 빈 페이지들로 복사될 페이지들로서 선택된다. 이 예에서, 프로세스는 페이지 9에서 시작하고, 페이지 1로 진행된다. 각 페이지에 도달되면서, 각 페이지가 비어 있는지의 여부가 결정된다. 페이지가 비어 있는지의 여부를 결정하는 것은, 페이지 헤더 (page header), 혹은 기타의 것을 분석하는 것과 같은, 임의의 적절한 방법들에 의해 성취될 수 있다. 트래버싱 동안, 각 페이지에 도달되면, 빈 페이지이면 건너뜀으로 표시되고, 비어 있지 않은 페이지이면 더러움으로 표시된다.
도3은, 페이지 6 및 8이 건너뜀으로 표시되고, 페이지 7 및 9가 더러움으로 표시됨을 도시하는 파일의 설명이다. 이 예에서, 페이지 9에서 트래버싱을 시작해 서 페이지 1로 진행하면서, 페이지 9는 비어 있지 않고 더러움으로 표시되고, 페이지 8은 비어 있고 건너뜀으로 표시되고, 페이지 7은 비어 있지 않고 더러움으로 표시되고, 페이지 6은 비어 있고 건너뜀으로 표시된다. 트래버싱 프로세스는 이 지점에서 정지하고, 페이지 7 및 9는 페이지 2 및 4에 기록된다. 한 실시예에서, 트래버싱 프로세스는 건너뛴 페이지들 및 더러운 페이지들의 합계가 파일의 빈 페이지들의 수와 같거나 클 때까지 진행한다. 이것은 수학적으로 다음 식으로 표현된다:
Figure 112004023353925-pat00001
각 페이지에 도달되면, 수식 (1)이 평가되고, 더러운 페이지들 및 건너뛴 페이지들의 합계가 파일의 빈 페이지들의 수보다 작으면, 트래버싱 프로세스는 트래버싱 순서에서 다음 페이지로 진행된다. 더러운 페이지들 및 건너뛴 페이지들의 합계가 파일의 빈 페이지들의 수보다 크거나 같으면, 트래버싱 프로세스는 정지하고, 더러운 페이지들은 트래버스되지 않은 파일의 부분에 포함된 빈 페이지들로 기록된다. 도3을 참조해서, 파일의 전체 빈 페이지들의 수는 4이다. 페이지 9에서 시작하면, 이 페이지는 비어 있지 않고 그러므로 더러움으로 표시된다. 합계는 이제 1이 되고, 이것은 4보다 작다. 그러므로 트래버싱은 페이지 8로 진행된다. 페이지 8은 비어 있고, 그러므로 건너뜀으로 표시된다. 합계는 이제 2가되고, 트래버싱은 페이지 7로 진행된다. 페이지 7은 비어 있지 않고, 그러므로 더러움으로 표시된다. 합계는 이제 3이 되고, 트래버싱은 이제 페이지 6으로 진행된다. 페이 지 6은 비어 있고, 그러므로 건너뜀으로 표시된다. 합계이 이제 4가 되고, 그러므로 트래버싱 프로세스는 정지된다. 이제 페이지 7 및 9의 내용은 트래버스되지 않은 파일 부분의 빈 페이지들에 기록된다. 페이지 1에서 5는 트래버스되지 않았다. 페이지 2 및 4는 트래버스되지 않은 파일의 부분의 빈 페이지들이다. 그러므로, 페이지 7 및 9는 페이지 2 및 4에 기록된다.
도4는 자동 수축 프로세스의 완료에서 데이타베이스 파일을 설명한다. 비어 있고 더러운 페이지들은 제거된다. 나머지 페이지들은 비어 있지 않다. 페이지 1, 3, 및 5는 자동 수축 프로세스의 시작 이전과 같은 내용을 포함한다. 이전에 빈 페이지들 2 및 4는 이제 파일의 다른 곳에 위치되었던 비어 있지 않은 페이지들로부터의 내용을 포함한다.
한 실시예에서, 다양한 컨트롤들이 자동 수축 프로세스의 구성 및 컨트롤 양태들을 위해 제공된다. 이러한 컨트롤들은, 예를 들어, 데이타베이스를 열 때, 임의의 적절한 시간에 제공될 수 있다. 이러한 컨트롤들은 빈 페이지 임계치, 최대 실행 시간 한계, 및 재시도 간격을 포함한다. 이러한 컨트롤들은 개별적으로 혹은 임의의 조합으로 사용될 수 있다.
빈 페이지 임계치는 파일의 전체 페이지의 퍼센티지로써 표현된 값이다. 빈 페이지 임계치는 자동 수축 프로세스를 시작하기 위해 사용될 수 있다. 예를 들어, 파일의 빈 페이지들의 퍼센티지는 빈 페이지 임계치와 비교될 수 있다. 파일의 빈 페이지들의 퍼센티지가 빈 페이지 임계치를 초과하면, 자동 수축 프로세스가 시작된다. 따라서, 빈 페이지 임계치가 0 으로 세트되면, 자동 수축 프로세스 는 첫 번째 빈 페이지가 존재할 때 시작될 것이다. 빈 페이지 임계치가 100%로 세트되면, 자동 수축 프로세스는 시작할 수가 없을 것이다 (전체 데이타베이스가 빈 페이지들의 퍼센트지가 100이 되기 위해서 데이타를 전혀 포함해서는 안되기 때문).
최대 실행 시한은 자동 수축 프로세스가 실행될 수 있는 시간을 제한한다. 한 실시예에서, 최대 실행 시간 한계는 밀리세컨드 (msec)로 표현된다. 자동 수축 프로세스의 실행 시간을 제한함으로써, 시스템의 CPU 사이클 수가 절약될 수 있다. 무한대로 최대 실행 시간 한계를 세트하는 것은 자동 수축 프로세스가 완료될 때까지 실행하되도록 하고, 그러므로 데이타베이스 파일로부터 모든 빈 페이지들을 제거하도록 한다. 최대 실행 시간 한계가 0 과 무한대 사이의 값에 세트되고, 자동 수축 프로세스가 정해진 시간보다 오래 실행되었으면, 자동 수축 프로세스는, 실행 동안에 제거할 수 있었던 빈 페이지들의 수만큼 파일을 수축할 것이고 그 다음에 실행 중지한다. 그러므로, 최대 실행 시간 한계는, 시스템을 오랜 시간 묶어 놓지 않고, 데이타베이스 파일의 크기를 점차적으로 줄일 수 있는 능력을 제공한다.
재시도 간격은, 자동 수축 프로세스가 수행된 후에 그 프로세스를 새로 시작할 수 있기 전까지 (즉, 재시작) 경과한 시간 값이다. 재시도 간격은 자동 수축 프로세스를 다시 시작하기 전에 기다릴 시간이다. 예를 들어, 재시도 간격은, 빈 페이지 임계치를 초과하는 빈 페이지 퍼센티지를 갖는 데이타베이스를 수축시키기 위해 얼마나 자주 시도하는지를 설정하기 위해 사용될 수 있다. 재시도 간격 시간은, 최대 실행 시간 한계가 제한되지 않으면 (예를 들어, 무한대로 세트됨), 발효 되지 않을 것이다. 최대 실행 시간이 제한되지 않을 때, 자동 수축 프로세스는 완료되기까지 실행되고, 파일로부터 모든 빈 페이지들을 제거해서, 자동 수축을 재시도하려는 필요를 없앨 것이다.
다음은 어떻게 세 개의 컨트롤들 (빈 페이지 임계치, 최대 실행 시간 한계, 및 재시도 간격)이 사용될 수 있는지의 예이다. 트랜잭션 (transaction)이 수행되고 디스크에 기록된 후에, 빈 페이지들의 퍼센티지가 사용자 제공된 빈 페이지 임계치를 초과하는지의 여부가 결정된다. 빈 페이지 임계치가 초과되면, 자동 수축 프로세스는 최대 실행 시간 한계 동안 실행된다. 자동 수축 프로세스가, 최대 실행 시간 한계를 초과하고 빈 페이지들의 수가 아직 빈 페이지 임계치를 초과하기 때문에 종료한다면, 자동 수축 프로세스는 자동 수축 재시도 시간 간격이 경과할 때 다시 데이타베이스 파일을 수축하기 위한 시도를 할 것이다.
위에 기술된 바와 같이, 페이지들의 위치들은 빈 페이지들에 비어 있지 않은 페이지들을 기록할 때 관리된다. 전형적 데이타베이스 제품들은 파일 내의 페이지들의 물리적 주소들을 표현하는 페이지 식별자들을 사용한다. 예를 들어, 전형적 데이타베이스 제품들은 데이타베이스 파일의 시작으로부터 페이지의 논리 오프셋 (offset)에 의해 각 페이지를 식별한다. 그러나, 이 접근 방법은, 페이지로의 각각의 참조가 페이지의 새 위치를 반영하기 위해 업데이트되어야 하기 때문에, 데이타베이스 파일의 한 장소에서 다른 장소로 페이지들을 이동하는 것을 어렵게 한다.
그러므로, 본 발명의 한 실시예에서, 데이타베이스 파일의 페이지들은 논리 페이지 식별자들 (IDs)에 의해 식별된다. 데이타베이스 내에서, 페이지들은 논 리 ID들을 사용해서 액세스되고 트랙킹된다. 논리 페이지 ID는 물리 페이지 주소로 맵핑된다 - 즉, 파일에서 페이지의 오프셋. 이 맵핑은 임의의 적절한 방법들에 의해 성취될 수 있다. 한 실시예에서, 논리 페이지 ID들의 물리 주소들로 맵핑은 맵핑 표들을 통해서 성취된다. 도5는 논리 ID들(54)를 물리 주소들(56)로 맵핑하는 맵핑 표(500)의 예를 설명한다. 맵핑 표(500)는 페이지들의 세트로 데이타베이스 파일에 저장될 수 있다. 각 맵핑 표(500)는, 논리 페이지 ID(54)를 메모리의 각 페이지의 물리 페이지 주소(56) (한 위치로서 또한 언급되는)으로 맵핑하는 엔트리들(52)을 포함한다. 페이지가 액세스될 때, 페이지는 그 자신의 논리 주소에 의해 식별되고, 맵핑 표(500)는 논리 주소를 물리 주소로 변환하기 위해 사용된다. 이 프로세스는, 가상 주소 시스템이 가상 주소들을 물리 주소들로 맵핑하는 주소 변환 표들을 사용하는 방식과 유사하다. 페이지의 물리적 위치가 변화될 때 (즉, 데이타가 데이타베이스로 기록될 때), 맵핑 표(500)의 대응하는 엔트리는 업데이트된다. 그 엔트리에 대해서, 이동되는 페이지의 논리 페이지 ID(54)는 변화하지 않지만, 그 페이지가 이동되는 물리 주소는 맵핑 표(500)의 엔트리(52)의 물리 위치 부분(56)으로 들어가게 된다. 논리 페이지 ID들이 페이지들을 식별하기 위해 사용될 때, 데이타베이스 파일의 한 장소에서 다른 장소로 페이지를 이동하는 관리 부담은 감소되고, 그러므로 논리 페이지 ID들의 사용은 자동 수축 프로세스를 지원하고, 이것은 종종 파일의 끝으로부터 시작으로 다수의 페이지들을 이동하는 것과 관련된다.
위의 예를 참조해서 (도3 참조), 페이지 7의 내용이 페이지 4에 기록될 때, 그러한 내용과 연관된 논리 ID는 변하지 않는다. 그 논리 ID와 연관된 물리적 위치는 새 위치를 반영하기 위해 업데이트된다. 그러므로, 페이지 7의 내용과 연관된 논리 페이지 ID는 동일하게 남아 있고, 논리 페이지 ID와 연관된 물리 주소는 페이지 7의 위치로부터 페이지 4의 위치로 변한다. 데이타베이스 시스템은 논리 페이지 ID들에 의해 페이지들을 액세스한다. 한 실시예에서, 논리 페이지 ID는, 논리 ID가 참조하는 페이지의 타입을 표시하기 위해 특정 값들이 지정된다. 예를 들어, 특정 범위의 논리 페이지 ID들은 맵핑 표 페이지들을 참조할 수 있고, 또 다른 범위는 데이타 페이지들을 참조할 수 있다 (즉, 인덱스들이나 레코드들과 같은 데이타베이스 컨텍스트가 포함된 페이지들).
위에 기술된 바대로, 본 발명의 실시예에 따른 자동 수축 프로세스는 비어 있지 않은 페이지들의 내용을 빈 페이지들로 기록하는 것과 관련있다. 이 프로세스 동안, 어떤 페이지들은 사용 해제 (free)될 것이고, 다른 것들은 사용되게 될 것이다. 할당 지시기는 페이지들의 할당 상태를 제공하기 위해 사용될 수 있다. 할당 지시기는 논리 ID들 및 물리 페이지들의 상태 (이용 가능 혹은 불가능, 사용 해제됨 혹은 사용중)를 표시한다. 상태를 표시하는 임의의 적절한 방법들이 사용될 수 있다. 한 실시예에서, 비트맵은 논리 ID들의 할당 상태를 표시하기 위해 사용된다. 논리 ID 할당 비트맵은 맵핑 표에서 (즉, 맵핑 표(500)) 각 엔트리에 대해 1 비트를 포함한다. 한 실시예에서, 1 로 세트된 비트는 대응하는 엔트리가 할당되었음 (사용 불가능)을 표시한다. 0 으로 세트된 비트는 대응하는 엔트리가 사용 해제 (사용 가능)되었음을 표시한다. 자동 수축 프로세스 동안, 사용 가능한 페이지는 0 인 비트맵 값을 찾음으로써 발견될 수 있다. 발견된 페이지가 이제 할당됨을 표시하기 위해서, 대응 비트맵 엔트리가 1 로 변화한다. 더러운 페이지의 내용이 빈 페이지에 기록될 때, 더러운 페이지의 물리 ID는 할당됨으로 표시되고 (현 재 사용됨 혹은 사용 불가능으로 또한 참조됨), 이전의 빈 페이지의 ID는 비할당됨으로 표시된다 (사용 해제됨 혹은 사용 가능으로 또한 참조됨).
한 실시예에서, 논리 ID 할당 비트맵은 페이지들의 세트로 데이타베이스 파일에 저장된다. 다른 실시예에서, 비트맵은 데이타베이스가 열렸을 때 초기화된다. 초기화는 맵핑 표에 모든 페이지 엔트리들을 열거함으로써 성취될 수 있다. 페이지 엔트리가 페이지의 유효한 물리 주소를 포함하면, 그 페이지 엔트리에 대응하는 페이지 ID는 할당됨으로 표시된다. 모든 엔트리들이 스캔되면, 비트맵은 이제 페이지 ID들의 현재 할당 상태를 표시한다.
이 할당 비트맵은 데이타베이스 파일에 저장될 수 있다. 예를 들어, 최대 데이타베이스 파일 크기는 232 bytes (4 Gbytes) 이고, 데이타베이스 페이지 크기는 4096 bytes 이고, 이것은 최대 220 논리 페이지 ID들로 귀결한다. 그러므로 논리 페이지 ID 할당 비트맵은 131,072 bytes를 사용해서 구현될 수 있다. 할당 비트맵을 사용하는 것은 관리 페이지들을 수정하거나 읽지 않고 논리 페이지 ID들이 사용 해제 및/또는 할당되게 한다. 이것은 동시에 데이타베이스에서 페이지 ID들을 할당하고 사용 해제하기 위해 복수의 트랜잭션을 허용해서 동시성을 향상시킨다. 비트맵과 페이지 엔트리들이 데이타베이스 파일 안에 모두 포함되어 있기 때문에, 할 당 비트맵을 사용하는 것은 또한 논리 페이지 ID들을 할당하고 사용 해제하기 위한 견고한 메카니즘을 제공한다.
비트맵이 메모리로 읽히거나, 혹은 페이지 엔트리들을 스캐닝 (scanning)해서 계산되면, 페이지들을 할당하고 사용 해제하는 것은, 할당될/사용 해제될 페이지에 대응하는 비트에 도달할 때까지 비트맵에서 비트들의 수를 카운트함으로써 성취될 수 있다. 논리 페이지 ID를 사용 해제시키기 위해서, 비트는 단순히 1 에서 0 으로 변화된다. 논리 페이지 ID를 할당하기 위해서, 비트는 단순히 0 에서 1 로 변화된다.
논리 페이지 ID들을 할당하고 사용 해제하기 위해서 위에 기술된 동일 비트맵 타입 메카니즘은 또한 물리 페이지 주소들을 할당하고 사용 해제하기 위해서 적용된다. 이 경우, 비트맵은 데이타베이스 파일에서 각 물리 페이지 주소 에 대해서 1 비트를 갖는다. 한 실시예에서, 1 로 세트된 비트는 물리 페이지 주소가 할당됨을 표시한다. 0 으로 세트된 비트는 물리 페이지 주소가 사용 해제됨을 표시한다. 물리 페이지 주소들은 더러운 페이지가 빈 페이지에 기록될 때 할당된다. 본 명세서에서 기술된 대로, 메모리 크기를 조절하는 것은 비어 있는/사용되지 않은 페이지의 물리 페이지 주소를 효과적으로 발견하는 능력을 제공한다. 한 실시예에서, 이 물리 주소 할당 비트맵은 데이타베이스 파일에 저장된다. 다른 실시예에서, 물리 주소 할당 비트맵은 데이타베이스가 데이타베이스 페이지들을 스캐닝함으로써 열릴 때 계산된다. 비트맵이 계산되면, 논리 페이지 ID 비트맵이 동일 페이지들의 세트가 스캔되기 때문에 계산되는 동일한 시간에 그것은 계산될 수 있다. 물리 페이지 주소를 사용 해제하기 위한 기술은 위에 기술된 대로 논리 페이지 ID를 사용 해제하는 것과 동일하다. 물리 페이지 주소를 할당하기 위한 기술은 논리 페이지 ID를 할당하는 것과 거의 동일하다. 다른 점은, 현재의 물리 페이지 주소가 사용 해제되지 않았다면, 데이타베이스 파일은 증대되고, 데이타베이스 파일에 첨부된 새 물리 페이지 주소들은 주소 비트맵에서 사용 해제된 물리 페이지 주소들로 표시된다.
도6은 자동 수축을 수행하는 프로세스의 흐름도의 예이다. 이 파일의 전체 페이지 수는 스텝 60에서 결정된다. 파일의 빈 페이지들의 수는 스텝 62에서 결정된다. 숫자는 임의의 적절한 방법들로 결정될 수 있다. 파일에서 전체 페이지 수와 빈 페이지들의 수를 적절하게 결정하는 예들은 파일을 스캐닝하는 단계 및/또는 할당 지시기를 스캐닝하는 단계를 (예를 들어, 비트 맵들) 포함한다. 또 다른 실시예에서, 전체 페이지 수 및 빈 페이지들의 수는 데이타베이스 시스템에 의해 프로세스에 제공된다. 전체 페이지 수에 대해 빈 페이지 수의 퍼센티지는 스텝 64에서 결정된다. 이 퍼센트지를 나타내는 임의의 적절한 값은 사용될 수 있고, 예를 들어, 그 값은 전체 페이지 수에 의해 빈 페이지들의 수를 나누고, 이 몫을 100으로 곱해서 결정될 수 있다. 수학적으로 이것은 퍼센트 값인 PCV로 표현될 수 있다:
Figure 112004023353925-pat00002
스텝(66)에서, PCV는 빈 페이지 임계치보다 크거나 동일한지의 여부가 결정된다. 스텝(66)은 선택적이다 - 즉, 빈 페이지 임계치는 세트되지 않았을 수 있다. 빈 페이지 임계치가 세트되지 않았다면, 프로세스는 스텝(64)로부터 스텝(68)로 바로 진행한다. 빈 페이지 임계치가 세트되고, PCV가 빈 페이지 임계치보다 작으면, 프로세스는 스텝(74)에서 재시도 간격 값보다 크거나 동일한 시간만큼 기다린 후에 스텝(60)으로 진행된다. 재시도 간격 값이 0 으로 세트되면, 프로세스는 스텝(60)으로 바로 진행된다. 재시도 간격 값이 무한대로 세트되면, 프로세스는 스텝(60)으로 진행되지 않는다. 도6에 도시된 바와 같이 스텝(60) 및 (62)의 순서는 예일 뿐이고, 임의의 순서가 적절함이 이해될 것이다. 부언하면, 스텝(60)은 스텝(62) 이전에 일어날 수 있고, 스텝(62)은 스텝(60) 이전에 일어날 수 있고, 혹은 스텝(60) 및 (62)는 동시에 일어날 수도 있다.
스텝(68)에서, 트래버싱의 시작점은 파일의 최종 페이지에 위치된다. 스텝(68)이 파일 끝의 마지막 페이지로 진행되는 것을 도시하지만, 트래버싱은 파일의 임의의 끝에서 시작할 수 있다. 예를 들어, 도3을 참조하면, 트래버싱은 페이지 9에서 시작하고, 페이지 1로 진행되고, 혹은 트래버싱은 페이지 1에서 시작되고 페이지 9로 진행될 수 있다. 제1 트래버싱 예에서 (우측에서 좌측으로) 빈 페이지들은 우측에 위치되고, 제2 트래버싱 예에서 (좌측에서 우측으로) 빈 페이지들은 좌측에 위치된다. 스텝(70)에서, 트래버싱 프로세스는 파일의 한 쪽 끝의 페이지에서 시작한다. 또한 스텝(70)에서, 각 페이지에 도달하면서, 빈 페이지이면 건너뜀으로 표시되고, 빈 페이지가 아니면 더러움으로 표시된다. 도달된 페이지가 더러움 혹은 건너뜀으로 표시된 후에, 건너뛴 페이지들과 더러운 페이지들의 합계는 스텝(78)의 빈 페이지들의 수에 비교된다. 이 합계가 빈 페이지들의 수보다 작으면, 트래버싱은 스텝(76)의 트래버싱의 다음 페이지로 진행하고, 트래버싱 프로세스는 스텝(70)에서 시작한다. 더러운 페이지들 및 건너뛴 페이지들의 수의 합계는 빈 페이지들의 수보다 크거나 동일하면, 더러운 페이지들은 스텝(80)에서 빈 페이지들에 씌여진다. 더러운 페이지들은 트래버스되지 않은 파일의 부분의 빈 페이지들로 씌여진다. 더러운 페이지들 및 건너뛴 페이지들은 스텝(82)에서 비할당됨으로 표시된다. 위에 기술된 대로, 할당 상태는 비트 맵에 의해 얻어질 수 있다. 비할당된 페이지들은 (더러운 및 건너뛴 페이지들) 스텝(82)에서 절단된다. 더러운 및 건너뛴 페이지들의 수는 스텝(86)에서 리셋 (reset)되고, 그 다음 번에 스텝(78)이 수행되고, 예를 들어, 건너뛴 페이지들 및 더러운 페이지들의 수를 세기 위해 사용되는 카운터들은 아무런 남아있는 값들을 갖지 않는다.
도6에서 도시된 프로세스 동안의 임의의 시간에, 최대 실행 시간이 지났으면 (스텝(72)), 프로세스는 스텝(80)으로 점프하고, 프로세스는 위에 기술된 대로 진행된다. 그러므로, 이 자동 수축 프로세스는 CPU 사이클들을 절약하면서 점진적으로 데이타베이스 파일을 수축하기 위한 능력을 제공한다.
의사 코드 (pseudo code)로 표현된, 데이타베이스에서 파일 크기를 조절하기 위한 프로세스의 예가 아래 표1에 제공된다. 다음의 의사 코드는 위에 설명된 기술들을 구현하는 몇 개의 메카니즘들을 설명한다. 의사 코드는, 더러운 페이지들을 기록하고 비어 있고 더러운 페이지들을 절단하기 위해, 얼마나 많은 페이지들이 파일의 다른 끝으로 빈 페이지들 및 더러운 페이지들을 이동시키기 위해 파일의 한 쪽 끝으로 이동되어야 함을 결정하기 위해, 데이타베이스에서 빈 페이지들 및 비어 있지 않은 페이지들을 트랙킹 (tracking)하는 메카니즘을 설명한다.
Figure 112004023353925-pat00003
Figure 112004023353925-pat00004
Figure 112004023353925-pat00005
Figure 112004023353925-pat00006
도7은 데이타베이스 파일 크기를 조절하는 시스템의 예의 블럭도이다. 한 실시예에서, 시스템은 데이타베이스의 메모리 크기를 조절하기 위해 사용되고, 그런 컨텍스트로 기술된다. 시스템은 시스템 메모리(96), 할당 지시기(94), 컨트롤러(92), 및 절단기(90)를 포함한다. 시스템 메모리(96)는 파일들로 구성된 메모리 페이지들을 포함한다. 시스템 메모리(96)는, 반도체 메모리, 자기 메모리 (예를 들어, 디스크), 광 메모리, 혹은 그들의 조합과 같은, 임의의 적절한 타입의 메모리를 포함할 수 있다. 전형적으로 및 선호적으로, 시스템 메모리(96)는 지속적으로 데이타를 저장하기 위한 그 능력을 포함한 지속적 메모리를 포함한다. 그러므로, 정상 동작 조건들 하에서, 지속 메모리에 기록된 데이타는 그 데이타가 구체적 으로 제거 및/또는 재기록될 때까지 이용 가능하다.
할당 지시기(94)는 위에 기술된 대로 논리 ID들의 할당 상태 및 더러운 및 건너뛴 페이지들의 물리 주소들을 표시하는 기능들을 수행한다. 할당 지시기는 도달된 페이지가 비어 있으면 건너뜀으로써 (파일의 트래버싱 동안에) 도달된 페이지를 표시한다. 할당 지시기는 도달된 페이지가 비어 있지 않으면 더러움으로써 도달된 페이지를 표시한다. 할당 지시기(94)는 또한, 위에 기술된 대로, 절단 전에 비할당됨으로써 각 더러운 페이지 및 각 건너뛴 페이지를 표시한다. 한 실시예에서, 페이지 할당 지시기(94)는 위에 기술된 대로 할당 상태를 지시하기 위한 비트 맵을 포함한다.
컨트롤러(92)는 위에 기술된 대로 메모리 크기를 조절하는 단계와 연계된 다수의 기능들을 수행한다. 컨트롤러(92)는 파일의 한 쪽 끝의 마지막 페이지에서 트래버싱 프로세스를 시작하고, 파일의 다른 쪽 끝의 처음 페이지로 트래버싱 프로세스를 계속한다. 컨트롤러(92)는, 건너뛴 페이지들 및 더러운 페이지들의 합이 파일의 전체 빈 페이지들의 수보다 크거나 같은지 여부, 및 그 합이 파일에서 전체 빈 페이지들의 수보다 작은지의 여부를 결정하고, 트래버싱 순서로 파일의 다음 페이지에서 트래버싱 프로세스를 계속한다. 합이 전체 빈 페이지 수 이상이면, 컨트롤러는 트래버스되지 않은 파일의 빈 페이지들에 더러운 페이지들의 내용들을 기록한다. 절단기(90)는, 위에 기술된 대로, 파일로부터 비할당된 페이지들을 절단한다.
<적합한 컴퓨팅 시스템 환경의 개관>
도8은 메모리 크기를 조절하는 방법 및 시스템이 구현될 수 있는 적절한 컴퓨팅 시스템 환경(100)의 예를 도시한다. 컴퓨팅 시스템 환경(100)은 적합한 컴퓨팅 환경의 한 예일 뿐이고 동적으로 및 개별적으로 디스플래이 소자들을 컨트롤하는 방법 및 시스템의 사용 혹은 기능성의 범위에 대한 어떤 제한을 제안하기 위해 의도되지 않는다. 컴퓨팅 시스템 환경(100)은 동작 환경(100)의 예 내에 설명된 어느 하나의 구성 요소나 혹은 구성 요소들의 조합에 관련해서 어떤 의존성이나 요구사항도 갖지 않는 것으로 해석되어야 한다.
메모리 크기를 조절하기 위한 방법 및 시스템은 다수의 기타 일반 목적 혹은 특수 목적 컴퓨팅 시스템 환경들 혹은 구성들과 함께 동작한다. 동적으로 및 개별적으로 디스플래이 소자들을 컨트롤하기 위한 방법 및 시스템과 함께 사용하기 적합할 수 있는 잘 알려진 컴퓨팅 시스템들, 환경들, 및/또는 구성들의 예들은 다음의 것들을, 하지만 거기에 국한되지 않고, 포함한다: 퍼스널 컴퓨터들, 서버 컴퓨터들, 핸드핼드나 랩탑 디바이스들, 태블릿 디바이스들, 멀티프로세서 시스템들, 마이크로프로세서 기반의 시스템들, 셋탑 박스들, 프로그램할 수 있는 소비자 전자 제품들, 통신망 PC들, 미니 컴퓨터들, 메인 프레임 컴퓨터들, 임의의 위에서 언급한 시스템들이나 디바이스들과 기타 등등을 포함하는 분산 컴퓨팅 환경들.
메모리 크기를 조절하는 방법 및 시스템은 컴퓨터에 의해 실행되는, 프로그램 모듈들과 같은, 컴퓨터 실행 가능한 명령들의 일반적 컨텍스트로 기술될 수 있다 . 일반적으로, 프로그램 모듈들은 특정 작업들을 수행하거나 특정한 추상 데이타 타입들을 구현하는, 루틴들, 프로그램들, 오브젝트들, 구성 요소들, 데이타 구 조들, 기타 등등을 포함한다. 메모리 크기를 조절하는 방법 및 시스템은 통신망이나 혹은 기타 데이타 전송 매체를 통해서 연결되는 원격 처리 디바이스들에 의해 작업들이 수행되는 분산 컴퓨팅 환경들에서 또한 실시될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈들 기타 데이타는 메모리 저장 디바이스들을 포함하는 구내 그리고/혹은 원격 컴퓨터 저장 매체 내에 위치될 수 있다.
도8을 참조하면, 메모리 크기를 조절하는 방법 및 시스템을 구현하는 시스템의 예는 컴퓨터(110)의 형태로 일반 목적 컴퓨팅 디바이스를 포함한다. 컴퓨터(110)의 구성 요소들은 처리 장치(120), 시스템 메모리(130), 그리고 시스템 메모리를 포함하는 다양한 시스템 구성 요소들을 처리 장치(120)로 접속하는 시스템 버스(121)를, 그러나 거기에 국한되지 않고, 포함할 수 있다. 시스템 버스(121)는 메모리 버스나 메모리 컨트롤러, 주변 버스, 그리고 다양한 버스 구조들 중 임의의 것을 사용하는 로컬 버스를 포함하는 몇 가지 타입들의 버스 구조들 중의 어느 것일 수 있다. 예를 들어서, 그러나 거기에 국한되지 않고, 그러한 구조들은 산업 표준 구조 (Industry Standard Architecture, 이하 ISA) 버스, 마이크로 채널 구조 (Micro Channel Architecture, 이하 MCA) 버스, 보강된 ISA 버스 (Enhanced ISA, 이하 EISA), 비디오 전자 표준 학회 (Video Electronics Standard Association, 이하 VESA) 로컬 버스, 메자닌 버스라고도 알려진 주변 요소 상호 접속 (Peripheral Component Interconnect, 이하 PCI) 버스를 포함한다.
컴퓨터(110)는 다양한 컴퓨터 판독 가능한 매체들을 전형적으로 포함한다. 컴퓨터 판독 가능한 매체는 컴퓨터(110)에 의해 액세스할 수 있고 휘발적 및 비휘 발적 매체, 분리적 및 비분리적 매체를 포함하는 임의의 이용 가능한 매체일 수 있다. 예를 들어, 컴퓨터 판독 가능한 매체는 컴퓨터 저장 매체와 통신 매체를, 하지만 여기에 국한되지 않고, 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독 가능한 명령들, 데이타 구조들, 프로그램 모듈들 혹은 기타 데이타 같은 정보 저장을 위한 임의의 방법 혹은 기술로 구현된 휘발적과 비휘발적, 분리적과 비분리적 매체를 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래쉬 메모리나 기타의 메모리 기술, CD-ROM, 디지탈 다용도 디스크들 (Digital Versatile Disk, 이하 DVD) 혹은 기타의 광 디스크 저장 디바이스, 마그네틱 카세트들, 마그네틱 테입, 마그네틱 디스크 저장 디바이스나 기타 마그네틱 저장 디바이스들, 혹은 원하는 정보를 저장하기 위해 사용될 수 있고 컴퓨터(110)에 의해 액세스 가능한 임의의 기타 매체들을, 하지만 여기에 국한되지 않고, 포함한다. 통신 매체는 전형적으로 컴퓨터 판독 가능한 명령들, 데이타 구조들, 프로그램 모듈이나 혹은 캐리어 웨이브나 다른 운송 메카니즘 같은 변조된 데이타 신호 내의 기타의 데이타를 구현하고 임의의 정보 전달 매체를 포함한다. "변조된 데이타 신호" 용어는 하나 이상의 자신의 특성 세트를 갖고 있거나 신호 상에서 정보를 인코딩하는 방식에서 변환된 신호를 의미한다. 예를 들어, 통신 매체는 유선 통신망이나 직접 유선 연결 같은 유선 매체와, 그리고 음향, RF, 적외선, 그리고 기타 무선 매체들 같은 무선 매체를, 하지만 여기에 국한되지 않고, 포함한다. 위의 것들 중의 임의의 조합들은 컴퓨터 판독 가능한 매체의 범위 내에서 또한 포함되어져야 한다.
시스템 메모리(130)는 읽기용 메모리 (Read-Only Memory, 이하 ROM)(131)과 랜덤 액세스 메모리 (Random Access Memory, 이하 RAM)(132) 같은 휘발적 그리고/혹은 비휘발적 메모리 형태로 컴퓨터 저장 매체를 포함한다. 스타트업하는 동안 같은 때, 컴퓨터(110) 내에서 소자들 사이의 정보를 전달하는 것을 돕는 기본 루틴들을 포함하는 기본 입출력 시스템(BIOS)(133)은 전형적으로 ROM(131)에 저장된다. RAM(132)는 전형적으로 당장 액세스 가능하고 그리고/혹은 처리 장치(120)에 의해서 현재 동작되는 데이타 그리고/혹은 프로그램 모듈들을 포함한다. 예를 들어, 도8은 운영 체제(134), 응용 프로그램들(135), 기타 프로그램 모듈들(136), 그리고 프로그램 데이타(137)를, 하지만 여기에 국한되지 않고, 설명한다.
컴퓨터(110)는 기타의 분리적/비분리적, 휘발적/비휘발적 컴퓨터 저장 매체를 또한 포함할 수 있다. 예를 들어, 도8은 비분리적, 비휘발적 마그네틱 매체에 읽고 쓰기를 하는 하드디스크 드라이브(141), 분리적, 비휘발적 마그네틱 디스크(152)에 읽고 쓰는 마그네틱 디스크 드라이브(151), CD ROM, CDRW 또는 기타 광 매체 같은 분리적, 비휘발적 광 디스크(156)에 읽고 쓰는 광 디스크 드라이브(155)를 설명한다. 운영 환경 실 예에서 사용될 수 있는 기타의 분리적/비분리적, 휘발적/비휘발적 컴퓨터 저장 매체는 마그네틱 테입 카세트들, 플래쉬 메모리 카드들, 디지탈 다용도 디스크(DVD)들, 디지탈 비디오 테입들, 반도체 RAM, 반도체 ROM, 기타 등등, 하지만 여기에 국한하지 않고, 포함한다. 하드 디스크 드라이브(141)는 전형적으로 인터페이스(140) 같은 비분리적 메모리 인터페이스를 통해 시스템 버스(121)에 접속되고, 마그네틱 디스크 드라이브(151)와 광 디스크 드라이브(155)는 전형적으로, 인터페이스(150)같은, 분리적 메모리 인터페이스에 의 해 시스템 버스(121)로 접속이 된다.
위에서 논의하고 도8에서도 설명된, 드라이브들과 그와 연관한 컴퓨터 저장 매체는 컴퓨터(110)에게 컴퓨터 판독 가능한 명령들, 데이타 구조들, 프로그램 모듈과 기타의 데이타의 저장을 제공한다. 도8에서, 예를 들어, 하드디스크 드라이브(141)는 운영 체제(144), 응용 프로그램들(145), 기타 프로그램 모듈들(146), 그리고 프로그램 데이타(147)를 저장하는 것으로 설명된다. 이러한 구성 요소들은 운영 체제(134), 응용 프로그램들(135), 기타 프로그램 모듈들(136), 그리고 프로그램 데이타(137)들과 동일하거나 상이할 수 있다는 점에 주목한다. 운영 체제(144), 응용 프로그램들(145), 기타 프로그램 모듈들(146), 그리고 프로그램 데이타(147)들은 최소한 그들이 다른 복사본들임을 설명하기 위해 본 명세서에서 다른 숫자들이 부여된 것이다. 사용자는 키보드(162)와 일반적으로 마우스, 트랙볼, 혹은 터치패드라고 일컬어지는 포인팅 디바이스(161)와 같은 입력 디바이스들을 통해 컴퓨터(110)에 명령들과 정보를 입력 할 수 있다. 기타의 입력 디바이스들로는 (도시 안됨) 조이스틱, 게임 패드, 위성 접시, 스캐너, 기타 등등을 포함한다. 이것들과 기타의 입력 디바이스들은 시스템 버스(121)와 연결된 사용자 입력 인터페이스(160)를 통해 처리 장치(120)로 종종 접속되지만, 병렬 포트, 게임 포트나 범용 직렬 버스 (Universal Serial Bus, 이하 USB)와 같은 기타의 인터페이스와버스 구조들에 의해 접속될 수도 있다. 모니터(191)이나 혹은 기타 타입의 디스플레이 디바이스는, 비디오 인터페이스(190) 같은 인터페이스를 통해 시스템 버스(121)에 또한 접속될 수 있다. 모니터에 추가해서, 컴퓨터들은, 출력 주변 인 터페이스(195)를 통해 연결될 수 있는, 스피커들(197) 및 프린터(196)와 같은 기타 주변 출력 디바이스들을 또한 포함할 수 있다.
컴퓨터(110)는, 원격 컴퓨터(180)와 같은, 하나 이상의 원격 컴퓨터들에 논리적 접속들을 사용한 통신망 환경에서 동작할 수 있다. 원격 컴퓨터(180)는 퍼스널 컴퓨터, 핸드 핼드 디바이스, 서버, 라우터, 통신망 PC, 피어 디바이스, 혹은 기타의 공용 통신망 노드일 수 있고, 단지 메모리 저장 디바이스(181)만이 도8에 도시되었지만, 컴퓨터(110)에 관련된 위에서 서술된 다수의 또는 모든 소자들을 전형적으로 포함할 수 있다. 도시된 논리 접속들은 구내정보통신망(Local Area Network, 이하 LAN)(171)과 광역정보통신망(Wide Area Network, 이하 WAN)(173)을 포함하지만, 기타의 통신망들도 또한 포함할 수 있다. 그러한 통신망 환경들은 사무실들, 사업체 컴퓨터 통신망들, 인트라넷들 그리고 인터넷에서 보편적이다.
LAN 통신망 환경에서 사용될 때, 컴퓨터(110)는 통신망 인터페이스나 어뎁터(170)를 통해서 LAN(171)에 접속된다. WAN 통신망 환경에서 사용될 때, 컴퓨터(110)는 전형적으로, 인터넷 같은, WAN(173) 상에서 통신을 개통하는 모뎀(172)나 기타의 수단을 포함한다. 내장 혹은 외장일 수 있는 모뎀(172)은 사용자 입력 인터페이스(160) 혹은 기타의 적절한 메카니즘을 통해서 시스템 버스(121)에 접속될 수 있다. 통신망 환경에서, 컴퓨터(110)에 관련되어 도시된 프로그램 모듈들이나 혹은 그들의 일부는 원격 메모리 저장 디바이스에 저장 될 수 있다. 예를 들어, 하지만 거기에 국한되지 않고, 도8은 메모리 디바이스(181)에 상주하는 원격 응용 프로그램들(185)을 설명한다. 도시된 통신망 연결들이 예들일 뿐이고 컴퓨터들 간의 통신 선을 개통하는 기타의 방법들도 사용되어 질 수 있다는 점이 이해될 수 있을 것이다.
다양한 분산 컴퓨팅 프래임워크들이 개인 컴퓨팅과 인터넷의 결합으로 개발되어지고 있다. 개인 및 기업 사용자들은 똑같이, 컴퓨팅 액티버티들 (activities)을 점차적으로 웹 브라우져 혹은 통신망 기반으로 만드는, 응용 프로그램들 및 컴퓨팅 디바이스들을 위한 무리없이 상호 동작 가능하고 웹이 가능한 인터페이스가 제공된다.
예를 들어, 마이크로소프트사의 .NET 플랫폼은 서버들, 웹 기반 데이타 저장과 같은, 빌딩블럭 (building-block) 서비스들, 및 다운로드할 수 있는 디바이스 소프트웨어를 포함한다. 일반적으로 말해서, .NET 플랫폼은 (1) 전 범위의 컴퓨팅 디바이스들을 함께 동작하게 만들고 사용자 정보가 자동으로 업데이트되고 전체를 동기화시키는 능력, (2) HTML 대신에 XML의 더 많은 사용에 의해 가능하게 된, 웹 사이트들을 위한 증대된 인터랙션 (interaction) 능력, (3) 예를 들어 이메일과 같은 ,다양한 응용 프로그램들, 혹은 Office .NET과 같은, 소프트웨어의 관리를 위한 중앙 시작점으로부터 사용자에게 제품들 및 서비스들의 커스토마이즈된 (customized) 액세스, 및 배달의 특징들을 갖고 있는 온라인 서비스들, (4) 사용자들 및 디바이스들 간에 정보의 동기화를 비롯해서, 정보로의 액세스의 효율성 및 용이성을 증대시키는 중앙집중식 데이타 저장, (5) 이메일, 팩스, 및 전화와 같은, 다양한 통신 매체들을 통합하는 능력, (6) 개발자들에게, 재사용 가능한 모듈들을 생성해서, 생산성을 증대시키고 프로그래밍 에러들의 수를 줄일 수 있는 능력, 및 (7) 또한 다수의 기타 크로스 플랫폼 (cross platform) 통합 특징들을 제공한다.
본 명세서의 실시예들이 컴퓨팅 디바이스에 있는 소프트웨어와 연관해서 기술이되고, 메모리 크기를 조절하는 방법 및 시스템의 하나 이상의 부분들은, 서비스들이 전체 .NET 언어들 및 서비스들을 통해서, 및 또한 기타 분산 컴퓨팅 프래임워크들에서, 수행되고 지원되고 액세스될 수 있도록, 보조 프로세서 (coprocessor) 와 요구하는 객체 간에 운영 체제, 응용 프로그램 인터페이스 (API), 혹은 "중간자" 객체를 통해 또한 구현될 수 있다.
본 명세서에서 기술된 바대로 메모리 크기를 조절하는 방법은 그러한 프로세스들을 실시하기 위해서 컴퓨터 구현된 프로세스들 및 시스템의 형태로 구현될 수 있다. 본 명세서에서 기술된 바대로 메모리 크기를 조절하는 방법은, 플로피 디스켓들, 읽기용 디스크들 (ROMs), CD-ROM들, 하드 드라이브들, 고밀도 디스크들, 혹은 임의의 기타 컴퓨터 판독 가능한 저장 매체와 같은, 유형의 매체들에 구현된 컴퓨터 프로그램 코드의 형태로서 또한 구현될 수 있고, 여기서 컴퓨터 프로그램 코드가 컴퓨터에 의해서 로드되고 실행될 때, 컴퓨터는 본 발명을 실시하기 위한 시스템이 된다. 본 명세서에서 기술된 대로 메모리 크기를 조절하기 위한 방법은, 예를 들어, 저장 매체에 저장되는지, 컴퓨터에 의해 로드 및/또는 실행되는지, 혹은, 전기적 유선 연결 혹은 케이블 연결을 통해서, 광 섬유을 통해서, 혹은 전자파 방사를 통해서와 같은, 어떤 전송 매체를 통해 전송되는지의 여부가 컴퓨터 프로그램 코드의 형태로 또한 구현될 수 있고, 여기서, 컴퓨터 프로그램 코드가 컴퓨터에 의해 로드되고 실행될 때, 컴퓨터는 본 발명을 실시하기 위한 시스템이 된다. 일 반 목적 프로세서에 구현될 때, 컴퓨터 프로그램 코드 세그먼트들 (segments)은 특정 로직 회로들을 생성하기 위해서 프로세서를 설정한다.
본 명세서에서 기술된 다양한 기술들은 하드웨어 혹은 소프트웨어 혹은, 적절한 장소에서, 그 둘의 조합으로 연결되어 구현될 수 있다. 그러므로, 본 발명의 방법들 및 기기들은, 혹은 특정 양태들 혹은 그것들의 일부, 플로피 디스켓들, CD-ROM들, 하드 드라이브들, 혹은 임의의 기타 기계 판독 가능한 저장 매체와 같은, 유형의 매체들에 구현되는 프로그램 코드 (즉, 명령들)의 형태를 채택할 수 있고, 여기서, 프로그램 코드가, 컴퓨터와 같은, 기계에 의해서 로드되고 실행될 때, 기계는 본 발명을 실시하는 기기가 된다. 프로그램 가능한 컴퓨터들에서 프로그램 코드의 실행의 경우에서, 컴퓨팅 디바이스는 일반적으로 프로세서, 프로세서에 의해 판독할 수 있는 저장 매체 (휘발성 및 비휘발성 메모리 및/또는 저장 소자들을 포함), 적어도 한 개의 입력 디바이스, 및 적어도 한 개의 출력 디바이스를 포함할 것이다. 예를 들어, 데이타 처리 API 혹은 기타의 사용을 통해서, 본 발명의 신호 처리 서비스들을 사용할 수 있는 하나 이상의 프로그램들은 컴퓨터와 통신하기 위해서 높은 수준의 절차형 언어 (procedural language) 혹은 객체 기반 프로그래밍 언어로 구현되는 것이 선호된다. 그러나, 프로그램(들)은, 원한다면, 어셈블리 혹은 기계어로 구현될 수 있다. 어떤 경우에도, 언어는 컴파일되거나 인터프리트되고, 하드웨어 구현들과 병합될 수 있다.
본 발명의 방법들 및 기기는, 전기적 유선 연결 혹은 케이블 연결을 통해서, 광 섬유를 통해서, 혹은 임의의 기타 형태의 전송을 통해서와 같은, 특정 전송 매 체를 통해서 전송되는 프로그램 코드의 형태로서 구현되는 통신을 통해서 또한 실시될 수 있고, 여기서 프로그램 코드가, EPROM, 게이트 배열, 프로그램 가능한 로직 디바이스 (PLD), 클라이언트 컴퓨터, 비디오 레코더 혹은 기타 등등과 같은, 기계에 의해서 혹은 위의 실시예들에서 기술된 것처럼 신호 처리 능력들을 갖는 수신 기계에 의해서 수신되고 로드되고 실행된다. 일반 목적 프로세서에 구현될 때, 프로그램 코드는 본 발명의 기능성을 호출하기 위해 동작하는 특정 기기를 제공하기 위해 프로세서와 병합된다. 추가적으로서, 본 발명과 연관해서 사용되는 임의의 저장 기술들은 항상 하드웨어와 소프트웨어의 병합일 것이다.
본 발명의 실시예들은 다양한 도면들의 설명적 실시예들과 연관해서 기술되고, 기타 유사한 실시예들이 사용될 수 있거나, 혹은 수정본들 및 추가본들이 본 발명으로부터 벗어나지 않고 본 발명의 동일 기능을 수행하기 위해 기술된 실시예들로 만들어질 수 있다. 더욱이, 핸드핼드 디바이스 운영 체제들 및 기타 응용 프로그램 고유의 운영 체제들을 포함하는 다양한 컴퓨터 플랫폼들이, 특히 무선 통신망 디바이스들의 수가 증가함에 따라서, 고려됨이 강조되어져야 한다. 그러므로, 본 발명은 임의의 한 개의 실시예에 제한되어서는 안되고, 그대신 첨부된 청구항들에 대응해서 범위가 파악되어야 한다.
본 발명은 데이타베이스 파일의 크기를 자동 조절하는 메카니즘을 제공한다. 이 데이타베이스 수축 기술은 복수 사용자 환경에서 사용가능하고, 비교적 적은 프로세서 시간 및 메모리 사용을 하므로 모바일 디바이스들 혹은 제한된 메모리의 디 바이스들에도 적절하다. 파일 내의 불필요한 페이지들 및 빈 페이지들은 파일의 끝으로 이동되고 그 다음에 그러한 페이지들은 파일에서 절단된다. 그 사용 해제된 메모리 공간은 다시 데이타베이스 관리 시스템으로 되돌려지고 다른 응용 프로그램들을 위해서 사용되게 된다.

Claims (17)

  1. 빈 페이지들의 총 수(a total number of empty pages)를 갖는 파일의 크기를 조절하는 방법에 있어서,
    (a) 상기 파일의 최종 페이지에서 상기 파일의 트래버설(traversal)을 시작하여 상기 파일의 첫 번째 페이지를 향해 진행하는 단계;
    (b) 도달된 페이지(encountered page)가 비어 있으면 상기 도달된 페이지를 건너뜀(skip)으로 표시하는 단계;
    (c) 상기 도달된 페이지가 비어 있지 않으면 상기 도달된 페이지를 더러움(dirty)으로 표시하는 단계;
    (d) 상기 (b) 및 (c) 단계 후에, 건너뛴 페이지들 및 더러운 페이지들의 합계와 상기 파일의 상기 빈 페이지들의 총 수를 비교하는 단계;
    상기 합계가 상기 빈 페이지들의 총 수보다 작으면, 다음 페이지로 상기 파일을 트래버스하고, 상기 (b), (c) 및 (d) 단계들을 수행하는 단계;
    상기 합계가 상기 빈 페이지들의 총 수보다 크거나 같으면:
    트래버스되지 않은 상기 파일의 빈 페이지들에 상기 더러운 페이지들의 내용을 기록하는 단계; 및
    각 더러운 페이지 및 각 건너뛴 페이지를 비할당됨(unallocated)으로 표시하는 단계; 및
    상기 파일로부터 상기 비할당된 페이지들을 절단(truncating)하는 단계
    를 포함하는, 파일 크기 조절 방법.
  2. 제1항에 있어서,
    상기 파일의 페이지들의 총 수에 대한 상기 파일의 빈 페이지들의 퍼센티지가 빈 페이지 임계치 이상인지를 결정하는 단계; 및
    상기 퍼센티지가 상기 빈 페이지 임계치 이상이면, 상기 파일의 상기 트래버설을 시작하는 단계를 더 포함하는, 파일 크기 조절 방법.
  3. 제1항에 있어서,
    더러운 페이지들이 상기 파일의 상기 최종 페이지에 제일 가까운 더러운 페이지에서부터 시작해서 상기 파일의 상기 첫 번째 페이지를 향해 진행하면서 상기 빈 페이지들에 기록되는, 파일 크기 조절 방법.
  4. 제1항에 있어서,
    상기 트래버설을 시작한 이후에 최대 실행 시간이 경과했는지를 결정하는 단계; 및
    상기 최대 실행 시간이 경과했으면,
    트래버스되지 않은 상기 파일의 빈 페이지들에 상기 더러운 페이지들의 내용을 기록하는 단계;
    각 더러운 페이지 및 각 건너뛴 페이지를 비할당됨으로 표시하는 단계; 및
    상기 파일로부터 상기 비할당된 페이지들을 절단하는 단계
    를 개시하는 단계를 더 포함하는, 파일 크기 조절 방법.
  5. 제1항에 있어서,
    각 더러운 페이지 및 각 건너뛴 페이지의 할당 상태를 표시하기 위한 비트맵을 생성하는 단계; 및
    각 더러운 페이지 및 각 건너뛴 페이지를 비할당됨으로 표시하는 단계에 따라 상기 비트맵을 업데이트하는 단계를 더 포함하는, 파일 크기 조절 방법.
  6. 제1항에 있어서,
    상기 파일 내의 페이지들의 총 수를 결정하는 단계;
    상기 파일 내의 빈 페이지들의 수를 결정하는 단계;
    상기 페이지들의 총 수에 대한 빈 페이지들의 퍼센티지를 결정하는 단계;
    상기 퍼센티지의 값과 빈 페이지 임계치를 비교하는 단계;
    상기 퍼센티지의 값이 상기 빈 페이지 임계치 이상이면:
    상기 파일의 최종 페이지에서 상기 파일의 트래버설을 시작하고 상기 파일의 첫 번째 페이지를 향해 진행하는 단계;
    (ⅰ) 도달된 페이지가 비어 있으면, 상기 도달된 페이지를 건너뜀으로 표시하는 단계;
    (ⅱ) 상기 도달된 페이지가 비어 있지 않으면, 상기 도달된 페이지를 더러움으로 표시하는 단계;
    (ⅲ) 건너뛴 페이지들 및 더러운 페이지들의 합계와 상기 빈 페이지들의 수를 비교하는 단계;
    상기 합계가 상기 빈 페이지들의 수보다 작으면, 다음 페이지로 상기 파일을 트래버스하고 상기 (ⅰ), (ⅱ) 및 (ⅲ) 단계들을 수행하는 단계; 및
    상기 합계가 상기 빈 페이지들의 수 이상이면:
    트래버스되지 않은 상기 파일의 빈 페이지들에 상기 더러운 페이지들의 내용을 기록하는 단계; 및
    각 더러운 페이지 및 각 건너뛴 페이지를 비할당됨으로 표시하는 단계를 더 포함하는, 파일 크기 조절 방법.
  7. 파일의 크기를 조절하는 방법에 있어서,
    상기 파일 내의 페이지들의 총 수를 결정하는 단계;
    상기 파일 내의 빈 페이지들의 수를 결정하는 단계;
    상기 페이지들의 총 수에 대한 빈 페이지들의 퍼센티지를 결정하는 단계;
    상기 퍼센티지의 값과 빈 페이지 임계치를 비교하는 단계;
    상기 퍼센티지의 값이 상기 빈 페이지 임계치 이상이면:
    상기 파일의 최종 페이지에서 상기 파일의 트래버설을 시작하고 상기 파일의 첫 번째 페이지를 향해 진행하는 단계;
    (a) 도달된 페이지가 비어 있으면, 상기 도달된 페이지를 건너뜀으로 표시하는 단계;
    (b) 상기 도달된 페이지가 비어 있지 않으면, 상기 도달된 페이지를 더러움으로 표시하는 단계;
    (c) 상기 (a) 및 (b) 단계 후에, 건너뛴 페이지들 및 더러운 페이지들의 합계와 상기 빈 페이지들의 수를 비교하는 단계;
    상기 합계가 상기 빈 페이지들의 수보다 작으면, 다음 페이지로 상기 파일을 트래버스하고 상기 (a), (b) 및 (c) 단계들을 수행하는 단계;
    상기 합계가 상기 빈 페이지들의 수 이상이면:
    트래버스되지 않은 상기 파일의 빈 페이지들에 상기 더러운 페이지들의 내용을 기록하는 단계; 및
    각 더러운 페이지 및 각 건너뛴 페이지를 비할당됨으로 표시하는 단계; 및
    상기 파일로부터 상기 비할당된 페이지들을 절단하는 단계
    를 포함하는, 파일 크기 조절 방법.
  8. 빈 페이지들의 총 수를 갖는 메모리 크기를 조절하도록 컴퓨터 프로세서에 명령하기 위한 컴퓨터 프로그램 코드가 인코딩되어 있는 컴퓨터 판독가능 기록매체에 있어서,
    상기 프로그램은,
    상기 컴퓨터 프로세서로 하여금, (a) 상기 메모리의 파일의 트래버설을 상기 파일의 최종 페이지에서 시작해서 상기 파일의 첫 번째 페이지를 향해 진행하도록 하는 시작 코드 세그먼트;
    상기 컴퓨터 프로세서로 하여금, (b) 도달된 페이지가 비어 있으면 상기 도달된 페이지를 건너뜀으로 표시하도록 하는 건너뜀 표시 코드 세그먼트;
    상기 컴퓨터 프로세서로 하여금, (c) 상기 도달된 페이지가 비어 있지 않으면 상기 도달된 페이지를 더러움으로 표시하도록 하는 더러움 표시 코드 세그먼트;
    상기 (b) 및 (c)의 동작 후에, 상기 컴퓨터 프로세서로 하여금, (d) 건너뛴 페이지들 및 더러운 페이지들의 합계와 상기 파일의 상기 빈 페이지들의 총 수를 비교하도록 하는 비교 코드 세그먼트;
    상기 컴퓨터 프로세서로 하여금, 상기 합계가 상기 빈 페이지들의 총 수보다 작으면 다음 페이지로 상기 파일을 트래버스하게 하고, 상기 (b), (c) 및 (d) 동작들을 수행하도록 하는 다음 페이지(next page) 코드 세그먼트;
    상기 컴퓨터 프로세서로 하여금, 상기 합계가 상기 빈 페이지들의 총 수 이상이면:
    트래버스되지 않은 상기 파일의 빈 페이지들에 상기 더러운 페이지들의 내용을 기록하고,
    각 더러운 페이지 및 각 건너뛴 페이지를 비할당됨으로 표시하도록 하는 합계가 더 큼 코드 세그먼트(sum greater than code segment); 및
    상기 컴퓨터 프로세서로 하여금, 상기 파일로부터 상기 비할당된 페이지들을 절단하도록 하는 절단 코드 세그먼트
    를 포함하는, 컴퓨터 판독가능 기록매체.
  9. 제8항에 있어서,
    상기 컴퓨터 프로세서로 하여금, 상기 파일의 페이지들의 총 수에 대한 상기 파일의 빈 페이지들의 퍼센티지가 빈 페이지 임계치 이상인지를 결정하도록 하는 퍼센티지 코드 세그먼트; 및
    상기 컴퓨터 프로세서로 하여금, 상기 퍼센티지가 상기 빈 페이지 임계치 이상이면, 상기 파일의 상기 트래버설을 시작하도록 하는 조건부 시작(conditional start) 코드 세그먼트를 더 포함하는, 컴퓨터 판독가능 기록매체.
  10. 제8항에 있어서,
    더러운 페이지들은 상기 파일의 상기 최종 페이지에 가장 가까운 더러운 페이지에서 시작해서 상기 파일의 상기 첫 번째 페이지를 향해 진행하면서 상기 빈 페이지들에 기록되는, 컴퓨터 판독가능 기록매체.
  11. 제8항에 있어서,
    상기 컴퓨터 프로세서로 하여금, 상기 트래버설을 시작한 이후에 최대 실행 시간이 경과했는지를 결정하도록 하는 최대 시간 결정 코드 세그먼트; 및
    상기 컴퓨터 프로세서로 하여금, 상기 최대 실행 시간이 경과된 경우,
    트래버스되지 않은 상기 파일의 빈 페이지들에 상기 더러운 페이지들의 내용을 기록하는 단계;
    각 더러운 페이지 및 각 건너뛴 페이지를 비할당됨으로 표시하는 단계; 및
    상기 파일로부터 상기 비할당된 페이지들을 절단하는 단계
    를 시작하도록 하는 조건부 개시 코드 세그먼트를 더 포함하는, 컴퓨터 판독가능 기록매체.
  12. 제8항에 있어서,
    상기 컴퓨터 프로세서로 하여금, 각 더러운 페이지 및 각 건너뛴 페이지의 할당 상태를 표시하기 위한 비트맵을 생성하도록 하는 비트맵 생성 코드 세그먼트; 및
    상기 컴퓨터 프로세서로 하여금, 각 더러운 페이지 및 각 건너뛴 페이지를 비할당됨으로 표시하는 동작에 따라 상기 비트맵을 업데이트하도록 하는 비트맵 업데이트 코드 세그먼트를 더 포함하는, 컴퓨터 판독가능 기록매체.
  13. 메모리 크기를 조절하는 시스템에 있어서,
    페이지들을 포함하는 메모리 파일;
    상기 파일의 최종 페이지에서 상기 파일의 트래버설을 시작하고 상기 파일의 첫 번째 페이지를 향해 진행하는 컨트롤러 - 상기 컨트롤러는 상기 트래버설 동안 도달된 각 페이지에 대해서,
    상기 도달된 페이지가 비어 있으면, 상기 도달된 페이지를 건너뜀으로 표시하는 단계;
    상기 도달된 페이지가 비어 있지 않으면, 상기 도달된 페이지를 더러움으로 표시하는 단계;
    상기 도달된 페이지가 비어 있으면, 상기 도달된 페이지를 건너뜀으로 표시하는 단계와, 상기 도달된 페이지가 비어 있지 않으면, 상기 도달된 페이지를 더러움으로 표시하는 단계 후에, 건너뛴 페이지들 및 더러운 페이지들의 합계와 상기 파일의 미리 결정된 빈 페이지들의 총 수를 비교하는 단계;
    상기 합계가 상기 미리 결정된 빈 페이지들의 총 수보다 작으면, 트래버설 순서로 상기 파일의 다음 페이지에서 상기 트래버설을 계속하는 단계; 및
    상기 합계가 상기 미리 결정된 빈 페이지들의 총 수 이상이면, 트래버스되지 않은 상기 파일의 빈 페이지들에 상기 더러운 페이지들의 내용을 기록하는 단계
    를 포함하는 단계들을 수행함 - ;
    각 더러운 페이지 및 각 건너뛴 페이지를 비할당됨으로 표시하는 할당 지시기(allocation indicator); 및
    상기 파일로부터 상기 비할당된 페이지들을 절단하는 절단기(truncator)
    를 포함하는, 메모리 크기 조절 시스템.
  14. 제13항에 있어서, 상기 컨트롤러가,
    상기 파일의 페이지들의 총 수에 대한 상기 파일의 빈 페이지들의 퍼센티지가 빈 페이지 임계치 이상인지를 결정하는 단계; 및
    상기 퍼센티지가 상기 빈 페이지 임계치 이상이면, 상기 파일의 상기 트래버설을 시작하는 단계를 더 수행하는, 메모리 크기 조절 시스템.
  15. 제13항에 있어서,
    더러운 페이지들이 상기 파일의 상기 최종 페이지에 가장 가까운 더러운 페이지에서 시작해서 상기 파일의 상기 첫 번째 페이지를 향해 진행하면서 상기 빈 페이지들에 기록되는, 메모리 크기 조절 시스템.
  16. 제13항에 있어서, 상기 컨트롤러는,
    상기 트래버설을 시작한 이후에 최대 실행 시간이 경과했는지를 결정하는 단계; 및
    상기 최대 실행 시간이 경과되었다면,
    트래버스되지 않은 상기 파일의 빈 페이지들에 상기 더러운 페이지들의 내용을 기록하는 단계;
    각 더러운 페이지 및 각 건너뛴 페이지를 비할당됨으로 표시하는 단계; 및
    상기 파일로부터 상기 비할당된 페이지들을 절단하는 단계
    를 개시하는 단계를 더 수행하는, 메모리 크기 조절 시스템.
  17. 제13항에 있어서,
    상기 할당 지시기는 각 더러운 페이지 및 각 건너뛴 페이지의 할당 상태를 표시하는 비트맵을 포함하고,
    상기 컨트롤러는 각 더러운 페이지 및 각 건너뛴 페이지를 비할당됨으로 표시하는 동작에 따라 상기 비트맵을 업데이트시키는, 메모리 크기 조절 시스템.
KR1020040039096A 2003-05-30 2004-05-31 파일 크기 조절 방법, 메모리 크기 조절 시스템 및 컴퓨터 판독가능 기록매체 KR101087425B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/448,847 2003-05-30
US10/448,847 US7296043B2 (en) 2003-05-30 2003-05-30 Memory file size adjustment

Publications (2)

Publication Number Publication Date
KR20040103483A KR20040103483A (ko) 2004-12-08
KR101087425B1 true KR101087425B1 (ko) 2011-11-25

Family

ID=33131619

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040039096A KR101087425B1 (ko) 2003-05-30 2004-05-31 파일 크기 조절 방법, 메모리 크기 조절 시스템 및 컴퓨터 판독가능 기록매체

Country Status (5)

Country Link
US (1) US7296043B2 (ko)
EP (1) EP1482423B1 (ko)
JP (1) JP4537771B2 (ko)
KR (1) KR101087425B1 (ko)
CN (1) CN100445990C (ko)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7644239B2 (en) 2004-05-03 2010-01-05 Microsoft Corporation Non-volatile memory cache performance improvement
US7693856B2 (en) 2004-06-25 2010-04-06 Apple Inc. Methods and systems for managing data
US7730012B2 (en) * 2004-06-25 2010-06-01 Apple Inc. Methods and systems for managing data
US7490197B2 (en) 2004-10-21 2009-02-10 Microsoft Corporation Using external memory devices to improve system performance
US8108579B2 (en) * 2005-03-31 2012-01-31 Qualcomm Incorporated Mechanism and method for managing data storage
US8914557B2 (en) 2005-12-16 2014-12-16 Microsoft Corporation Optimizing write and wear performance for a memory
US7685145B2 (en) * 2006-03-28 2010-03-23 Microsoft Corporation Database physical design refinement using a merge-reduce approach
US8631203B2 (en) * 2007-12-10 2014-01-14 Microsoft Corporation Management of external memory functioning as virtual cache
US20090295836A1 (en) * 2008-05-27 2009-12-03 Ravenflow, Inc. System and method for representing large activity diagrams
US9032151B2 (en) 2008-09-15 2015-05-12 Microsoft Technology Licensing, Llc Method and system for ensuring reliability of cache data and metadata subsequent to a reboot
US8032707B2 (en) 2008-09-15 2011-10-04 Microsoft Corporation Managing cache data and metadata
US7953774B2 (en) 2008-09-19 2011-05-31 Microsoft Corporation Aggregation of write traffic to a data store
US20100169322A1 (en) * 2008-12-26 2010-07-01 Sun Microsystems, Inc. Efficient access of bitmap array with huge usage variance along linear fashion, using pointers
CN101706736B (zh) * 2009-12-22 2012-10-10 北京大学 一种高效的脏页获取方法
JP5593841B2 (ja) * 2010-05-28 2014-09-24 富士通株式会社 データベース装置
JP5943304B2 (ja) * 2012-10-16 2016-07-05 富士ゼロックス株式会社 画像形成装置及びプログラム
US10013217B1 (en) * 2013-06-28 2018-07-03 EMC IP Holding Company LLC Upper deck file system shrink for directly and thinly provisioned lower deck file system in which upper deck file system is stored in a volume file within lower deck file system where both upper deck file system and lower deck file system resides in storage processor memory
US10216536B2 (en) * 2016-03-11 2019-02-26 Vmware, Inc. Swap file defragmentation in a hypervisor
US9933945B1 (en) 2016-09-30 2018-04-03 EMC IP Holding Company LLC Efficiently shrinking a dynamically-sized volume
CN114925131B (zh) * 2021-12-31 2024-05-07 中企云链股份有限公司 一种数据同步自动遍历方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5524241A (en) 1992-02-04 1996-06-04 Digital Equipment Corporation System and method for executing, tracking and recovering long running computations
US6249792B1 (en) 1998-12-16 2001-06-19 Microsoft Corporation On-line dynamic file shrink facility

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3226525B2 (ja) * 1988-10-07 2001-11-05 株式会社日立製作所 主記憶管理方法
JP2865500B2 (ja) * 1992-09-30 1999-03-08 富士通株式会社 ファイル格納管理方法
US5388083A (en) * 1993-03-26 1995-02-07 Cirrus Logic, Inc. Flash memory mass storage architecture
EP1003103B1 (en) * 1993-06-03 2008-10-01 Network Appliance, Inc. Write anywhere file-system layout method and apparatus
US5963962A (en) * 1995-05-31 1999-10-05 Network Appliance, Inc. Write anywhere file-system layout
US6119214A (en) * 1994-04-25 2000-09-12 Apple Computer, Inc. Method for allocation of address space in a virtual memory system
US5574907A (en) * 1994-11-30 1996-11-12 Microsoft Corporation Two-pass defragmentation of compressed hard disk data with a single data rewrite
US5604902A (en) * 1995-02-16 1997-02-18 Hewlett-Packard Company Hole plugging garbage collection for a data storage system
US6038571A (en) * 1996-01-31 2000-03-14 Kabushiki Kaisha Toshiba Resource management method and apparatus for information processing system of multitasking facility
US5778392A (en) * 1996-04-01 1998-07-07 Symantec Corporation Opportunistic tile-pulling, vacancy-filling method and apparatus for file-structure reorganization
US6070172A (en) * 1997-03-06 2000-05-30 Oracle Corporation On-line free space defragmentation of a contiguous-file file system
US6023744A (en) * 1997-03-07 2000-02-08 Microsoft Corporation Method and mechanism for freeing disk space in a file system
US5956745A (en) * 1997-04-23 1999-09-21 Novell, Inc. System and method for automatically resizing a disk drive volume
US6408313B1 (en) * 1998-12-16 2002-06-18 Microsoft Corporation Dynamic memory allocation based on free memory size
WO2001004801A1 (en) 1999-07-09 2001-01-18 Wild File, Inc. Optimized disk storage defragmentation with swapping capabilities
US6757801B1 (en) * 2000-10-26 2004-06-29 International Business Machines Corporation Method to modify that an operation needs to be done on a file system
US20020161860A1 (en) * 2001-02-28 2002-10-31 Benjamin Godlin Method and system for differential distributed data file storage, management and access
US6928456B2 (en) * 2001-03-06 2005-08-09 Intel Corporation Method of tracking objects for application modifications

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5524241A (en) 1992-02-04 1996-06-04 Digital Equipment Corporation System and method for executing, tracking and recovering long running computations
US6249792B1 (en) 1998-12-16 2001-06-19 Microsoft Corporation On-line dynamic file shrink facility

Also Published As

Publication number Publication date
CN100445990C (zh) 2008-12-24
JP2004362575A (ja) 2004-12-24
JP4537771B2 (ja) 2010-09-08
CN1609850A (zh) 2005-04-27
US7296043B2 (en) 2007-11-13
EP1482423A2 (en) 2004-12-01
EP1482423B1 (en) 2017-09-20
EP1482423A3 (en) 2006-05-17
US20040243612A1 (en) 2004-12-02
KR20040103483A (ko) 2004-12-08

Similar Documents

Publication Publication Date Title
KR101087425B1 (ko) 파일 크기 조절 방법, 메모리 크기 조절 시스템 및 컴퓨터 판독가능 기록매체
US6092168A (en) Data storage system and method for deallocating space by writing and detecting a predefined data pattern
US6615318B2 (en) Cache management system with multiple cache lists employing roving removal and priority-based addition of cache entries
US6925525B2 (en) Data storage management system and method
KR101183424B1 (ko) 관리되지 않는 메모리에 대한 콜렉션을 수행하기 위한 방법및 시스템
US8108649B2 (en) Method of memory management for server-side scripting language runtime system
US20050097142A1 (en) Method and apparatus for increasing efficiency of data storage in a file system
US20100287356A1 (en) Large memory pages for shared libraries
US20020186899A1 (en) Method and computer system for prefetching of images
KR20080018801A (ko) 가변 논리적 저장 블록 사이즈를 갖는 파일시스템
US20060195649A1 (en) Heap memory management
US6343341B1 (en) Efficient access to variable-length data on a sequential access storage medium
US6598143B1 (en) Method to increase performance of acquiring free memory pages
JP2006195949A (ja) コンピュータオペレーティングシステムに渡ってコンピュータファイルへのアクセスを行うシステムおよび方法
US6804761B1 (en) Memory allocation system and method
US7225314B1 (en) Automatic conversion of all-zero data storage blocks into file holes
US11119912B2 (en) Ordering data updates for improving garbage collection being performed while performing the set of data updates
US8028010B2 (en) Adjusting log size in a static logical volume
US6799253B1 (en) Stochastic scratchpad storage management technique
US6948009B2 (en) Method, system, and article of manufacture for increasing processor utilization
JP2005128771A (ja) データファイルシステム、データアクセスサーバ、およびデータアクセスプログラム
JP4095152B2 (ja) 画像管理装置およびその方法、画像管理システム、記憶媒体
KR20240058574A (ko) 이미지 렌더링을 위한 메모리 관리 방법
CN113360078A (zh) 一种存储方法、装置、电子设备和存储介质
CN117251388A (zh) 基于缓存的数据处理方法及装置、存储介质及电子设备

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20141017

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20151016

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20161019

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20171018

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20181018

Year of fee payment: 8