KR101644125B1 - 비휘발성 메모리를 이용한 로깅 최적화 장치 및 방법 - Google Patents

비휘발성 메모리를 이용한 로깅 최적화 장치 및 방법 Download PDF

Info

Publication number
KR101644125B1
KR101644125B1 KR1020090089778A KR20090089778A KR101644125B1 KR 101644125 B1 KR101644125 B1 KR 101644125B1 KR 1020090089778 A KR1020090089778 A KR 1020090089778A KR 20090089778 A KR20090089778 A KR 20090089778A KR 101644125 B1 KR101644125 B1 KR 101644125B1
Authority
KR
South Korea
Prior art keywords
log
buffer
record
page
link
Prior art date
Application number
KR1020090089778A
Other languages
English (en)
Other versions
KR20110032343A (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 삼성전자주식회사
Priority to KR1020090089778A priority Critical patent/KR101644125B1/ko
Priority to US12/839,509 priority patent/US8856469B2/en
Publication of KR20110032343A publication Critical patent/KR20110032343A/ko
Application granted granted Critical
Publication of KR101644125B1 publication Critical patent/KR101644125B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • 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/23Updating
    • G06F16/2358Change logging, detection, and notification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1441Resetting or repowering

Abstract

비휘발성 메모리를 이용한 로깅 최적화 기술이 개시된다. 본 발명의 일 양상에 따라 로그 기록은 페이지 단위로 연결된 제 1 링크 및 트랜잭션 단위로 연결된 제 2 링크를 가질 수 있으며, 비휘발성 메모리 버퍼에 저장되는 것이 가능하다. 비휘발성 메모리 버퍼에 저장된 로그 기록은 필요에 따라 삭제되거나 디스크로 옮겨질 수 있다.
로깅(logging), 트랜잭션(transaction), 회복(recovery), 비휘발성 메모리(non-volatile memory)

Description

비휘발성 메모리를 이용한 로깅 최적화 장치 및 방법{an apparatus and method for logging optimization using non-volatile memory}
시스템 회복을 위한 로깅 기술과 관련된다.
일반적인 디스크 기반 데이터베이스에서 디스크 입출력(disk I/O)은 데이터 독출(read)을 위해 특정 페이지를 읽을 때마다 또는 데이터 기록(write)를 위해 buffer replacement 또는 transaction commit가 발생하는 시점에 발생한다. 이러한 디스크 입출력 동작은 시스템의 처리 속도를 저하시키는 요인이 될 수 있다.
한편, 로깅(logging)이란 데이터베이스에 저장된 데이터를 회복하기 위해서 사용되는 대표적인 기술로, 데이터 상에 어떠한 변경이 발생하면 변경 전/후의 내용을 별도로 저장하여 로그를 유지하는 기술을 말한다.
그러나 이러한 로깅에서는 데이터 페이지가가 디스크에 기록되는 시점 또는 transaction commit 시점에 로그를 모두 디스크에 반영해야 하기 때문에 빈번한 디스크 입출력을 야기시킬 수 있다. 빈번한 디스크 입출력을 줄이기 위한 방법 중 하나로 로그를 별도로 저장하는 로그 버퍼를 활용하는 방법이 있다.
로그 버퍼를 사용하면, 로그를 디스크에 직접 기록하는 것이 아니라 로그 버 퍼에 기록하기 때문에 디스크 입출력에 따른 연산을 줄일 수 있다. 그러나 로그 버퍼를 사용하는 경우에도 로그 버퍼의 저장 공간이 한정되어 있기 때문에 주기적으로 로그를 디스크에 반영해야 한다. 이렇듯 로그 버퍼에 저장된 로그를 디스크에 반영하는 과정에서 발생하는 디스크 입출력은 여전히 로깅의 성능을 저하시키는 요인으로 작용하고 있다.
제한된 크기의 로그 버퍼를 효율적으로 활용하여 로깅 성능을 향상시키는 로깅 최적화 장치 및 방법이 제공된다.
본 발명의 일 양상에 따른 로깅 최적화 장치는, 페이지 단위로 연결된 제 1 링크 및/또는 트랜잭션 단위로 연결된 제 2 링크를 갖는 로그 기록(log record)을 생성하는 로그 생성부, 비휘발성 메모리로 형성되며 생성된 로그 기록을 저장하는 로그 버퍼부 및 페이지 버퍼에 저장된 데이터 페이지가 디스크에 기록되면, 로그 기록 중 디스크에 기록된 페이지에 대응되는 리두 로그 기록(Redo log record)을 로그 버퍼부에서 삭제하거나, 실행 중인 트랜잭션이 완료되면, 로그 기록 중 완료된 트랜잭션에 대응되는 언두 로그 기록(Undo log record)을 로그 버퍼부에서 삭제하는 로그 삭제부를 포함하는 것이 가능하다.
또한, 본 발명의 일 양상에 따라, 로그 생성부는 로그 기록 외에 실행 중인 트랜잭션에 대한 로그 정보, 갱신 중인 페이지에 대한 로그 정보, 상기 로그 기록에 대한 링크 정보 등을 포함하는 리커버리 정보를 생성하는 것이 가능하다. 생성된 리커버리 정보는 비휘발성 메모리로 형성된 로그 버퍼부에 저장될 수 있다.
또한, 본 발명의 일 양상에 따라, 로깅 최적화 장치는, 로그 버퍼부의 저장 공간이 부족한 경우, 로그 버퍼부에 저장된 로그 기록을 디스크로 복사하고, 복사된 로그 기록을 로그 버퍼부에서 삭제하는 로그 이동부를 더 포함할 수 있다.
또한, 본 발명의 일 양상에 따른 로깅 최적화 장치는, 리커버리 정보를 이용하여 데이터 리커버리를 수행하는 리커버리부를 더 포함하는 것도 가능하다.
한편, 본 발명의 일 양상에 따른 로깅 최적화 방법은, 페이지 단위로 연결된 제 1 링크 및/또는 트랜잭션 단위로 연결된 제 2 링크를 갖는 로그 기록(log record)을 생성하는 단계, 생성된 로그 기록을 비휘발성 로그 버퍼에 저장하는 단계 및 페이지 버퍼에 저장된 데이터 페이지가 디스크에 기록되면, 로그 기록 중 디스크에 기록된 페이지에 대응되는 리두 로그 기록(Redo log record)을 로그 버퍼에서 삭제하거나, 실행 중인 트랜잭션이 완료되면, 로그 기록 중 완료된 트랜잭션에 대응되는 언두 로그 기록(Undo log record)을 로그 버퍼에서 삭제하는 단계를 포함하는 것이 가능하다.
또한, 본 발명의 일 양상에 따른 로깅 최적화 방법은, 로그 버퍼의 저장 공간이 부족한 경우, 로그 버퍼에 저장된 로그 기록을 디스크로 복사하고, 복사된 로그 기록을 로그 버퍼에서 삭제하는 단계를 더 포함할 수 있다.
또한, 본 발명의 일 양상에 따른 로깅 최적화 방법은, 리커버리 정보를 이용하여 데이터 리커버리를 수행하는 단계를 더 포함할 수도 있다.
개시된 내용에 따르면, 불필요한 로그 기록이 로그 버퍼에서 적절하게 삭제되기 때문에 로그 버퍼의 저장 공간을 최대한 활용할 수 있고 로깅 성능을 향상시킬 수 있다. 또한, 로그 버퍼에 저장된 리커버리 정보를 통해 데이터 리커버리 과정에서 필요한 분석 과정을 생략시키고 빠르게 데이터 리커버리가 이루어지도록 하 는 것이 가능하다.
이하, 첨부된 도면을 참조하여 본 발명의 실시를 위한 구체적인 예를 상세히 설명한다.
도 1은 본 발명의 일 실시 예에 따른 로깅 시스템을 도시한다.
도 1을 참조하면, 로깅 시스템(100)은 로그 관리부(101), 메모리 버퍼(102) 및 디스크(103)를 포함한다.
로그 관리부(101)는 메모리 버퍼(102) 및/또는 디스크(103) 상의 데이터 갱신이 발생하는 경우 갱신과 관련된 로그 기록(log record)을 생성하고 생성된 로그 기록을 관리한다. 로그 기록이란 데이터 입출력 명령에 따라 어떠한 데이터가 변경되는 경우 그 변경 사항을 기록한 파일이 될 수 있다. 따라서 로그 관리부(101)는 이러한 로그 기록을 이용하여 시스템에 문제가 발생하는 경우 데이터 리커버리를 실행하여 시스템을 복구시키는 것이 가능하다.
메모리 버퍼(102)는 데이터를 임시로 저장한다. 메모리 버퍼(102)는 디스크(103)에 기록되거나 디스크(103)로부터 독출된 데이터를 임시로 저장하는 페이지 버퍼(112)와 생성된 로그 기록을 임시로 저장하는 로그 버퍼(122)로 구성될 수 있다. 이 때, 로그 버퍼(122)는 전원 공급이 중단되더라도 저장된 데이터를 유지하는 비휘발성 메모리로 형성될 수 있다.
디스크(103)는 일반적인 데이터 및 로그 기록을 반영구적으로 저장하는 하드 디스크가 될 수 있으며, 일반적인 데이터가 저장되는 데이터 저장 영역(113)과 로 그 기록이 저장되는 로그 저장 영역(123)으로 구분될 수 있다.
예를 들어, 페이지 버퍼(112)의 페이지 데이터에 대해 갱신이 이루어지는 경우, 로그 관리부(101)는 갱신 전의 내용(즉, 언두 로그 기록(Undo log record)) 및 갱신 후의 내용(즉, 리두 로그 기록(Redo log record))을 생성한 후, 생성된 로그 기록을 로그 버퍼(122)에 저장하는 것이 가능하다. 또한, 로그 관리부(101)는 로그 버퍼(122)의 저장 공간을 확보하기 위해 필요에 따라 로그 버퍼(122)에 저장된 로그 기록을 삭제하거나 로그 버퍼(122)에 저장된 로그 기록을 디스크(103)의 로그 저장 영역(123)으로 옮기는 것이 가능하다.
도 2는 본 발명의 일 실시 예에 따른 로그 기록을 도시한다.
도 2에서, 로그 기록은 로그 버퍼(122)에 저장되는 로그 기록(201)과 디스크(103)에 저장되는 로그 기록(202)을 포함할 수 있다.
참조번호 201에서, 로그 버퍼(122)에 저장되는 로그 기록(201)의 데이터 필드를 살펴보면 다음과 같다.
TxnID는 트랜잭션(transaction)의 식별자가 될 수 있다. LogType은 로그 기록의 종류를 나타낸다. LogType은 갱신 전의 데이터를 나타내는 언두 로그 기록(Undo log record)과 갱신 후의 데이터를 나타내는 리두 로그 기록(Redo log record) 등으로 구분할 수 있다. LogID는 로그 기록이 생성된 순서를 식별하기 위한 식별자가 될 수 있다. PageID는 갱신된 페이지의 식별자가 될 수 있다. LogData는 갱신이 발생한 데이터의 내용을 나타낸다. 이 LogData 필드에는 갱신된 데이터의 페이지 위치, 갱신된 데이터의 길이 등이 포함될 수도 있다. prevLog는 이전 로그 기록을 가리키는 포인터를 나타내고, nextLog는 다음 로그 기록을 가리키는 포인터를 나타낸다. NextRedoLog는 리두 로그를 페이지 단위로 연결하기 위한 포인터로써, 동일 페이지에서 생성되는 다음 리두 로그를 가리키는 포인터를 나타낸다. NextUndoLog와 PrevUndoLog는 트랜잭션 단위로 로그 기록을 연결하기 위한 포인터로써, 동일 트랜잭션에서 생성된 다음 언두 로그와 이전 언두 로그를 가리키는 포인터를 나타낸다.
이 밖에도 CLR(compensation log record)의 경우, 다음에 수행할 언두 로그 기록을 가리키는 포인터인 UndoNxtLog, 다음에 수행할 언두 로그 기록을 가리키는 로그 시퀀스 넘버(log sequence number, LSN)인 UndoNxtLSN 필드 등을 더 가질 수도 있다. CLR은 롤백 과정에서 생성된 로그 기록으로 언두를 수행한 로그 기록에 대한 리두 로그 기록을 말한다.
참조번호 202에서, 디스크(103)에 저장되는 로그 기록(202)의 데이터 필드를 살펴보면 다음과 같다.
TxnID, LogType, LogID, PageID, LogData는 전술한 것과 동일하다. prevLSN은 동일한 트랜잭션에 의해 생성된 이전 로그 기록의 LSN을 나타낸다. 이 밖에도 CLR의 경우 다음에 수행할 언두 로그 기록을 가리키는 LSN인 UndoNxtLSN 필드를 더 가질 수도 있다.
본 발명의 일 실시 예에 따라, 로그 관리부(101)는 이러한 로그 기록을 포함하는 리커버리 정보를 생성 및 관리하는 것이 가능하다. 리커버리 정보는 전술한 로그 기록 외에 실행 중인 트랜잭션에 대한 로그 정보, 갱신 중인 페이지에 대한 로그 정보, 상기 로그 기록에 대한 링크 정보 등이 될 수 있다.
도 3은 본 발명의 일 실시 예에 따른 트랜잭션에 대한 로그 정보를 도시한다.
도 3에서, 트랜잭션에 대한 로그 정보는 현재 수행 중인 트랜잭션의 정보를 기록한 트랜잭션 테이블(transaction table)(300)이 될 수 있다. 트랜잭션 테이블(300)은 다음과 같은 데이터 필드를 포함할 수 있다. TxnID는 트랜잭션의 식별자가 될 수 있다. LastLSN은 동일한 트랜잭션에 의해 생성되고 디스크(103)에 존재하는 마지막 로그 기록의 LSN이 될 수 있다. LastUndoLog는 동일한 트랜잭션에 의해 생성되고 로그 버퍼(122)에 존재하는 마지막 언두 로그 기록을 가리키는 포인터가 될 수 있다.
예컨대, 로그 관리부(101)는 트랜잭션이 시작될 때 트랜잭션 테이블(300)에 트랜잭션 정보를 추가하고 트랜잭션이 완료되면 해당 정보를 제거하는 것이 가능하다. 따라서 트랜잭션 테이블(300)에는 항상 현재 진행 중인 트랜잭션에 관한 정보만 유지되는 것이 가능하므로, 데이터 리커버리 과정과 관련하여, 트랜잭션 테이블(300)을 참조하여 완료되지 못한 트랜잭션에 대해 언두(undo)를 수행하는 것이 가능하다.
도 4는 본 발명의 일 실시 예에 따른 페이지에 대한 로그 정보를 도시한다.
도 4에서, 페이지에 대한 로그 정보는 페이지 버퍼(112)에서 변경이 발생한 페이지에 대한 정보를 기록한 더티 페이지 테이블(dirty page table)(400)이 될 수 있다. 더티 페이지 테이블(400)은 다음과 같은 데이터 필드를 포함할 수 있다. TxnID는 트랜잭션의 식별자가 될 수 있다. recLSN은 해당 페이지를 처음으로 수정할 때의 LSN을 나타낸다. LastRedoLog는 해당 페이지에 대한 마지막 리두 로그 기록을 가리키는 포인터가 될 수 있다. FirstRedoLog는 해당 페이지에 대한 최초의 리두 로그 기록을 가리키는 포인터가 될 수 있다.
예컨대, 페이지 버퍼(112)의 데이터가 수정되면, 로그 관리부(101)가 더티 페이지 테이블(400)에 해당 페이지 정보를 추가하고 페이지 버퍼(112)의 특정 페이지가 디스크(103)에 기록되면, 해당 페이지 정보를 제거하는 것이 가능하다. 따라서 더티 페이지 테이블(400)에는 항상 현재 수정 중인 페이지에 대한 정보가 유지되는 것이 가능하므로 데이터 리커버리 과정과 관련하여, 더티 페이지 테이블(400)에 존재하는 페이지에 대해 리두(redo)를 수행하는 것이 가능하다.
도 5는 본 발명의 일 실시 예에 따른 로그 기록에 대한 링크 정보를 도시한다.
도 5에서, 로그 기록에 대한 링크 정보는 로그 버퍼(122)에 리스트 형태로 저장된 로그 기록들의 시작 로그 기록 또는 마지막 로그 기록을 나타내는 로그 링크 테이블(log link table)(500)이 될 수 있다. 로그 링크 테이블(500)은 다음과 같은 데이터 필드를 포함할 수 있다. FirstRedoLogRecord는 로그 버퍼(122)에 저장된 로그 기록 중에서 가장 오래된 리두 로그 기록을 나타낸다. LastRedoLogRecord는 로그 버퍼(122)에 저장된 로그 기록 중에서 가장 최근의 리두 로그 기록을 나타낸다. FirstUndoLogRecord는 로그 버퍼(122)에 저장된 로그 기록 중에서 가장 오래된 언두 로그 기록을 나타낸다. LastUndoLogRecord는 로그 버 퍼(122)에 저장된 로그 기록 중에서 가장 최근의 언두 로그 기록을 나타낸다.
도 6은 본 발명의 일 실시 예에 따른 로깅 최적화 장치를 도시한다.
도 6에서, 로깅 최적화 장치(600)는 로그 생성부(601), 로그 삭제부(602), 로그 이동부(603), 리커버리부(604) 및 로그 버퍼부(605)를 포함할 수 있다.
로그 생성부(601)는 로그 버퍼부(605)에 저장되는 로그 기록을 생성하는 것이 가능하다. 생성되는 로그 기록은 페이지 단위로 연결되는 제 1 링크와 트랜잭션 단위로 연결되는 제 2 링크를 가질 수 있으며, 갱신이 발생되기 이전의 로그 기록인 언두 로그 기록과 갱신이 발생된 이후의 로그 기록인 리두 로그 기록을 포함할 수 있다. 제 1 링크는 로그 기록을 페이지 단위로 연결하는데, 생성되는 리두 로그 기록을 페이지 단위로 연결하는 것이 가능하다. 예컨대, 제 1 링크는, 도 2에서, NextRedoLog에 대응될 수 있다. 제 2 링크는 로그 기록을 트랜잭션 단위로 연결하는데, 생성되는 언두 로그 기록을 트랜잭션 단위로 연결하는 것이 가능하다. 예컨대, 제 2 링크는, 도 2에서, NextUndoLog 또는 PrevUndoLog에 대응될 수 있다. 그러나, 제 1 링크 및 제 2 링크가 로그 기록의 종류에 상관없이 각 로그 기록을 연결하는 것도 가능하다.
또한, 로그 생성부(601)는 로그 기록을 포함하는 리커버리 정보를 생성하는 것이 가능하다. 리커버리 정보는 도 2 내지 도 5에서 설명된 로그 기록, 실행 중인 트랜잭션에 대한 로그 정보, 갱신 중인 페이지에 대한 로그 정보, 로그 기록에 대한 링크 정보 등이 될 수 있다.
로그 생성부(601)에 의해 생성된 로그 기록 또는 로그 기록을 포함하는 리커 버리 정보는 로그 버퍼부(605)에 저장 및 관리되는 것이 가능하다. 로그 버퍼부(605)는 비휘발성 메모리로 형성될 수 있으며, 전술한 로그 버퍼(122)에 대응될 수 있다.
로그 삭제부(602)는 로그 버퍼부(605)에 저장된 로그 기록을 필요에 따라 삭제한다. 예를 들어, 로그 삭제부(602)는 페이지 버퍼(112)에 저장된 데이터 페이지가 디스크(103)에 기록되면, 로그 버퍼부(605)에 저장된 로그 기록들 중에서 디스크(103)에 기록된 페이지에 대응되는 리두 로그 기록을 로그 버퍼부(605)에서 삭제하는 것이 가능하다. 또한, 로그 삭제부(602)는 실행 중인 트랜잭션이 완료되면, 로그 버퍼부(605)에 저장된 로그 기록들 중에서 완료된 트랜잭션에 대응되는 언두 로그 기록을 로그 버퍼부(605)에서 삭제하는 것이 가능하다. 이 때, 페이지에 대응되는 리두 로그 기록은 제 1 링크를 통해 선택될 수 있으며, 완료된 트랜잭션에 대응되는 언두 로그 기록은 제 2 링크를 통해 선택되는 것이 가능하다.
로그 이동부(603)는 로그 버퍼부(605)에 저장 공간이 부족한 경우, 로그 버퍼부(605)에 저장된 로그 기록을 디스크(103)의 로그 저장 영역(123)으로 복사하고, 복사된 로그 기록을 로그 버퍼부(605)에서 삭제하는 것이 가능하다. 이 때, 로그 이동부(603)는 로그 기록이 생성된 순서를 나타내는 식별자(예컨대, 타임스탬프)를 로그 기록에 부여한 후, 로그 기록을 디스크(103)의 로그 저장 영역(123)으로 옮기는 것이 가능하다. 로그 기록이 생성된 순서를 나타내는 식별자는, 예컨대, 도 2에서, LogID에 대응될 수 있다.
리커버리부(604)는 리커버리 정보를 이용하여 데이터 리커버리를 수행하는 것이 가능하다. 예컨대, 리커버리부(602)는 로그 기록을 이용한 데이터 리커버리 과정에 있어서, 실행 중인 트랜잭션에 대한 로그 정보를 참조하여 완료되지 못한 트랜잭션에 대해서만 언두(undo)를 실행하거나 갱신 중인 페이지에 대한 로그 정보를 참조하여 갱신이 발생한 페이지에 대해서만 리두(redo)를 실행하는 것이 가능하다. 또한, 데이터 리커버리의 리두 과정을 수행할 때, 더티 페이지 테이블(400)의 recLSN 중에서 가장 작은 값 또는 로그 링크 테이블(500)의 FirstRedoLogRecord 값을 이용하여 리두 과정(redo step)을 개시하는 것이 가능하다. 데이터 리커버리의 언두 과정을 수행할 때는, 트랜잭션 테이블(300)의 LastUndoLog 중에서 LogID가 가장 큰 로그 기록부터 언두 과정(undo step)을 개시하는 것이 가능하다.
이와 같이, 로그 생성부(601)가 링크 구조를 갖는 로그 기록을 생성 및 저장하고, 로그 삭제부(602) 및 로그 이동부(603)가 불필요한 로그 기록을 로그 버퍼부(605)에서 적절하게 제거하기 때문에 로그 버퍼부(605)의 저장 공간을 확보하고 로그 기록을 디스크(103)로 기록하는 과정에서 발생하는 연산 처리량을 줄이는 것이 가능하다. 또한 리커버리부(604)가 데이터 리커버리를 수행할 때 리커버리 정보를 이용하는 것이 가능하므로 리커버리 분석 과정을 줄이는 것이 가능하다.
도 7a 내지 도 7d는 본 발명의 일 실시 예에 따라 생성 및 저장된 로그 기록을 도시한다.
도 7a에서, page #1 및 page #2는 페이지 버퍼(112)의 각 페이지를 나타낸다. 최초에, 각각의 페이지의 데이터는 모두 000인 것으로 가정한다.
도 7b에서, 트랜잭션 #1(Txn1)이 실행됨에 따라, page #1의 오프셋 10번 위 치의 데이터가 000에서 111로 변경되고, page #2의 오프셋 10번 위치의 데이터가 000에서 444로 변경되었다. 이 때, 생성되는 로그 기록을 살펴보면, 리두 로그 기록끼리 또는 언두 로그 기록끼리 제 2 링크(702)를 통해 서로 연결되는 것을 알 수 있다.
도 7c에서, 트랜잭션 #2(Txn2)가 실행됨에 따라, page #1의 오프셋 20번 위치의 데이터가 000에서 222로 변경되고, page #2의 오프셋 20번 위치의 데이터가 000에서 555로 변경되었다. 이 때, 생성되는 로그 기록을 살펴보면, 리두 로그 기록끼리 또는 언두 로그 기록끼리 제 1 링크(701) 및 제 2 링크(702)를 통해 서로 연결되는 것을 알 수 있다.
마찬가지로 도 7d에서, 트랜잭션 #3(Txn3)이 실행됨에 따라, page #1의 오프셋 30번 위치의 데이터가 000에서 333으로 변경되고, page #2의 오프셋 30번 위치의 데이터가 000에서 666으로 변경되었다. 이 때, 생성되는 로그 기록을 살펴보면, 리두 로그 기록끼리 또는 언두 로그 기록끼리 제 1 링크(701) 및 제 2 링크(702)를 통해 서로 연결되는 것을 알 수 있다.
도 8a 및 도 8b는 본 발명의 일 실시 예에 따라 삭제되는 로그 기록을 도시한다.
도 8a는 실행 중인 트랜잭션이 완료된 경우의 로그 기록 최적화에 대한 일 예가 될 수 있다. 예컨대, 도 8a에서, 트랜잭션 #1 및 트랜잭션 #2가 완료된 경우, 로그 버퍼(122)의 로그 기록들 중에서 트랜잭션 #1 및 트랜잭션 #2에 대응되는 언두 로그 기록들(즉, 801 내지 804)을 삭제하는 것이 가능하다. 정상적으로 완료 된 트랜잭션의 경우, 이전 상태로 되돌리기 위한 동작이 필요하지 아니하므로 트랜잭션이 완료된 언두 로그 기록은 더 이상 의미가 없기 때문이다. 이 때, 제 2 링크(702)는 트랜잭션 단위의 연결 정보를 나타내기 때문에, 제 2 링크(702)를 참조하여 해당 언두 로그 기록을 빠르게 찾는 것이 가능하다.
도 8b는 페이지 기록(page write) 동작이 수행된 경우의 로그 기록 최적화에 대한 일 예가 될 수 있다. 예컨대, 도 8b에서, 페이지 버퍼(112)의 page #1의 데이터가 디스크(103)에 기록된 경우, 로그 버퍼(122)의 로그 기록들 중에서 page #1에 대응되는 리두 로그 기록들(즉, 805 내지 807)을 삭제하는 것이 가능하다. 수정된 페이지의 변경 사항이 모두 디스크에 반영되었으므로 리두 로그 기록은 더 이상 의미가 없기 때문이다. 이 때, 제 1 링크(701)는 페이지 단위의 연결 정보를 나타내기 때문에, 제 1 링크(701)를 참조하여 해당 리두 로그 기록을 빠르게 찾는 것이 가능하다.
도 9는 본 발명의 일 실시 예에 따라 디스크로 옮겨지는 로그 기록을 도시한다.
도 9에서, 로그 버퍼(122)의 저장 공간이 부족한 경우, 로그 기록의 일부를 디스크(103)로 옮기는 것이 가능하다. 예컨대, 로그 이동부(603)가 특정한 로그 기록을 선택하고 선택된 로그 기록을 디스크(103)에 적합한 구조로 변환한 후, 변환된 로그 기록을 디스크(103)에 복사하고 선택된 로그 기록을 로그 버퍼(122)에서 삭제하는 것이 가능하다. 여기서 적합한 구조로의 변환이란, 도 2와 같이, 로그 버퍼(122)에 저장되는 로그 기록(201)을 디스크(103)에 저장되는 로그 기록(202)으 로 변환하거나 로그 기록이 생성된 순서를 나타내는 식별자를 부여하는 과정을 포함할 수 있다. 또한, 로그 이동부(603)는 로그 기록을 옮긴 후 트랜잭션 테이블(300)의 LastLSN을 수정하고, 더티 페이지 테이블(400)의 FirstRedoLog 정보와 LastRedoLog 정보를 수정하고, 로그 링크 테이블(500)의 각 정보를 수정하는 것이 가능하다.
예컨대, 도 9에서, 로그 기록이 L1부터 L8까지 8개가 존재하는 경우 로그 기록의 이동이 L1부터 L5까지 수행되었다고 가정하자. 즉 로그 기록의 이동 이후를 살펴보면, L1부터 L5까지의 로그 기록은 디스크(103)에 존재하고, L6부터 L8까지의 로그 기록은 로그 버퍼(122)에 존재하게 된다. 따라서 로그 기록 이동 후, 로그 링크 테이블(500)의 FirstUndoLogRecord는 L6을 가리키게 된다. 그리고 L6은 이전 로그 기록으로 L4를 가리키고 있었으나 이 링크가 사라지게 된다. 이러한 경우, L6의 prevLog를 초기화하고 트랜잭션 테이블(300)에서 해당 트랜잭션의 LastLSN을 L4의 LSN으로 수정하면, 이 정보를 이용하여 L6의 이전 로그 기록을 찾는 것이 가능하다.
로그 기록의 이동은 리두 로그 기록과 언두 로그 기록에 대해 각각 수행할 수 있으므로 리두 로그 기록과 언두 로그 기록에 대한 저장 영역이 분리되어 있는 경우 병렬적인 로그 기록 이동을 수행하는 것도 가능하다.
이동 대상이 되는 로그 기록은 오래된 로그 기록일수록 먼저 선택되도록 하거나, 크기를 고려하여 선택하거나, 임의로 선택하는 것이 가능하다.
도 10은 본 발명의 일 실시 예에 따른 로깅 최적화 방법을 도시한다.
도 10을 참조하면, 로그 관리부(101)는 로그 버퍼(122)에 저장되는 로그 기록을 생성한다(1001). 생성되는 로그 기록은 페이지 단위로 연결된 제 1 링크 및 트랜잭션 단위로 연결된 제 2 링크를 갖는 것이 가능하다. 예컨대, 로그 생성부(601)가 도 2와 같은 로그 기록(201)을 생성하는 것이 가능하다. 또한, 로그 관리부(101)는 로그 기록을 포함하는 리커버리 정보를 생성하는 것이 가능하다. 리커버리 정보의 예는 도 2 내지 도 5에서 설명한 것과 같다.
그리고, 로그 관리부(101)는 생성된 로그 기록 또는 생성된 리커버리 정보를 로그 버퍼(122)에 저장한다(1002). 예컨대, 로그 버퍼부(605)가 생성된 로그 기록 또는 생성된 리커버리 정보를 저장하는 것이 가능하다.
그리고, 로그 관리부(101)는 실행 중인 트랜잭션이 완료되었는지 여부를 판단한다(1003). 실행 중인 트랜잭션이 완료된 경우, 로그 관리부(101)는 로그 버퍼(122)에 저장된 로그 기록들 중에서 완료된 트랜잭션에 대응되는 언두 로그 기록을 삭제한다(1004). 예컨대, 로그 삭제부(602)가 로그 버퍼부(605)에서 해당 언두 로그 기록을 삭제하는 것이 가능하다.
그리고, 로그 관리부(101)는 페이지 기록이 실행되었는지 여부를 판단한다(1005). 페이지 기록이 실행된 경우, 로그 관리부(101)는 로그 버퍼(122)에 저장된 로그 기록들 중에서 해당 페이지에 대응되는 리두 로그 기록을 삭제한다(1006). 예컨대, 로그 삭제부(602)가 로그 버퍼부(605)에서 해당 리두 로그 기록을 삭제하는 것이 가능하다.
그리고, 로그 관리부(101)는 로그 버퍼(122)의 저장 공간이 부족한지 여부를 판단한다(1007). 만약 저장 공간이 부족한 경우, 특정 로그 기록을 로그 버퍼(122)에서 디스크(103)의 로그 저장 영역(123)으로 옮긴다(1008). 예컨대, 로그 이동부(603)가 로그 버퍼부(605)에 저장된 로그 기록을 디스크(103)의 로그 저장 영역(123)에 복사하고, 복사된 로그 기록을 로그 버퍼부(605)에서 삭제하는 것이 가능하다.
그리고, 로그 관리부(101)는 데이터 리커버리 실행이 필요한지 여부를 판단한다(1009). 데이터 리커버리 실행이 필요한 경우, 로그 관리부(101)는 리커버리 정보를 이용하여 데이터 리커버리를 실행한다(1010). 예컨대, 리커버리부(604)가 로그 기록, 더티 페이지 테이블(400), 로그 링크 테이블(500) 등을 참조하여 리두 과정을 실행하고, 로그 기록, 트랜잭션 테이블 등을 참조하여 언두 과정을 실행하는 것이 가능하다.
한편, 본 발명의 실시 예들은 컴퓨터로 읽을 수 있는 기록 매체에 컴퓨터가 읽을 수 있는 코드로 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록 매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다.
컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현하는 것을 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고 본 발명을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술 분야의 프로그래머들에 의하여 용이하게 추론될 수 있다.
이상에서 본 발명의 실시를 위한 구체적인 예를 살펴보았다. 전술한 실시 예들은 본 발명을 예시적으로 설명하기 위한 것으로 본 발명의 권리범위가 특정 실시 예에 한정되지 아니할 것이다.
도 1은 본 발명의 일 실시 예에 따른 로깅 시스템을 도시한다.
도 2는 본 발명의 일 실시 예에 따른 로그 기록을 도시한다.
도 3은 본 발명의 일 실시 예에 따른 트랜잭션 정보를 도시한다.
도 4는 본 발명의 일 실시 예에 따른 페이지 정보를 도시한다.
도 5는 본 발명의 일 실시 예에 따른 링크 정보를 도시한다.
도 6은 본 발명의 일 실시 예에 따른 로깅 최적화 장치를 도시한다.
도 7a 내지 도 7d는 본 발명의 일 실시 예에 따라 생성 및 저장되는 로그 기록을 도시한다.
도 8a 및 도 8b는 본 발명의 일 실시 예에 따라 삭제되는 로그 기록을 도시한다.
도 9는 본 발명의 일 실시 예에 따라 로그 버퍼에서 디스크로 옮겨지는 로그 기록을 도시한다.
도 10은 본 발명의 일 실시 예에 따른 로깅 최적화 방법을 도시한다.

Claims (16)

  1. 갱신 전의 로그 기록인 언두 로그 기록(Undo log record)과 갱신 후의 로그 기록인 리두 로그 기록(Redo log record)을 포함하며 리두 로그 기록을 페이지 단위로 연결하는 제 1 링크를 갖는 로그 기록(log record)을 생성하는 로그 생성부;
    비휘발성 메모리로 형성되며, 상기 생성된 로그 기록을 저장하는 로그 버퍼부; 및
    페이지 버퍼에 저장된 데이터 페이지가 디스크에 기록되면, 상기 로그 버퍼부에 저장된 로그 기록 중 상기 디스크에 기록된 데이터 페이지에 대응되고 제 1 링크를 통해 식별되는 리두 로그 기록을 삭제하는 로그 삭제부; 를 포함하는 비휘발성 메모리를 이용한 로깅 최적화 장치.
  2. 제 1 항에 있어서,
    상기 로그 기록은 언두 로그 기록을 트랜잭션 단위로 연결하는 제 2 링크를 가지며,
    상기 로그 삭제부는, 실행 중인 트랜잭션이 완료되면, 상기 로그 버퍼부에저장된 로그 기록 중 상기 완료된 트랜잭션에 대응되고 제 2 링크를 통해 식별되는 언두 로그 기록을 삭제하는 비휘발성 메모리를 이용한 로깅 최적화 장치.
  3. 제 1 항에 있어서,
    상기 로그 버퍼부의 저장 공간이 부족한 경우, 상기 로그 버퍼부에 저장된 로그 기록을 상기 디스크로 복사하고, 상기 복사된 로그 기록을 상기 로그 버퍼부 에서 삭제하는 로그 이동부; 를 더 포함하는 비휘발성 메모리를 이용한 로깅 최적화 장치.
  4. 제 3 항에 있어서,
    상기 로그 이동부는 상기 로그 기록이 생성된 순서를 나타내는 식별자를 상기 로그 기록에 부여한 후, 상기 로그 기록을 상기 디스크에 복사하는 비휘발성 메모리를 이용한 로깅 최적화 장치.
  5. 갱신 전의 로그 기록인 언두 로그 기록(Undo log record)과 갱신 후의 로그 기록인 리두 로그 기록(Redo log record)을 포함하며 리두 로그 기록을 페이지 단위로 연결하는 제 1 링크를 갖는 로그 기록(log record), 실행 중인 트랜잭션에 대한 로그 정보, 갱신 중인 페이지에 대한 로그 정보, 상기 로그 기록에 대한 링크 정보 중 적어도 1 이상을 포함하는 리커버리 정보를 생성하는 로그 생성부;
    비휘발성 메모리로 형성되며, 상기 생성된 리커버리 정보를 저장하는 로그 버퍼부; 및
    페이지 버퍼에 저장된 데이터 페이지가 디스크에 기록되면 상기 로그 버퍼부에 저장된 로그 기록 중 상기 디스크에 기록된 페이지에 대응되고 제 1 링크를 통해 식별되는 리두 로그 기록을 삭제하는 로그 삭제부; 를 포함하는 비휘발성 메모리를 이용한 로깅 최적화 장치.
  6. 제 5 항에 있어서,
    상기 로그 기록은 언두 로그 기록을 트랜잭션 단위로 연결하는 제 2 링크를 가지며,
    상기 로그 삭제부는, 상기 실행 중인 트랜잭션이 완료되면 상기 로그 버퍼부에 저장된 로그 기록 중 상기 완료된 트랜잭션에 대응되고 제 2 링크를 통해 식별되는 언두 로그 기록을 삭제하는 비휘발성 메모리를 이용한 로깅 최적화 장치.
  7. 제 5 항에 있어서,
    상기 로그 버퍼부의 저장 공간이 부족한 경우, 상기 로그 버퍼부에 저장된 로그 기록을 상기 디스크로 복사하고, 상기 복사된 로그 기록을 상기 로그 버퍼부에서 삭제하는 로그 이동부; 를 더 포함하는 비휘발성 메모리를 이용한 로깅 최적화 장치.
  8. 제 7 항에 있어서,
    상기 로그 이동부는 상기 로그 기록이 생성된 순서를 나타내는 식별자를 상기 로그 기록에 부여한 후, 상기 로그 기록을 상기 디스크에 복사하는 비휘발성 메모리를 이용한 로깅 최적화 장치.
  9. 제 5 항에 있어서,
    상기 리커버리 정보를 이용하여 데이터 리커버리를 수행하는 리커버리부; 를 더 포함하는 비휘발성 메모리를 이용한 로깅 최적화 장치.
  10. 갱신 전의 로그 기록인 언두 로그 기록(Undo log record)과 갱신 후의 로그 기록인 리두 로그 기록(Redo log record)을 포함하며 리두 로그 기록을 페이지 단위로 연결하는 제 1 링크를 갖는 로그 기록(log record)을 생성하는 단계;
    상기 생성된 로그 기록을 비휘발성 로그 버퍼에 저장하는 단계; 및
    페이지 버퍼에 저장된 데이터 페이지가 디스크에 기록되면, 상기 로그 기록 중 상기 디스크에 기록된 페이지에 대응되고 제 1 링크를 통해 식별되는 리두 로그 기록을 상기 로그 버퍼에서 삭제하는 단계; 를 포함하는 비휘발성 메모리를 이용한 로깅 최적화 방법.
  11. 제 10 항에 있어서,
    상기 로그 기록은 언두 로그 기록을 트랜잭션 단위로 연결하는 제 2 링크를 가지며,
    실행 중인 트랜잭션이 완료되면, 상기 로그 기록 중 상기 완료된 트랜잭션에 대응되고 제 2 링크를 통해 식별되는 언두 로그 기록을 상기 로그 버퍼에서 삭제하는 단계; 를 더 포함하는 비휘발성 메모리를 이용한 로깅 최적화 방법.
  12. 제 10 항에 있어서,
    상기 로그 버퍼의 저장 공간이 부족한 경우, 상기 로그 버퍼에 저장된 로그 기록을 상기 디스크로 복사하고, 상기 복사된 로그 기록을 상기 로그 버퍼에서 삭제하는 단계; 를 더 포함하는 비휘발성 메모리를 이용한 로깅 최적화 방법.
  13. 갱신 전의 로그 기록인 언두 로그 기록(Undo log record)과 갱신 후의 로그 기록인 리두 로그 기록(Redo log record)을 포함하며 리두 로그 기록을 페이지 단위로 연결하는 제 1 링크를 갖는 로그 기록(log record), 실행 중인 트랜잭션에 대한 로그 정보, 갱신 중인 페이지에 대한 로그 정보, 상기 로그 기록에 대한 링크 정보 중 적어도 1 이상을 포함하는 리커버리 정보를 생성하는 단계;
    상기 생성된 리커버리 정보를 비휘발성 로그 버퍼에 저장하는 단계; 및
    페이지 버퍼에 저장된 데이터 페이지가 디스크에 기록되면 상기 로그 기록 중 상기 디스크에 기록된 페이지에 대응되고 제 1 링크를 통해 식별되는 리두 로그 기록을 상기 로그 버퍼에서 삭제하는 단계; 를 포함하는 비휘발성 메모리를 이용한 로깅 최적화 방법.
  14. 제 13 항에 있어서,
    상기 로그 기록은 언두 로그 기록을 트랜잭션 단위로 연결하는 제 2 링크를 가지며,
    상기 실행 중인 트랜잭션이 완료되면 상기 로그 기록 중 상기 완료된 트랜잭션에 대응되고 제 2 링크를 통해 식별되는 언두 로그 기록을 상기 로그 버퍼에서 삭제하는 단계; 를 더 포함하는 비휘발성 메모리를 이용한 로깅 최적화 방법.
  15. 제 14 항에 있어서,
    상기 로그 버퍼의 저장 공간이 부족한 경우, 상기 로그 버퍼에 저장된 로그 기록을 상기 디스크로 복사하고, 상기 복사된 로그 기록을 상기 로그 버퍼에서 삭제하는 단계; 를 더 포함하는 비휘발성 메모리를 이용한 로깅 최적화 방법.
  16. 제 13 항에 있어서,
    상기 리커버리 정보를 이용하여 데이터 리커버리를 수행하는 단계; 를 더 포함하는 비휘발성 메모리를 이용한 로깅 최적화 방법.
KR1020090089778A 2009-09-22 2009-09-22 비휘발성 메모리를 이용한 로깅 최적화 장치 및 방법 KR101644125B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020090089778A KR101644125B1 (ko) 2009-09-22 2009-09-22 비휘발성 메모리를 이용한 로깅 최적화 장치 및 방법
US12/839,509 US8856469B2 (en) 2009-09-22 2010-07-20 Apparatus and method for logging optimization using non-volatile memory

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090089778A KR101644125B1 (ko) 2009-09-22 2009-09-22 비휘발성 메모리를 이용한 로깅 최적화 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20110032343A KR20110032343A (ko) 2011-03-30
KR101644125B1 true KR101644125B1 (ko) 2016-07-29

Family

ID=43757605

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090089778A KR101644125B1 (ko) 2009-09-22 2009-09-22 비휘발성 메모리를 이용한 로깅 최적화 장치 및 방법

Country Status (2)

Country Link
US (1) US8856469B2 (ko)
KR (1) KR101644125B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023196053A1 (en) * 2022-04-08 2023-10-12 Micron Technology, Inc. Fine grained resource management for rollback memory operations

Families Citing this family (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101490327B1 (ko) 2006-12-06 2015-02-05 퓨전-아이오, 인크. 뱅크 인터리브를 이용한 솔리드-스테이트 스토리지의 명령 관리 장치, 시스템 및 방법
US7836226B2 (en) 2007-12-06 2010-11-16 Fusion-Io, Inc. Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment
US9519540B2 (en) 2007-12-06 2016-12-13 Sandisk Technologies Llc Apparatus, system, and method for destaging cached data
US9141527B2 (en) 2011-02-25 2015-09-22 Intelligent Intellectual Property Holdings 2 Llc Managing cache pools
US8924398B2 (en) * 2011-03-23 2014-12-30 Bmc Software, Inc. Log-based DDL generation
US10949415B2 (en) * 2011-03-31 2021-03-16 International Business Machines Corporation Logging system using persistent memory
US8725782B2 (en) * 2011-04-25 2014-05-13 Microsoft Corporation Virtual disk storage techniques
WO2013039494A1 (en) * 2011-09-14 2013-03-21 Hewlett-Packard Development Company, L.P. Imparting durability to a transactional memory system
US9251086B2 (en) 2012-01-24 2016-02-02 SanDisk Technologies, Inc. Apparatus, system, and method for managing a cache
CN103309767B (zh) * 2012-03-08 2016-01-13 阿里巴巴集团控股有限公司 一种客户端日志处理方法和装置
US9075758B2 (en) 2012-03-19 2015-07-07 Samsung Electronics Co., Ltd. Removable storage device with transactional operation support and system including same
US9699263B1 (en) 2012-08-17 2017-07-04 Sandisk Technologies Llc. Automatic read and write acceleration of data accessed by virtual machines
US9053024B2 (en) * 2012-11-30 2015-06-09 Hewlett-Packard Development Company, L. P. Transactions and failure
US9612948B2 (en) 2012-12-27 2017-04-04 Sandisk Technologies Llc Reads and writes between a contiguous data block and noncontiguous sets of logical address blocks in a persistent storage device
US9477558B2 (en) * 2013-03-08 2016-10-25 Intel Corporation Hardware supported memory logging
US9870830B1 (en) 2013-03-14 2018-01-16 Sandisk Technologies Llc Optimal multilevel sensing for reading data from a storage medium
US9639463B1 (en) 2013-08-26 2017-05-02 Sandisk Technologies Llc Heuristic aware garbage collection scheme in storage systems
US9703816B2 (en) * 2013-11-19 2017-07-11 Sandisk Technologies Llc Method and system for forward reference logging in a persistent datastore
US9520197B2 (en) 2013-11-22 2016-12-13 Sandisk Technologies Llc Adaptive erase of a storage device
US9520162B2 (en) 2013-11-27 2016-12-13 Sandisk Technologies Llc DIMM device controller supervisor
US9582058B2 (en) 2013-11-29 2017-02-28 Sandisk Technologies Llc Power inrush management of storage devices
US9535853B2 (en) 2013-12-30 2017-01-03 International Business Machines Corporation Building an undo log for in-memory blocks of data
US9703636B2 (en) 2014-03-01 2017-07-11 Sandisk Technologies Llc Firmware reversion trigger and control
US9626400B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Compaction of information in tiered data structure
US9626399B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Conditional updates for reducing frequency of data modification operations
US9697267B2 (en) 2014-04-03 2017-07-04 Sandisk Technologies Llc Methods and systems for performing efficient snapshots in tiered data structures
US10656842B2 (en) 2014-05-30 2020-05-19 Sandisk Technologies Llc Using history of I/O sizes and I/O sequences to trigger coalesced writes in a non-volatile storage device
US9703491B2 (en) 2014-05-30 2017-07-11 Sandisk Technologies Llc Using history of unaligned writes to cache data and avoid read-modify-writes in a non-volatile storage device
US10372613B2 (en) 2014-05-30 2019-08-06 Sandisk Technologies Llc Using sub-region I/O history to cache repeatedly accessed sub-regions in a non-volatile storage device
US10162748B2 (en) 2014-05-30 2018-12-25 Sandisk Technologies Llc Prioritizing garbage collection and block allocation based on I/O history for logical address regions
US10146448B2 (en) 2014-05-30 2018-12-04 Sandisk Technologies Llc Using history of I/O sequences to trigger cached read ahead in a non-volatile storage device
US10114557B2 (en) 2014-05-30 2018-10-30 Sandisk Technologies Llc Identification of hot regions to enhance performance and endurance of a non-volatile storage device
US10656840B2 (en) 2014-05-30 2020-05-19 Sandisk Technologies Llc Real-time I/O pattern recognition to enhance performance and endurance of a storage device
US9652381B2 (en) 2014-06-19 2017-05-16 Sandisk Technologies Llc Sub-block garbage collection
US9870378B2 (en) 2014-11-18 2018-01-16 International Business Machines Corporation Read and delete input/output operation for database management
US10013346B2 (en) 2015-11-17 2018-07-03 Western Digital Technologies, Inc. Method of decreasing write amplification of NAND flash using a journal approach
KR102517129B1 (ko) 2015-11-19 2023-04-04 에스케이하이닉스 주식회사 메모리 시스템 및 그의 동작방법
US9747174B2 (en) 2015-12-11 2017-08-29 Microsoft Technology Licensing, Llc Tail of logs in persistent main memory
US9965538B2 (en) 2016-01-19 2018-05-08 Microsoft Technology Licensing, Llc Early thread return with secondary event writes
US10140150B2 (en) 2016-02-08 2018-11-27 Microsoft Technology Licensing, Llc Thread diversion awaiting log call return
US20170235781A1 (en) * 2016-02-16 2017-08-17 TmaxData Co., Ltd. Method, server and computer program stored in computer readable medium for managing log data in database
US10635417B2 (en) * 2018-06-12 2020-04-28 Intel Corporation Techniques for compiler sheltered non-volatile memory stores
US10409511B1 (en) 2018-06-30 2019-09-10 Western Digital Technologies, Inc. Multi-device storage system with distributed read/write processing
US10725941B2 (en) * 2018-06-30 2020-07-28 Western Digital Technologies, Inc. Multi-device storage system with hosted services on peer storage devices
US10592144B2 (en) 2018-08-03 2020-03-17 Western Digital Technologies, Inc. Storage system fabric with multichannel compute complex
US11397749B2 (en) * 2019-05-14 2022-07-26 International Business Machines Corporation Asynchronous replication of in-scope table data
KR20210066183A (ko) 2019-11-28 2021-06-07 한국전자통신연구원 비휘발성 메모리의 효율적인 관리 방법 및 이를 위한 장치
US20210342317A1 (en) * 2020-04-29 2021-11-04 Oracle International Corporation Techniques for efficient migration of key-value data
US11593309B2 (en) * 2020-11-05 2023-02-28 International Business Machines Corporation Reliable delivery of event notifications from a distributed file system
US20240028259A1 (en) * 2022-07-21 2024-01-25 Micron Technology, Inc. Buffer allocation for reducing block transit penalty

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050005191A1 (en) * 2003-06-11 2005-01-06 International Business Machines Corp. System and method for detecting write errors in a storage device

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69126066T2 (de) 1990-06-29 1997-09-25 Oracle Corp Verfahren und Gerät zur Optimierung des Logbuchaufhebungsgebrauchs
US5951695A (en) * 1997-07-25 1999-09-14 Hewlett-Packard Company Fast database failover
US7555500B2 (en) * 2001-02-15 2009-06-30 Teradata Us, Inc. Optimized end transaction processing
US6981004B2 (en) * 2002-09-16 2005-12-27 Oracle International Corporation Method and mechanism for implementing in-memory transaction logging records
US20060206538A1 (en) * 2005-03-09 2006-09-14 Veazey Judson E System for performing log writes in a database management system
US7653836B1 (en) * 2005-06-10 2010-01-26 American Megatrends, Inc Logging metadata modifications in a data storage system
KR100900189B1 (ko) 2007-04-30 2009-06-02 재단법인서울대학교산학협력재단 비휘발성 메모리 기반의 데이터베이스 관리 시스템 및 방법
KR100929371B1 (ko) * 2009-03-18 2009-12-02 한국과학기술원 페이지-디퍼런셜을 이용하여 dbms에 독립적인 방법으로 플래시 메모리에 데이터를 저장하는 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050005191A1 (en) * 2003-06-11 2005-01-06 International Business Machines Corp. System and method for detecting write errors in a storage device

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023196053A1 (en) * 2022-04-08 2023-10-12 Micron Technology, Inc. Fine grained resource management for rollback memory operations

Also Published As

Publication number Publication date
US8856469B2 (en) 2014-10-07
KR20110032343A (ko) 2011-03-30
US20110072207A1 (en) 2011-03-24

Similar Documents

Publication Publication Date Title
KR101644125B1 (ko) 비휘발성 메모리를 이용한 로깅 최적화 장치 및 방법
CA2279119C (en) Heuristic-based conditional data indexing
US8874515B2 (en) Low level object version tracking using non-volatile memory write generations
CN103744961B (zh) 用可重构的文件系统目录树提高非易失性存储寿命的方法
KR101994491B1 (ko) 데이터 중복제거를 위한 백업 및 복원 전략
CN103229147B (zh) 用于去重存储系统内的合成备份的方法和系统
US20190073277A1 (en) Transaction Recovery Method in Database System, and Database Management System
US7844643B2 (en) Storage management system with integrated continuous data protection and remote copy
US8560500B2 (en) Method and system for removing rows from directory tables
US20130080720A1 (en) Information processing apparatus and method
US11416350B2 (en) Recovery of in-memory databases from log records
CN104239443B (zh) 一种序列化数据操作日志的存储方法
CN103412803A (zh) 数据恢复的方法及装置
CN102541691B (zh) 面向内存数据库oltp应用的日志检查点恢复方法
US20220335028A1 (en) Data access method, a data access control device, and a data access system
US8051054B2 (en) Method and system for data processing with database update for the same
US11841801B2 (en) Metadata management in non-volatile memory devices using in-memory journal
KR20110046118A (ko) 적응적 로깅 장치 및 방법
JP2008040699A (ja) Hsm制御プログラム、hsm制御装置、hsm制御方法
JP2008033527A (ja) ストレージ装置、ディスク装置及びデータ復元方法
KR100501414B1 (ko) 파일 시스템의 메타 데이터 회복을 위한 로깅과 회복 방법및 장치
US20230044942A1 (en) Conditional update, delayed lookup
US11733924B1 (en) Method for discarding garbage collection data during power loss
US11650759B2 (en) Method and apparatus of managing a non-volatile memory using an in-memory journal
EP3944101B1 (en) Information processing program, information processing method, and information processing device

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: 20190619

Year of fee payment: 4