programing

큰 테이블의 VARCHAR 컬럼 크기를 늘릴 때 문제가 발생합니까?

muds 2023. 4. 11. 22:39
반응형

큰 테이블의 VARCHAR 컬럼 크기를 늘릴 때 문제가 발생합니까?

SQL Server 2008을 사용하고 있는데, 약 500k 행의 테이블에서 VARCHAR 필드를 (200에서 1200까지) 크게 해야 합니다.제가 알아야 할 것은 제가 고려하지 않은 문제가 있는지 여부입니다.

다음 TSQL 스테이트먼트를 사용합니다.

ALTER TABLE MyTable
ALTER COLUMN [MyColumn] VARCHAR(1200)

나는 이미 데이터 복사본으로 그것을 시도했고 이 진술은 내가 볼 수 있는 어떤 악영향도 없었다.

그럼 제가 미처 고려하지 못한 문제가 있을까요?

참고로 컬럼은 인덱스가 되어 있지 않습니다.

이것은 메타데이터의 변경일 뿐입니다.빠릅니다.

관찰: SET ANSI_xx 설정 중 하나가 다른 경우(어떤 이유로 SSMS가 아닌 osql에서 실행되는 경우) "사고"를 피하기 위해 NULL 또는 NOT NULL을 명시적으로 지정합니다.

2센트를 더하고 싶어서 이 질문을 검색했더니 나도 비슷한 상황에 처했어

변경 시 주의해 주세요.varchar(xxx)로.varchar(yyy)메타 데이터 변경은 사실이지만 로의 변경은 그렇지 않습니다.왜냐면varchar(max)값(BLOB 값 - 이미지/텍스트 등)은 테이블 행 내가 아니라 "out of row" 디스크에 다르게 저장됩니다.따라서 서버는 큰 테이블에서 미쳐 몇 분(시간) 동안 응답하지 않습니다.

--no downtime
ALTER TABLE MyTable ALTER COLUMN [MyColumn] VARCHAR(1200)

--huge downtime
ALTER TABLE MyTable ALTER COLUMN [MyColumn] VARCHAR(max)

PS. 동일nvarchar또는 물론입니다.

Varchar(200)에서 Varchar(1200)로 변경해도 문제가 발생하지 않습니다.이는 메타데이터 변경일 뿐이며 SQL Server 2008에서는 공백이 생략되기 때문에 성능 차이가 나타나지 않기 때문에 쉽게 변경할 수 있습니다.

열을 varchar(max)로 변환하지 않는 또 다른 이유는 varchar(max) 열에 인덱스를 생성할 수 없기 때문입니다.

이 경우 alter 열이 작동하지 않기 때문에 다음과 같은 'Modify' 명령을 사용할 수 있습니다.

변경 테이블 [table_name] MODIFY 컬럼 [column_name] varchar(varchar);

언급URL : https://stackoverflow.com/questions/7513513/when-increasing-the-size-of-varchar-column-on-a-large-table-could-there-be-any-p

반응형