Azure SQL Managed Instance에서 메모리 내 OLTP 스토리지 모니터링

적용 대상:Azure SQL Managed Instance

메모리 내 OLTP를 사용하면 메모리 최적화 테이블 및 테이블 변수의 데이터가 메모리 내 OLTP 스토리지에 상주합니다.

데이터가 메모리 내 OLTP 스토리지 최대값에 맞는지 확인

중요 비즈니스용 서비스 계층에는 vCore 수에 따라 결정되는 특정 양의 최대 메모리 내 OLTP 메모리가 포함됩니다.

메모리 최적화 테이블에 대한 메모리 요구 사항 예측은 Azure SQL Managed Instance에서와 동일한 방식으로 SQL Server에서도 작동합니다. 메모리 요구 사항 예측을 검토하는 데 몇 분 정도 걸립니다.

테이블 및 테이블 변수 행뿐만 아니라 인덱스가 최대 사용자 데이터 크기를 계산합니다. 또한 ALTER TABLE에는 전체 테이블 및 해당 인덱스의 새 버전을 생성할 수 있는 충분한 공간이 필요합니다.

이 한도를 초과하면 삽입 및 업데이트 작업이 실패할 수 있습니다(오류 41823).

메모리 부족 OLTP 스토리지 상황 수정 - 오류 41823

데이터베이스에서 메모리 내 OLTP 스토리지 최대값에 도달하면 오류 41823으로 인해 INSERT, UPDATE, ALTER 및 CREATE 작업이 실패합니다. 이 오류로 활성 트랜잭션이 중단될 수 있습니다.

오류 41823은 인스턴스의 메모리 최적화 테이블 및 테이블 변수가 최대 메모리 내 OLTP 스토리지 크기에 도달했음을 나타냅니다.

이 오류를 해결하려면 다음을 수행합니다.

  • 잠재적으로 데이터를 기존의 디스크 기반 테이블에 오프로드딩하여 메모리 최적화 테이블에서 데이터를 삭제합니다. 또는
  • vCore 수를 업그레이드하면 메모리 최적화 테이블에서 유지해야 하는 데이터의 메모리 내 스토리지가 추가됩니다.

참고 항목

드문 경우이지만 오류 41823은 일시적일 수 있습니다. 즉, 사용 가능한 메모리 내 OLTP 스토리지가 충분하면 작업을 다시 시도했을 때 성공할 수 있습니다. 따라서 사용 가능한 전체 메모리 내 OLTP 스토리지를 모니터링한 후에 오류 41823이 처음 발생했을 때 다시 시도하는 것이 좋습니다. 다시 시도 논리에 대한 자세한 내용은 메모리 내 OLTP를 통해 충돌 검색 및 다시 시도 논리를 참조하세요.

DMV로 모니터링

  • 메모리 사용량을 주기적으로 모니터링하여 메모리 사용량이 증가하는 방식과 리소스 한도까지 남은 여유 공간 크기를 확인할 수 있습니다. 데이터베이스 또는 인스턴스의 개체에서 사용 중인 메모리 크기를 식별합니다. 예를 들어 DMV의 sys.dm_db_xtp_table_memory_stats 또는 sys.dm_os_memory_clerks가 이에 해당합니다.

    • sys.dm_db_xtp_table_memory_stats를 쿼리하여 모든 사용자 테이블, 인덱스 및 시스템 개체에 대한 메모리 사용량을 확인할 수 있습니다.

      SELECT object_name(object_id) AS [Name], *  
         FROM sys.dm_db_xtp_table_memory_stats;
      
    • 메모리 내 OLTP 엔진 및 메모리 최적화 개체에 할당된 메모리는 데이터베이스 내 다른 메모리 소비자와 동일한 방식으로 관리됩니다. MEMORYCLERK_XTP 유형의 메모리 클럭은 메모리 내 OLTP 엔진에 할당된 모든 메모리를 고려합니다. sys.dm_os_memory_clerks에서 다음 쿼리를 사용하여 특정 데이터베이스 전용 메모리를 포함하여 메모리 내 OLTP 엔진에서 사용한 모든 메모리를 찾습니다.

      -- This DMV accounts for all memory used by the in-memory engine  
      SELECT [type], [name]
           , memory_node_id  
           , pages_kb/1024 AS pages_MB   
      FROM sys.dm_os_memory_clerks 
      WHERE [type] LIKE '%xtp%';
      
      type                 name       memory_node_id pages_MB  
      -------------------- ---------- -------------- --------------------  
      MEMORYCLERK_XTP      Default    0              18  
      MEMORYCLERK_XTP      DB_ID_5    0              1358  
      MEMORYCLERK_XTP      Default    64             0  
      
    
    
  • 동적 관리 뷰 sys.dm_os_out_of_memory_events를 사용하여 Azure SQL Managed Instance의 메모리 부족 오류에 대한 자세한 정보를 확인할 수도 있습니다. 예시:

    SELECT * FROM sys.dm_os_out_of_memory_events ORDER BY event_time DESC;
    

    자세한 내용은 메모리 내 OLTP 메모리 사용량 모니터링 및 문제 해결을 참조하세요.