Microsoft®는 SQLServer® 2019(미리 보기) CTP 2.1에 하이브리드 버퍼 풀이라는 새로운 기능을 도입했습니다. 이 기능을 사용하면 영구 메모리(PMEM) 장치에 저장된 데이터베이스 파일의 데이터 페이지에 직접 액세스할 수 있습니다.
PMEM이란 무엇입니까?
PMEM은 메모리 버스에 상주하는 솔리드 스테이트 고성능 바이트 주소 지정 메모리 장치입니다. 다른 저장 장치에 비해 많은 이점이 있습니다.
PMEM의 주요 이점은 다음과 같습니다.
- 플래시 솔리드 스테이트 드라이브(SSD)에 비해 대기 시간 없이 대용량 데이터 세트에 대해 더 빠르고 실시간에 가까운 데이터 액세스를 제공합니다.
- 플래시 스토리지보다 처리량이 증가합니다.
- DRAM(Dynamic Random Access Memory)보다 저렴합니다.
- 캐시 가능합니다. 이는 CPU(중앙 처리 장치)에서 캐시할 수 없는 PCIe(Peripheral ComponentInterconnect)에 비해 큰 이점입니다.
- 전원이 차단되거나 종료된 후에도 데이터를 메모리에 유지합니다.
사물 인터넷(IoT) 애플리케이션, 사이버 위협 분석, 금융 거래 등과 같이 방대한 양의 데이터로 더 빠른 데이터 액세스가 필요한 애플리케이션의 지연 시간을 줄이기 위해 다양한 방법으로 PMEM을 사용할 수 있습니다.
개념
버퍼 풀 확장 기능에는 다음 용어가 적용됩니다.
-
솔리드 스테이트 드라이브(SSD) :지속적으로 메모리(RAM)에 데이터를 저장합니다.
-
버퍼 참고 SQL Server에서 버퍼는 데이터 또는 인덱스 페이지와 같은 크기의 메모리에 있는 8KB 페이지입니다. 따라서 버퍼 캐시는 8KB 페이지로 나뉩니다. Apage는 버퍼 관리자가 더 많은 데이터를 읽기 위해 버퍼 영역이 필요할 때까지 버퍼 캐시에 남아 있습니다. 데이터는 수정된 경우에만 디스크에 다시 기록됩니다. 이러한 메모리 내 수정된 페이지를 더티 페이지라고 합니다. 페이지는 디스크의 데이터베이스 이미지와 동일할 때 깨끗한 것입니다. 버퍼 캐시의 데이터는 디스크에 다시 쓰기 전에 여러 번 수정할 수 있습니다.
-
버퍼 풀 :버퍼 캐시라고도 하는 버퍼 풀은 캐시된 데이터 페이지에 대해 모든 데이터베이스가 공유하는 전역 리소스입니다. 버퍼 풀 캐시의 최대 및 최소 크기는 시작 시 또는 sp_configure를 사용하여 SQL Server의 인스턴스를 동적으로 재구성할 때 결정됩니다. 이 크기는 실행 중인 인스턴스에서 언제든지 버퍼 풀에 캐시될 수 있는 최대 페이지 수를 결정합니다. 버퍼 풀 확장에 의해 커밋될 수 있는 최대 메모리는 상당한 메모리 압력을 생성하는 경우 시스템에서 실행 중인 다른 응용 프로그램에 의해 제한될 수 있습니다.
-
검문소 참고:검사점은 데이터베이스 엔진이 예기치 않은 종료 또는 충돌 후 복구하는 동안 트랜잭션 로그에 포함된 변경 사항을 적용하기 시작할 수 있는 알려진 양호한 지점을 만듭니다. 체크포인트는 더티 페이지와 트랜잭션 로그 정보를 메모리에서 디스크로 기록하고 트랜잭션 로그에 대한 정보도 기록합니다.
-
직접 액세스(DAX) :DAX는 메모리처럼 작동하여 대기 시간을 최소화합니다. 앱이 스택을 우회하여 영구 메모리를 직접 수정합니다. 이 옵션은 NTFS에서만 사용할 수 있습니다.
다음 이미지는 DAX를 보여줍니다.
출처 :https://docs.microsoft.com/en-us/windows-server/storage/storage-spaces/deploy-pmem
하이브리드 버퍼 풀이란 무엇입니까?
기존 시스템에서 SQL Server는 DRAM 기반 버퍼 풀에 데이터 페이지를 캐시합니다. 하이브리드 버퍼 풀을 사용하면 SQL Server는 페이지를 버퍼 풀의 DRAM 기반 부분으로 복사하는 것을 건너뛰고 대신 PMEM 장치에 있는 데이터베이스 파일에서 직접 페이지를 참조합니다. 시스템은 메모리 매핑된 I/O를 사용하여 하이브리드 버퍼 풀용 PMEM의 데이터 파일에 액세스합니다. 이는 SQL Server 내의 데이터 파일 인식이라고도 합니다.
이 프로세스는 페이지가 DRAM으로 복사되는 것을 방지하고 운영 체제의 I/O 스택이 영구 저장소의 페이지에 액세스할 필요가 없도록 함으로써 성능상의 이점을 제공합니다.
시스템은 PMEM 장치의 클린 페이지에만 직접 액세스할 수 있습니다. 페이지가 더러워지면 시스템은 이를 DRAM 기반 버퍼 풀에 복사한 다음 PMEM 장치에 다시 씁니다. 이 프로세스는 일반 체크포인트 작업 중에 발생합니다.
하이브리드 버퍼 풀 기능은 Windows® 및 Linux® 모두에서 사용할 수 있습니다. PMEM 장치는 DirectAccess(DAX)를 지원하는 파일 시스템으로 포맷해야 합니다. DAX는 다음 파일 시스템을 지원합니다.
- 확장 파일 시스템(XFS)
- EXT4
- 신기술 파일 시스템(NTFS)
SQL Server는 데이터 파일이 적절하게 포맷된 PMEM 장치에 있는지 여부를 자동으로 감지하고 사용자 공간에서 메모리 매핑을 수행합니다. 이 매핑은 시작 시, 새 데이터베이스가 연결, 복원 또는 생성될 때 그리고 데이터베이스에 대해 하이브리드 버퍼 풀 기능이 활성화될 때 발생합니다.
하이브리드 버퍼 풀 활성화
SQL Server 2019에는 하이브리드 버퍼 풀을 제어하는 DDL(동적 데이터 언어)이 도입되었습니다. 다음 예에서는 SQLServer 인스턴스에 대해 하이브리드 버퍼 풀을 활성화합니다.
ALTER SERVER CONFIGURATION SET MEMORY_OPTIMIZED HYBRID_BUFFER_POOL = ON;
기본적으로 하이브리드 버퍼 풀은 인스턴스 범위에서 비활성화되도록 설정됩니다.
참고 :설정 변경 사항을 적용하려면 SQL Server 인스턴스를 다시 시작해야 합니다. 다시 시작하면 서버의 총 PMEM 용량을 설명하기에 충분한 해시 페이지를 쉽게 할당할 수 있습니다.
다음 예에서는 특정 데이터베이스에 대해 하이브리드 버퍼 풀을 활성화합니다.
ALTER DATABASE <databaseName> SET MEMORY_OPTIMIZED = ON;
기본적으로 하이브리드 버퍼 풀은 데이터베이스 범위에서 활성화되도록 설정됩니다.
하이브리드 버퍼 풀 비활성화
다음 예에서는 SQL Server 인스턴스에 대한 하이브리드 버퍼 풀을 비활성화합니다.
ALTER SERVER CONFIGURATION SET MEMORY_OPTIMIZED HYBRID_BUFFER_POOL = OFF;
기본적으로 하이브리드 버퍼 풀은 인스턴스 범위에서 비활성화되도록 설정됩니다.
참고 :설정 변경 사항을 적용하려면 SQL Server 인스턴스를 다시 시작해야 합니다. 다시 시작하면 서버의 PMEM 용량을 고려할 필요가 없기 때문에 해시 페이지가 과도하게 할당되는 것을 방지할 수 있습니다.
다음 예는 특정 데이터베이스에 대한 하이브리드 버퍼 풀을 비활성화합니다.
ALTER DATABASE <databaseName> SET MEMORY_OPTIMIZED = OFF;
기본적으로 하이브리드 버퍼 풀은 데이터베이스 범위에서 활성화되도록 설정됩니다.
하이브리드 버퍼 풀 구성 보기
다음 예는 SQL Server 인스턴스에 대한 하이브리드 버퍼 풀 시스템 구성의 현재 상태를 반환합니다.
SELECT * FROM sys.configurations WHERE name = 'hybrid_buffer_pool';
다음 예는 두 개의 테이블을 반환합니다.
SELECT * FROM sys.configurations WHERE name = 'hybrid_buffer_pool';
SELECT name, is_memory_optimized_enabled FROM sys.databases;
- 첫 번째 표는 SQL Server 인스턴스에 대한 하이브리드 버퍼 풀 시스템 구성의 현재 상태를 보여줍니다.
- 두 번째 표는 데이터베이스와 하이브리드 버퍼 풀에 대한 데이터베이스 수준 설정을 나열합니다.
하이브리드 버퍼 풀의 모범 사례
RAM이 16GB 미만인 인스턴스에서는 하이브리드 버퍼 풀을 활성화하지 않는 것이 좋습니다.
Windows에서 PMEM 장치를 포맷할 때 NTFS에 사용할 수 있는 가장 큰 할당 단위 크기(Windows Server® 2019의 경우 2MB)를 사용하고 장치가 DAX용으로 포맷되었는지 확인하십시오. 파일 크기는 2MB의 배수여야 합니다(모듈로 2MB는 0과 같아야 함).
하이브리드 버퍼 풀에 대한 서버 범위 설정이 비활성화로 설정된 경우 하이브리드 버퍼 풀은 사용자 데이터베이스에서 사용되지 않습니다.
하이브리드 버퍼 풀에 대한 서버 범위 설정이 활성화된 경우 해당 사용자 데이터베이스에 대해 데이터베이스 범위 수준에서 하이브리드 버퍼 풀을 비활성화하여 개별 사용자 데이터베이스에 대한 하이브리드 버퍼 풀 사용을 비활성화할 수 있습니다.
결론
하이브리드 버퍼 풀을 사용하면 PMEM 장치에 저장된 데이터베이스 데이터 페이지에 직접 액세스할 수 있습니다. 페이지를 DRAM에 복사할 필요가 없고 운영 체제의 I/O 스택이 영구 저장소의 페이지에 액세스할 필요가 없기 때문에 시스템 성능이 향상됩니다.
자세한 내용은 다음 문서를 참조하십시오.
Microsoft, 최신 SQL Server 2019 미리 보기 및 Azure SQL 개선 사항에 대해 설명합니다.하이브리드 버퍼 풀
피드백 탭을 사용하여 의견을 남기거나 질문하십시오.
전문가 관리, 관리 및 구성으로 환경 최적화
Rackspace의 애플리케이션 서비스(RAS) 전문가는 광범위한 애플리케이션 포트폴리오에서 다음과 같은 전문적이고 관리되는 서비스를 제공합니다.
- 전자상거래 및 디지털 경험 플랫폼
- 전사적 자원 관리(ERP)
- 비즈니스 인텔리전스
- Salesforce CRM(고객 관계 관리)
- 데이터베이스
- 이메일 호스팅 및 생산성
우리는 다음을 제공합니다:
- 편향 없는 전문성 :즉각적인 가치를 제공하는 기능에 중점을 두고 현대화 여정을 간소화하고 안내합니다.
- 광신적인 경험 ™:프로세스를 먼저 결합합니다. 기술 두 번째.®전담 기술 지원을 통해 포괄적인 솔루션을 제공하는 접근 방식.
- 타의 추종을 불허하는 포트폴리오 :광범위한 클라우드 경험을 적용하여 올바른 클라우드에서 올바른 기술을 선택하고 배포할 수 있도록 지원합니다.
- 민첩한 전달 :귀하의 여정에서 귀하를 만나고 귀하의 성공에 맞춰 귀하의 성공을 맞춥니다.
시작하려면 지금 채팅하세요.