database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
ㆍPostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
PostgreSQL Q&A 7140 게시물 읽기
No. 7140
psql의 경우에 text 타입의 크기가 정해져 있나요?
작성자
textSize
작성일
2007-05-17 12:25
조회수
5,374


다른 분이 만들어 놓으신 코드를 보다가 궁금해서 질문합니다.


textarea로 부터 값을 입력 받아서 저장하는 코드 부분에서 


크기 검사를 하더라구요.


length가 50000보다 클경우에는 경고메시지를 보내주는데요.


text 타입의 크기가 정해져 있는것이라서 그런지 의문이 들더라구요.


게시만의 쓰기동작을 만들때 꼭 길이 검사를 해야하는지도 알고 싶구요.


보통 다른 분들은 어떻게 하시는지도 궁금하네요.


답변 기다리겠습니다.

이 글에 대한 댓글이 총 3건 있습니다.
http://www.postgresql.org/about/

한개 필드의 크기 제한은 1기가 바이트 입니다
참고로 인코딩 포함입니다
신기배(소타)님이 2007-05-17 12:51에 작성한 댓글입니다.
이 댓글은 2007-05-17 12:51에 마지막으로 수정되었습니다.

아마 필드 최대 크기 1 GB 제한은 향후 몇 년간은 해결이 안될 것 같습니다.

PGSQL 은 가변길이데이타를 표현하기 위해 2 종류의 구조체를 지원합니다.

varlena 과 varattrib 입니다. 선언은

struct varlena

{

    int32 vl_len;

    char vl_dat[1];

};

//struct varlena

 

typedef struct varattrib

{

    int32 va_header; /* External/compressed storage */

    union

    {

        struct

        {

            int32 va_rawsize; // Plain data size

            char va_data[1]; // Compressed data

        } va_compressed; // Compressed stored attribute

 

        struct

        {

            int32 va_rawsize; // Plain data size

            int32 va_extsize; // External saved size

            Oid va_valueid; // Unique identifier of value

            Oid va_toastrelid; // RelID where to find chunks

        } va_external; // External stored attribute

        char va_data[1]; // Plain stored attribute

    } va_content;

} varattrib;

 

인데,  위의 선언 대로라면 길이정보가 int 형인것을 알 수 있고 따라서

필드 데이타의 최대 크기는 4G 인처럼 보입니다만

 

varattrib 의 경우 길이정보의 앞 2 비트는 길이가 아닌

다른 정보를 표현하는데 사용되고 있읍니다.

따라서 4G 의 반의 반(즉 1G) 밖에 길이를 표현할 수 없읍니다.

 

varlena 구조체를 사용하면 되지 않겠냐 할 수 있지만

varattrib 는 varlena 보다 더 큰 자료형을 표현하기 위해

나왔다는 데에 문제가 있읍니다.

즉 varlena 로는 varattrib 보다 큰 자료를 표현할 수 없다는 것이죠

 

실제 프로그래밍시에 이것은 거의 문제가 되지 않는데

그래도 나중에는 개선이 되야 하지 않을까 생각합니다.

초보대왕님이 2007-05-17 13:36에 작성한 댓글입니다.
이 댓글은 2007-05-17 14:23에 마지막으로 수정되었습니다. Edit

PostgreSQL의 제한 보다는 게시판이므로 HTTP 프로토콜 때문인 것 같네요...


GET 방식일 경우 전체 크기제한이 있고, 또한 너무 커진다는건 그만큼 전송 시간이 걸려서 그런 제한을 뒀을지도 모르겠네요..

DrK님이 2007-05-17 13:41에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
7144쿼리 검색시 limit를 사용해도 속도는 같은지요? [1]
dba
2007-05-24
4830
7142dblink 로 select, insert, update, delete
i2801
2007-05-22
5264
7141쿼리가 로그에 출력되게 하면, postgres가 다운되어 버립니다. [4]
dba
2007-05-21
4760
7140psql의 경우에 text 타입의 크기가 정해져 있나요? [3]
textSize
2007-05-17
5374
7139Archieve log를 이용한 복구에 대해서 두번째 질문 드립니다 ㅠ_ㅠ [2]
신종관
2007-05-15
5365
7138Archive log를 이용한 복구의 또 질문인데요...ㅠ [1]
2007-05-15
5823
7137오라클과 PostgreSQL 중 무엇이 선택할 것인가? [3]
유명진
2007-05-12
5341
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.022초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다