데이타베이스를사용하는데여
글쓴이: jjjjrr / 작성시간: 수, 2004/09/22 - 4:24오후
안녕하세요
데이타베이스를사용하는데여
테이블을 두개만들었읍니다
하나는 12개의 필드가 있고
또하나는 15개의 필드가 있읍니다
근데 이테이블의 필드가 12개는 동일한필드입니다
그러니까 15개의 필드를 가진 테이블은 12개가 12개의 테이블의 필드와 일치합니다
이상황에서
필드12개의 테이블을 없애버리고
15개의 테이블을 필드를 12개만 사용하도록 하면
자원낭비가 심한가여
그러니까
3개의 필드는 전혀필요가 없는데도 존재한다면
어느정도의 낭비를 가져올런지
12개 15개의필드를 가진테이블을 두종류로만드는것과
15개필드를 가진테이블을 하나만만들고
12개의필드가필요한경우는 12개만사용하는것과 비교해서
어느것이 좋을련지.....
그러니까 빈필드가차지하는자원의 크기가 어느정도일까
무시해도좋을정도인지가 궁금합니다 필드크기에따라서도 다르겠지만
테이블이 하나늘어나면 여러가지로 신경쓰고 코딩할것도 많을것같은데....
조언부탁드립니다
즐거운하루되세요
Forums:
사용하는게 필드 12개면 12개 짜리 테이블 하나를 만드십시오.
사용하는게 필드 12개면
12개 짜리 테이블 하나를 만드십시오.
질문을 잘못드린것같아서 다시질문드립니다데이타베이스에 테이블을 만들었읍
질문을 잘못드린것같아서 다시질문드립니다
데이타베이스에 테이블을 만들었읍니다
3개의 필드를 만들었읍니다
각각 10바이트크기로필드를 만들었읍니다
그리구
레코드를 넣었읍니다
첫번째필드와 세번째필드에만넣었읍니다
두번째필드는 비워두고여
이경우 데이타베이스에서 레코드를 넣으므로서차지하는용량이 어떻게되는냐
하는겁니다
두개의 필드에 값을 넣었으므로 20바이트만 차지할것인가
아님 아무런값도없는 두번째필드의 10바이트도
용량에 차지하는지가 궁금합니다
그러니까 사용하지않는 10바이트는 낭비가되는건지 하는점입니다
그리구
하나의필드크기가 1000바이트일경우
데이타를 100바이트를 넣었을경우
데이타베이스에서 차지하는용량이
100으로인식하나요
1000으로인식하는지....
그러니까
용량이큰필드를 만들어사용할때
위의경우처럼 1000바이트필드에
값은 1바이트만넣었을경우 999 바이트는 낭비되는건가요
조언부탁드립니다
사용하시는 DBMS종류에 따라 아래 답변이 정확하지 않을 수 있습니다.
사용하시는 DBMS종류에 따라 아래 답변이 정확하지 않을 수 있습니다.
자세한 내용은 해당 DB별로 자세한 정보를 다시 확인해 보실것을
부탁드립니다.
일반적인 경우 varchar타입을 제외하고 나머지 데이터 타입의경우
각 데이터 타입별로 고정된 길이를 가지고 있는 걸로 알고 있습니다.
예를들어, char(10)인 필드는 데이터의 유/무나 길이에 관계없이
1byte길이의 데이터를 넣어도 항상 10byte씩의 물리공간을 차지하지만,
varchar(10)인 필드는 실제 입력된 데이터의 길이만큼인 1byte의
물리공간을 차지합니다. 하지만, varchar데이터 타입은 데이터 시작/종료
위치등의 부가 정보가 필요한 관계로 (1byte + 알파)만큼의 추가적인
저장공간을 필요로 합니다.
ps : 여기서도 좋은 정보를 많이 얻으실 수 있겠지만, DB와 관계된 정보라면
http://database.sarang.net/ 에 가보시는것도 큰 도움이 될 듯 합니다.
두번째 답변처럼... 데이터타입에 따라 다릅니다.char형이면, 말씀
두번째 답변처럼... 데이터타입에 따라 다릅니다.
char형이면, 말씀하신대로... 모두 할당됩니다.
char(10)이라면, null이라도 10에 null이 모두 들어가며 한글자라도 입력되면 나머지는 space가 들어갑니다.
varchar나 clob(oracle), text(mysql) 류라면, C프로그램에서의 포인터에 해당하는 정보가 들어갑니다. (메모리 포인터가 아니라 file상의 offset이 되겠지만요..)
그러나 기본적인 사이즈는 할당한것보다 여유있게 잡힙니다. linked 된 자료형이라 보면 됩니다. 이것을 완전히 가변사이즈로 가져갈수도 있겠지만, 그렇게 하면 필연적으로 DB의 퍼포먼스가 느려질수밖에 없습니다.
DB는 file이 크다고 느리진 않습니다. 되려 복잡한 구조를 가지고 있을때 더 느립니다. 물론 system테이블에 키값을 분석해서 따로 또 가지고 있기 때문에... DB설계자가 대충 설계해도 DBMS는 잘 처리할수 있도록 되어있긴 하지만....
말씀하신 DB 스키마문제는 실전에서도 많이 쓰입니다.
3컬럼정도 차이라면, 그냥 만들어두고 안 쓰는 일 따위 말이죠... 물론 가장 좋은것은 해당 기능에 딱 맞게 table을 설계하는 것이고, 중복되는 테이블이 없도록 스키마를 설계해야 되겠지만.... 이게 간단한 일이 아니라서.. -,-;;
댓글 달기