서론

AWS RDS에서 MSSQL을 사용하면서 버퍼 캐시를 비우기 위해

DBCC DROPCLEANBUFFERS 를 쓰고자 했는데

sysadmin 권한이 없다고 튕겨냈다.

 

나는 분명 마스터 계정으로 하고 있는데 ..?

sysadmin을 가지고 싶어서 여러 방면으로 찾아보았으나 결론은 방법이 없음. 이다.

 

MSSQL은 허락된 메모리를 꽉 채울때까지 메모리를 free하지 않아

캐시를 비워주지 않거나 제한을 걸지 않으면 매번 인스턴스의 메모리가 별로 남지 않았다는 경고창이 뜨기에 해결방법이 필요했다.

Amazone docs

무엇이든 다 나와있는 아마존 docs를 찾아보면 마스터 계정에 왜 sysadmin이 없는지 볼 수 있는데

https://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/CHAP_SQLServer.html

rds에서 애초에 sysadmin역할을 주지 않는다

 

저 역할들은 아마존 자체에서 관리해주기 때문에

개발자가 명령어를 이용해 관리를 하지 못하도록 막아놓은 것으로 보인다.

그럼 어떻게 관리해?

아마존에서는 위 기능을 사용자가 직접하지 않고

파라미터 그룹을 통해 값을 변경해두면 rds에서 그 값에 따라 관리를 하도록 하고 있다.

 

파라미터 그룹은

아마존 콘솔 - rds - 파라미터 그룹 에서 생성 할 수 있고

생성한 파라미터 그룹에 원하는 값만 변경하여 (default는 변경 불가, 새로 하나 만들자)

본인의 rds 인스턴스에 파라미터 그룹을 붙여 주면 된다.

 

일부 설정은 인스턴스 재부팅이 필요할 수 있다.

https://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/Overview.DBInstance.Modifying.html

위 링크를 참고 하자

 

캐시는 어떻게 비워

그럼 다시 처음으로 돌아와서 캐시는 어떻게 비울까

docs에 정확히 명시되어 있지는 않지만

캐시를 비우고자 하면 재부팅을 통해 비우라 하고 있다.

 

사실 메모리 할당량만 조절하고 메모리의 관리는 mssql에 맡기는 것이 쿼리 성능에도 효율적이니

따로 캐시를 비우는 것을 권장하지 않고 지원하지 않는 것이 아닐까 생각한다.

 

만일 캐시를 비우는 기능이 꼭 필요하다면 인스턴스 재부팅을 통해 메모리를 비워주도록 하자

+ Recent posts