피드로 돌아가기
Stop Crashing Your Browser: How I Built a Server-Side Engine to Generate 1 Million SQL Rows Instantly
Dev.toDev.to
Backend

Stop Crashing Your Browser: How I Built a Server-Side Engine to Generate 1 Million SQL Rows Instantly

개발자가 클라이언트 기반 데이터 생성 방식을 PHP 백엔드 스트리밍 엔진으로 전환해 브라우저 메모리 누수 없이 100만 행 SQL 데이터 생성

Mr Disloyal2026년 3월 26일5intermediate

Context

클라이언트 측에서 JavaScript 루프로 대규모 더미 데이터를 생성하면 메모리 부족 오류가 발생하거나 브라우저 탭이 완전히 정지된다. 로컬 서버도 100만 행 배열을 메모리에 보유하면서 "Memory size exhausted" 오류를 발생시킨다.

Technical Solution

  • 데이터 생성 로직을 PHP 기반 백엔드 아키텍처로 이전: 클라이언트는 열 정의와 행 개수만 전송하고 서버에서 처리 수행
  • 메모리 누적 대신 동적 스트리밍 방식 구현: 생성된 데이터를 메모리에 모두 보유하지 않고 즉시 파일로 다운로드 가능하도록 스트림
  • 복잡한 난수 생성 알고리즘 서버 측 실행: 도시명과 우편번호 매칭 같은 관계형 데이터 생성을 서버 연산 능력으로 처리
  • 다중 출력 형식 지원: .sql dump, .csv, .json 파일 형식으로 즉시 다운로드 제공

Key Takeaway

대규모 데이터 생성 작업은 클라이언트 메모리 제약을 피하기 위해 반드시 서버 측 스트리밍 처리로 설계해야 한다. 메모리 누적 대신 동적 스트림 방식을 사용하면 클라이언트와 서버 모두에서 메모리 오버플로우를 방지할 수 있다.


데이터베이스 성능 테스트가 필요한 개발 환경에서 대규모 더미 데이터 생성 시 PHP 또는 유사 백엔드 언어로 스트리밍 생성 엔진을 구축하면, 로컬 머신의 메모리 부담 없이 100만 행 이상의 데이터를 즉시 SQL/CSV 파일로 받을 수 있다.

원문 읽기