ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • VARCHAR
    DATABASE/MySQL 2024. 1. 23. 17:56
    728x90

    프로젝트를 진행하면서 varchar에 대하여 많은 고민이 들었었다. 그리하여 되짚어보며 궁금했던 점들에 대한 내용에 대한 검색 돌입!🤔

    1. MySQL에서 VARCHAR와 TEXT 차이점은?
    2. 지정된 길이보다 더 긴 문자열이 데이터베이스에 저장된다면 어떻게 될까?

     

    1.  MySQL에서 VARCHAR 와 TEXT 차이점은?

     

    TEXT(또는 CLOB)나 BLOB와 같은 대용량 데이터를 저장하는 컬럼 타입을 LOB(Large Object) 타입이라고 한다.

     RDBMS 에서는 LOB 데이터를 Off-Page 라고 하는 외부 공간에 저장한다.

     

    https://dev.mysql.com/doc/refman/8.0/en/char.html

     

    MySQL :: MySQL 8.0 Reference Manual :: 13.3.2 The CHAR and VARCHAR Types

    13.3.2 The CHAR and VARCHAR Types The CHAR and VARCHAR types are similar, but differ in the way they are stored and retrieved. They also differ in maximum length and in whether trailing spaces are retained. The CHAR and VARCHAR types are declared with a l

    dev.mysql.com

    VARCHAR와 TEXT는 MySQL에서 흔히 사용하는 문자열 데이터 타입이다.VARCHAR는 255byte만 지원했지만, MySQL 5.0.3 이후로 VARCHAR와 TEXT 타입 모두 최대 65,535byte 길이를 지원한다.

     

    https://medium.com/daangn/varchar-vs-text-230a718a22a1

     

    VARCHAR vs TEXT

    개요

    medium.com

     

    VARCHAR

    • 가변 길이의 문자열을 저장하는 가장 흔한 문자열 데이터 타입
    • 필요한 만큼만 공간을 사용하며 고정 길이 타입보다 저장 공간을 적게 사용하기도 한다.
    • 공간을 절약하므로 성능에 도움이 되지만 행이 가변 길이이므로 행을 업데이트할 때 행의 길이가 길어지기도 하며, 이러한 이유로 추가적인 작업이 필요할 수도 있다.
    • 최대 길이가 (상대적으로) 크지 않은 경우
    • 테이블 데이터를 읽을 때 항상 해당 컬럼이 필요한 경우
    • DBMS 서버의 메모리가 (상대적으로) 충분한 경우

    VARCHAR(3) 나 VARCHAR(100) 컬럼은 같은 공간을 차지하지만 MySQL에서 내부적으로 값을 저장할 때 고정크기의 메모리가 할당된다. 이렇게되면 메모리 내의 테이블을 사용하게 되는 연산이 필요한 경우에 성능이 저하될 수 있다. 즉 필요한 만큼만 공간을 할당해주는게 최선이라고 한다.

     

     

    TEXT

    • 최대 길이가 (상대적으로) 큰 경우
    • 테이블에 길이가 긴 문자열 타입 컬럼이 많이 필요한 경우
    • 테이블 데이터를 읽을 때 해당 컬럼이 자주 필요치 않은 경우

     

    2.  지정된 길이보다 더 긴 문자열이 데이터베이스에 저장된다면 어떻게 될까?

     1) 오류 발생 : MySQL은 데이터의 길이가 지정된 길이를 초과하면 오류를 발생시킨다. 이는 데이터의 무결성을 유지하기 위함이다.

     2) 절단 (Truncation): MySQL은 지정된 길이를 초과하는 데이터를 해당 VARCHAR 길이에 맞게 자를 수 있으며 초과하는 부분이 잘릴 수 있다.

     

    예를 들어, VARCHAR(255) 컬럼에 300자의 문자열을 저장하려고 할 때, MySQL는 해당 문자열을 255자로 자를 수 있다. 이 경우에는 경고나 에러 없이 자동으로 데이터가 잘려서 저장된다. 애플리케이션에서는 이러한 상황을 다루기 위해 데이터의 길이를 미리 검증하거나, 데이터를 저장하기 전에 적절한 길이로 자르는 등의 조치를 취할 수 있으며 이렇게 하면 데이터의 일관성을 유지하고 예상치 못한 동작을 방지할 수 있다.

    728x90
Designed by Tistory.