Snowflake는 Cloud based Data Warehouse입니다. 기존에 Oracle이나 MS SQL Server와는 달리 Index도 없고 따로 관리할 디스크나 CPU 및 Memory도 없습니다. 즉, 일체형 PC랑 비슷하다고나 할까요? Snowflake는 SaaS(Software as a Service)이기때문에 모든게 안에 포함되어 있습니다.
Snowflake의 Virtual Warehouse는 CPU 및 Memory 역할을 하고, 데이터는 Snowflake에 연결된 Cloud Storage로 저장되기 때문에 따로 관리할 필요가 없습니다. 사용한만큼만 Pay하면 되지요.
가장 큰 비용은 Virtual Warehouse의 사용료일텐데요, 최소한으로 사용하는 것이 아끼는 것일테고, 최소한으로 사용하기 위해서는 Snowflake를 어떻게 효율적으로 사용해야할지를 알아야 할 것 입니다.
이번 포스팅에서는 Snowflake의 Caching mechanism을 알아보도록 하겠습니다.
Snowflake에는 위 그림과 같이 크게 3가지의 Cache 영역이 존재합니다.
(1) Metadata : 테이블에 대한 MAX 값, MIN 값, Average 값 등이 데이터에 해당되며 Cloud Services 영역에 저장됩니다.
(2) Query Result : 한번 수행한 쿼리에 대한 결과 데이터가 저장되는 영역이며 역시 Cloud Services 영역에 저장됩니다. 결과 데이터는 쿼리를 실행한 시간으로부터 최근 24시간동안만 보관되며, 쿼리가 다시 실행되면 24시간의 시간은 다시 리셋되어 24시간이 다시 흐르게 되는 방식입니다. 쿼리가 조금이라도 달라지면 다른 쿼리로 인식됩니다.
(3) Warehouse Data Cache : 쿼리가 수행될 때마다 읽어들인 데이터를 보관하는 Cache 영역이며, 해당 Virtual warehouse가 suspend될 경우 초기화되므로 auto suspend time을 너무 짧게 설정하면 비효율적일 수 있습니다.