row는 오라클에서 행이죠. 튜플 맞습니다.
그러면 컬럼이 많아지면 왜 성능이 안 좋아지는지 생각해보죠.
오라클은 블록 단위(보통 8k)로 데이터를 운송합니다.
따라서 한 블록에 얼마나 많은 row를 가지고 있느냐가 성능에 영향을 주겠죠.
쉽게 예를 들어볼게요.
엑셀에서 한 셀을 1k의 크기라고 합시다. 그러면 한 블록(8k)는 A열~H열까지가 되겠죠?
예를 들어 컬럼수가 작아서 1k까지만 사용해도 한 행의 정보를 모두 담을 수 있다면
16개의 행을 저장하기 위해서는 2블록을 읽어야 합니다.
그런데 컬럼수가 많아저셔 한 행이 3k까지 사용해야 한다면 16개의 행을 저장하기 위해서 6블록을
사용해야 하죠. 그러면 일의 양이 3배로 늘어납니다.
또한, 한 행이 3k를 사용한다면 3개의 행을 가져오기 위해서는 한 블록만 읽으면 안 되고 2 블록을
읽어야겠죠? 1,2행(엑셀에서 A1~F1)은 한 블록에서 가져오더라도 3행을 읽으려면 row chaining 현상이 일어날 수 밖에
없습니다.(엑셀에서 G1,H1-row chaining-A2) 한 행의 크기가 커질 수록 chaining 현상은 더 자주 일어날 수 밖에 없고요.
따라서 되도록 행의 갯수는 줄이고 가능한한 테이블을 여러개로 나누어서 공간 사용의 효율성을 높여야 하는 것이고
정규화도 이러한 맥락에서 이해하시면 좀 쉬우실 거라 생각합니다.