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
운영게시판
최근게시물
Sybase Q&A 1294 게시물 읽기
No. 1294
문자 데이타 유형의 길이제한
작성자
김지수
작성일
2005-09-23 00:14
조회수
7,043

현재 MSSQL2000 -- > sybase ASE12.5.3으로 변환중에 있습니다.

MSSQL의 varchar 데이타 유형 경우 8000byte 까지 지원을 하는데
sybase의 varchar는 255byte 까지만 지원을 하더군요.

현재 MSSQL을 사용할때 동적쿼리문을 좀 많이 사용하여,
대부분 최소 1000byte 이상의 varchar형 변수를 사용하여서,
수동으로 바꿀려면 너무 많은 공수 및 도저히 변환 불가상태에 빠집니다.

제가 얻은 지식으로는
11.9.2 버전에서는 255byte 제한이 있고,
12.5 버전부터는 2048~16384byte까지 쓸 수 있다고 들었습니다.
서버 페이지 설정에 따라 조금씩 틀림 이라던데..

서버 페이지 설정은 어떻게 해줘야 하는지요?
----------------------------------------------------
ps. 얼마전 제가 글을 올렸는데, 여기 사이트에 댓글을 쓰려하니 계속 에러가 나서요..
여하튼, 얼마전 올린글에 답변을 달아주신
coolrock님 과 지연님께서 혹시 이글을 보신다면 감사하다는 말 전하고 싶습니다. ^__^

이 글에 대한 댓글이 총 2건 있습니다.

ASE 12.5.X 에서는 paze size를 2K, 4K, 8K, 16K로 설정할 수가 있습니다.

 

서버를 build할 때  Page Size를 결정합니다.

 

이미 서버가 Build되어 있는 경우에는 startserver 할 때의 errorlog를 확인하면 서버의 Page Size를 알 수 있구요.

select @@maxpagesize 를 하시면 확인이 가능합니다.

 

질문하신 varchar(nnn) 타입의 제한은

테이블의 Row Length와 관련이 있습니다.

 

Page Size별 Maximum row length는 다음과 같습니다.

Page size Maximum row length
2K 2,048 bytes
4K 4,096 bytes
8K 8,192 bytes
16K 10,200 bytes

 

즉 하나의 테이블에 여러개의 varchar(big size) 컬럼을 둘 경우에는 row length 제한에 걸릴 수 있습니다.

 

Page Size를 어떻게 결정하는가는 이러한 내용과 관련이 깊습니다.

생성하려는 테이블의 Row Length를 보면 16K를 선택하셔야 할 것 같습니다.

 

초기의 ASE 버전은 2K만을 지원했습니다. 12.5.0버전부터 4K,8K,16K를 지원합니다.

 

요즘은 Hardware의 발전으로 보통은 8K로 많이 설정합니다.

님의 경우에는 16K로 하시는 것이 좋을 것 같습니다.

 

## 참조하세요 ##

 

ASE 12.5.0 Newfeatures

 

  • Logical page sizes (now cab be 2K  up to   16K),
  • Change the column length limit from 255 --> 16294 bytes;
    The actual length depends on logical page sizes 2K (1962), 4K, ...16K (16294). In our case (2K), we can use data type like char(1962) or varchar(1962)  (actual value may slightly change depending on the database lock scheme.) 
  • Maximum number of column per table:250-->1024.   (e.g. you can update as many as 1024 columns in a set clause);
  • Maximum number of tables in a query:  16 --> 64,  (e.g.  allow 50 tables join in a  query)
  • Maximum  length of  a stored procedure or a select statement: 2K--> 16K  (any logical page size)
  • Number of parameters in a stored procedure: 255-->2048;
  • Number of users  per database: 48k --> 2 billion;
  • Login number per server: 32K -->  2 billion; ,
  • Maximum database size: 4TB-->8TB;
  • Better text/image data storage: enable random access of text/image  data.
  • Row-level access control:  Enable user to control the access of data in row level.
  • 존넘님이 2005-09-23 09:40에 작성한 댓글입니다.
    이 댓글은 2005-09-23 09:55에 마지막으로 수정되었습니다. Edit

    12.5.3 version 을 사용하신다면, 전혀 문제가 없습니다.

     

    table 생성시 최대 coulmn 생성수에 대한 제한은 없지만 전체 Size 가 Page Size 를 넘을수는 없는 것이지요..

    page 설정은 서버 설치시 생성되는 값이며, 향후에 변경을 하실수 는 없습니다.

    보통의 경우 ( 4 K ) 로 Page 를 잡았다고 한다면 ( 확인 : select @@maxpagesize )

    실제 4096 byte에서 헤더와 offset을 뺀값이 4012 bytes 이므로 Table 생성시 고정 컬럼길이를 그이상으로 잡을수 없습니다.


    Varchar 를 포함하여 size 가 넘은경우 warning Message 가 나오나 생성은 가능하지만 실제 Data 가 Page size 를 넘지 않는다면 Data 생성에는 이상이 없습니다.

     

    간혹 client version ( sql advantage) 을 예전것을 사용하시면, 255 자 이상 되는 column 조회시 Warning 이 발생하지만, 실제 data 에는 이상이 없으며, sybase.co.kr 홈페이지에 가시면, 255 자 이상 조회가능한 sql advantage 를 구하 실수 있습니다.

    coolrock님이 2005-09-23 09:47에 작성한 댓글입니다. Edit
    [Top]
    No.
    제목
    작성자
    작성일
    조회
    1297RE: MSSQL2000 -> ASE 12.5.3 으로 DTS하여 데이타를 내보내면 한글이 깨집니다.
    김지수
    2005-09-23
    3004
    1296MSSQL2000 -> ASE 12.5.3 으로 DTS하여 데이타를 내보내면 한글이 깨집니다. [1]
    김지수
    2005-09-23
    3563
    1295[질문]sa 계정 lock 해제 방법 [1]
    푸름
    2005-09-23
    3873
    1294문자 데이타 유형의 길이제한 [2]
    김지수
    2005-09-23
    7043
    1293자바에서 쓸수 있는 드라이버가 있나요? [2]
    초보
    2005-09-22
    3229
    1292에러좀 봐주세요. [5]
    찡어
    2005-09-22
    3437
    1291사용자 정의 함수 사용하기위해.. -> 환경셋팅 및 구현방법 [2]
    김지수
    2005-09-21
    4525
    Valid XHTML 1.0!
    All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
    작업시간: 0.024초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다