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/
'DB' 카테고리의 다른 글
[DB] MariaDB 보안 설정 (0) | 2024.09.27 |
---|---|
[MariaDB] root 패스워드 리셋 방법 (0) | 2023.07.19 |
[DB] MariaDB 인코딩 (0) | 2023.02.10 |
[InnoDB] cannot allocate memory for the buffer pool 에러 (0) | 2022.03.22 |
데이터베이스(DB) vs. 데이터베이스 관리 시스템(DBMS) (0) | 2021.12.20 |