구글 스프레드시트는 웹 기반 도구이기 때문에 데이터 양이 많아질수록 브라우저의 메모리 점유율이 높아지고 계산 속도가 급격히 느려지는 현상이 발생합니다. 특히 수천 행 이상의 데이터를 다루거나 복잡한 배열 수식을 사용할 때 '응답 없음' 메시지가 뜨거나 화면이 멈추는 경험을 한 번쯤 해보셨을 것입니다.
이러한 문제는 단순히 인터넷 속도의 문제가 아니라 스프레드시트의 연산 구조와 브라우저 리소스 관리 방식에서 기인합니다. 본 포스팅에서는 대용량 데이터를 다룰 때 발생하는 렉을 획기적으로 줄이고 업무 효율을 높일 수 있는 구체적인 최적화 설정법을 단계별로 안내해 드립니다.
|
[핵심 요약] 1. 과도한 조건부 서식과 휘발성 함수(INDIRECT, OFFSET)를 제거하여 연산 부하를 줄입니다. 2. 불필요한 빈 행과 열을 삭제하여 시트의 전체 셀 개수를 최소화합니다. 3. 계산 설정을 '변경 시'에서 '수동' 또는 '시간별'로 조정하거나, 정적 값으로 변환하는 습관을 갖습니다. 4. 브라우저 하드웨어 가속 설정을 확인하고 확장 프로그램을 정리하여 메모리 여유를 확보합니다. |
문제 원인
구글 스프레드시트가 느려지는 이유는 크게 4가지로 요약할 수 있습니다.
- 과도한 전체 셀 개수: 사용하지 않는 수만 개의 빈 행과 열이 포함되어 있으면 시트를 로드할 때마다 모든 셀을 검사하므로 속도가 저하됩니다.
- 휘발성 함수 사용:
NOW(),TODAY(),RAND(),OFFSET(),INDIRECT()와 같은 함수는 시트 내의 작은 변화만 있어도 전체 재계산을 유발합니다. - 무거운 조건부 서식: 특정 범위 전체에 적용된 조건부 서식은 화면을 스크롤할 때마다 실시간으로 연산을 수행하여 화면 끊김을 유발합니다.
- 배열 수식(ArrayFormula)의 오남용: 편리하지만 데이터가 많을 경우 연산 경로가 복잡해져 브라우저 메모리를 대량으로 소비합니다.
해결 방법 1: 불필요한 셀 및 데이터 정리
시트의 크기 자체가 클수록 모든 동작이 느려집니다. 가장 먼저 물리적인 용량을 줄여야 합니다.
1. 빈 행/열 삭제: 데이터가 끝나는 지점 아래의 모든 빈 행을 선택(Ctrl + Shift + 아래 화살표)한 뒤 마우스 우클릭하여 [행 삭제]를 클릭합니다. 열도 마찬가지로 작업합니다.
2. 수식을 값으로 변환: 계산이 완료된 과거 데이터는 수식으로 남겨둘 필요가 없습니다. 해당 범위를 복사(Ctrl + C)한 뒤 [선택하여 붙여넣기] -> [값만 붙여넣기]를 실행하여 정적 데이터로 만듭니다.
3. 조건부 서식 최적화: [서식] > [조건부 서식] 메뉴를 열어 중복되거나 불필요하게 넓은 범위에 적용된 규칙을 삭제합니다.
해결 방법 2: 효율적인 함수 설계로 변경
연산 방식을 바꾸는 것만으로도 체감 속도가 2배 이상 빨라집니다.
1. 휘발성 함수 대체: OFFSET 대신 INDEX를 사용하세요. INDEX는 참조 대상이 바뀔 때만 재계산되므로 훨씬 효율적입니다.
2. VLOOKUP 최적화: 정렬되지 않은 데이터에서 VLOOKUP을 사용하면 검색 속도가 느립니다. 가능하다면 데이터를 정렬한 뒤 VLOOKUP(..., TRUE)를 사용하거나, INDEX와 MATCH 조합을 사용하는 것이 좋습니다.
3. ImportRange 최소화: 다른 파일에서 데이터를 불러오는 IMPORTRANGE 함수는 네트워크 연결을 지속적으로 확인합니다. 필요한 데이터만 별도의 시트에 '값'으로 가져오거나 연동 횟수를 줄여야 합니다.
해결 방법 3: 브라우저 및 하드웨어 설정 최적화
소프트웨어 내부의 문제뿐만 아니라 실행 환경의 설정도 중요합니다.
1. 크롬 하드웨어 가속 활성화: 크롬 설정 > 시스템 > '가능한 경우 하드웨어 가속 사용' 옵션을 켭니다. GPU를 활용해 렌더링 속도를 높여줍니다.
2. 오프라인 사용 중지: 대용량 파일의 경우 [파일] > [오프라인 사용 설정]이 켜져 있으면 동기화 과정에서 렉이 발생할 수 있으므로 이를 해제해 봅니다.
3. 시트 계산 설정 변경: [파일] > [설정] > [계산] 탭에서 '재계산' 옵션을 '변경 시'에서 '변경 시 및 매분' 등으로 변경하여 실시간 연산 부하를 분산시킵니다.
그래도 해결되지 않을 때
만약 위 방법으로도 해결되지 않을 만큼 데이터가 방대하다면(10만 행 이상), 다음과 같은 대안을 고려해야 합니다.
- BigQuery 연동: 구글 클라우드의 BigQuery를 사용하여 데이터를 처리하고 결과만 시트로 가져옵니다.
- 데이터 분할: 연도별, 프로젝트별로 시트 파일을 분리하여 개별 파일의 부하를 줄입니다.
- App Script 활용: 복잡한 수식 대신 자바스크립트 기반의 스크립트를 작성하여 특정 버튼을 누를 때만 계산이 실행되도록 커스텀 자동화를 구축합니다.
문제 예방 방법
- 데이터 입력 시 불필요한 서식(색상, 테두리)을 과도하게 사용하지 않습니다.
- 데이터 전용 시트와 출력(대시보드)용 시트를 분리하여 관리합니다.
- 주기적으로 사용하지 않는 탭(시트)을 삭제하거나 별도 파일로 백업합니다.
자주 묻는 질문
Q. 데이터가 많은데 필터를 걸 때마다 멈춰요.
A. 일반 필터 대신 '필터 보기' 기능을 사용해 보세요. [데이터] > [필터 보기] > [새 필터 보기 만들기]를 사용하면 전체 시트에 영향을 주지 않고 개별적인 필터링이 가능해 훨씬 가볍습니다.
Q. 행을 삭제해도 다시 생겨나요.
A. ArrayFormula 수식의 범위가 A:A처럼 전체 열로 지정되어 있으면 데이터가 없어도 행을 계속 생성할 수 있습니다. A1:A1000처럼 범위를 제한해 보세요.
마무리 요약
구글 스프레드시트의 렉은 시트 크기 축소, 휘발성 함수 제거, 하드웨어 가속 활용 세 가지만 기억하면 대부분 해결됩니다. 웹 브라우저 환경의 한계를 이해하고 데이터를 정적으로 관리하는 습관을 들이면 대용량 작업도 쾌적하게 수행할 수 있습니다.
