· 2026-10-14 전체

"MySQL 2천만 행 넘기면 느려진다" vs "램 256GB면 상관없다" — 중국 개발자 댓글은 "그 서버 누가 사 줘?"

"MySQL 테이블이 2천만 행을 넘으면 느려진다"는 아키텍트에게 개발자가 "램 256GB면 상관없다"고 반박했다. 중국 개발자들의 첫 반응은 "그 서버, 네가 돈 내냐"였다.

알리윈 MySQL 128GB가 월 12만 8천 위안(약 2,550만원)이라는 계산, "최근 2년은 그룹웨어 하나 올리는 것도 반려된다"는 하소연, "경기 상승기의 순진함"이라는 댓글이 이어졌다. 한편에선 "우리는 단일 테이블 20억 행"이라는 자랑이 쏟아졌다.

출처: V2EX 10/13

'2천만 행 룰'

중국 개발자 사이에는 오래된 경험칙이 있다. MySQL 단일 테이블이 2천만 행을 넘으면 성능이 떨어지니 그 전에 샤딩(분할 테이블)하라는 것이다. 중국 백엔드 면접 단골 질문이기도 하다.

근거는 InnoDB 인덱스 구조다. InnoDB는 데이터를 B+트리로 저장하는데, 행 수가 대략 2천만을 넘으면 트리 높이가 3에서 4로 늘어난다. 조회할 때 거치는 노드가 하나 늘고, 노드마다 디스크 I/O가 한 번씩 생기니 느려진다는 계산이다.

글쓴이: "비리프 노드는 전부 메모리에 있다"

글쓴이가 아키텍트에게 이유를 묻자 이런 답이 돌아왔다. "2천만 넘으면 B+트리가 3층에서 4층이 된다. 한 층 늘면 디스크 I/O가 한 번 는다. 더 말하기 싫으니 AI한테 물어봐."

글쓴이의 반박은 이렇다. 요즘 운영 DB 서버는 램이 256GB이고 그중 200GB를 버퍼 풀에 할당한다. 그러면 B+트리의 비리프 노드는 전부 메모리에 상주한다. 늘어난 한 단계는 디스크 I/O가 아니라 수십 나노초짜리 메모리 내 이진 탐색일 뿐이다.

글쓴이는 백업·복구가 SLA를 못 맞추거나 온라인 DDL 위험이 크거나 핫 데이터 워킹셋이 메모리를 넘어 랜덤 I/O가 폭증하는 경우라면 샤딩하고 아카이브하는 게 맞고, 그건 정당한 아키텍처 판단이라고 썼다. 하지만 하드웨어 사양도 쿼리 패턴도 보지 않고 "B+트리가 4단이 되면 성능이 무너진다"를 경전처럼 외우면 안 된다고 했다. "자세한 건 AI한테 물어보라"던 아키텍트에게는 이렇게 받아쳤다. "AI한테 물어보면 이 글이 그대로 답으로 나올 거다."

"256GB, 네가 사 줄 거야?"

댓글은 66개였다. 첫 반응은 기술이 아니라 돈이었다.

회사 규모에 따라 이야기가 갈렸다.

그리고 이 두 줄이 달렸다.

"우리는 단일 테이블 20억 행"

한편에서는 실사례가 쏟아졌다. 2천만 행 룰은 여러 회사에서 이미 깨져 있었다.

2천만 행 룰을 편든 댓글

"기술이 아니라 정치 문제"

출처