SQLite는 경량 데이터베이스이다.

따라서 데이터베이스의 한계는 어디까지인지를 파악 해볼 필요성을 느끼게 된다.

테이블 설계 시 고려해야 하기 때문. 그런데 알아 보니 소규모 어플리케이션에서는 제한 모르고 써도 무방하다 싶기도 하다..

 

1. string이나 BLOB의 최대 길이

SQLITE_MAX_LENGTH

  • 기본값 = 1 billion (1,000,000,000)
  • 최대값 = 2147483647

기본값은 설정으로 낮추거나, 높일 수 있다.

(컴파일 시, 커맨드 라인 옵션으로 -DSQLITE_MAX_LENGTH=123456789 주면 변경 가능하다 함)

 

2. 최대 컬럼 개수 

SQLITE_MAX_COLUMN 

  • 기본값 = 2000
  • 최대값 = 32767

컴파일 타임에 SQLITE_MAX_COLUMN 설정을 바꿀 수 있다.

 

3. 최대 SQL Statement 길이

SQLITE_MAX_SQL_LENGTH 

  • 기본값 = 1,000,000,000

4. Join 가능한 최대 테이블 개수

  • 최대값 = 64개 테이블

5. Expression Tree의 최대 깊이(Depth)

SQLITE_MAX_EXPR_DEPTH 

  • 기본값 = 1000

(값이 0이면, 제한 없음)

 

6. 함수의 최대 인자 수

SQLITE_MAX_FUNCTION_ARG 

  • 기본값 = 100
  • 최대값 = 127

7. Compound SELECT Statement에서 최대 Term 수

SQLITE_MAX_COMPOUND_SELECT

Compound SELECT Statement 란, 두개 이상의 SELECT 문이 UNION, UNION ALL, EXCEPT, or INTERSECT로 연결된 것을 말한다.

여기서 각각의 SELECT 문을 Term이라고 부른다(SQLite의 용어).

  • 기본값 = 500

8. LIKE나 GLOB 패턴의 최대 길이

SQLITE_MAX_LIKE_PATTERN_LENGTH

  • 기본값 = 50000

9. 단일 SQL문에서 Host Parameter의 최대 개수

SQLITE_MAX_VARIABLE_NUMBER

Host Parameter란, SQL문에서의 기호 (보통 ? 을 사용한다)를 말한다.

  • 기본값 = 999 (3.32.0 버전, 2020-5-22)
  • 기본값 = 32766 (3.32.0 이후 버전)

10.  Maximum Depth Of Trigger Recursion

  • 기본값 = 1000 (3.7.0 버전 부터, 2009-09-11)

그 이전 버전은 trigger가 재귀적이지 않아 의미 없다 함

 

11. Maximum Number Of Attached Databases

SQLITE_MAX_ATTACHED 

하나의 커넥션에 연결되 수 있는 최대 데이터베이스의 개수

  • 기본값 = 10
  • 최대값 = 125

12. 데이터베이스 파일에서 최대 Page 수

SQLITE_MAX_PAGE_COUNT 

  • 기본값 = 1073741823
  • 최대값 = 4294967294

13. 테이블의 최대 행 수

  • 이론상 최대값 = 2의 64승 (18446744073709551616 or about 1.8e+19)

14. 최대 데이터베이스 사이즈

  • 최대값 = 281 terabytes

(최대 페이지 수가 4294967294 이고, 각 페이지의 최대 크기가 65536 bytes 라고 했을 경우)

 

15. Schema의 최대 테이블 개수

  • 최대값 = 2147483646

 

참고 : https://www.sqlite.org/limits.html

성능 벤치마킹 : https://softint.eu/choosing-sqlite-as-a-database-3-3/

+ Recent posts