데이터가 점점 커지면 샤딩(sharding)이나 파티셔닝(partitioning)을 해야 한다는 얘기를 자주 듣는데, 이 둘이 뭐가 다른 건지 매번 헷갈립니다. 검색해봐도 둘 다 데이터를 나눈다는 설명만 나와서 결국 같은 거 아닌가 싶다가도, 다르다고 하니까 더 혼란스러워요.


제가 이해한 건 파티셔닝은 한 테이블을 날짜 같은 기준으로 쪼개는 거고


PARTITION BY RANGE (YEAR(created_at))


샤딩은 아예 서버를 여러 대로 나눠서 데이터를 분산하는 거다 정도인데 이게 맞나요? 그럼 파티셔닝은 한 DB 서버 안에서만 일어나는 거고, 샤딩은 물리적으로 다른 서버로 흩어지는 거라고 봐도 되는 걸까요.


그리고 실무에서는 보통 어느 쪽을 먼저 고민하나요? 데이터 좀 많아졌다고 바로 샤딩부터 하는 건 아닐 것 같은데, 파티셔닝으로 버티다가 안 되면 샤딩 가는 순서인지, 아니면 상황이 완전히 다른 건지 궁금합니다. 샤딩은 하고 나면 조인이나 트랜잭션이 어려워진다는 말도 있던데 그것도 왜 그런지 알고 싶어요.