{#limits-limits}
# 제한
AgensGraph의 제한 중 둘은 모든 정점과 간선에 주는 식별자에서 나옵니다. 나머지는 PostgreSQL의
것입니다. 그래프는 스키마이고 레이블은 테이블이기 때문입니다.
{#limits-graph-limits}
## 그래프의 제한
모든 정점과 간선은 `graphid` 타입의 식별자를 지니며, 그 배치가 그래프가 닿을 수 있는 두 제한을
정합니다. `graphid`는 둘로 나뉜 64비트 부호 없는 정수입니다. 상위 16비트가 **레이블 id**이고, 하위
48비트가 그 레이블 안에서 행의 일련번호인 **로컬 id**입니다. 그래서 식별자는 숫자 두 개로
찍힙니다. `movie[3.7]`은 레이블 3의 7번 행입니다.
| 제한 | 값 | 유래 |
| --- | --- | --- |
| 그래프당 레이블 수 | 65,535 | 16비트 레이블 id입니다. 0은 무효 레이블 id로 예약돼 있어 쓸 수 있는 범위는 1부터 65,535까지입니다. |
| 레이블당 행 수 | 281,474,976,710,655 | 48비트 로컬 id, 즉 248 − 1입니다. |
| 레이블 이름 길이 | 63바이트 | PostgreSQL의 식별자 길이입니다. |
그래프 자체에는 따로 제한이 없습니다. 그래프는 스키마이고 PostgreSQL은 데이터베이스당 스키마 수에
제한을 두지 않습니다. 다만 그래프가 많으면 릴레이션을 소모합니다. 그래프마다 자기 시퀀스 하나와 루트
레이블 둘을 만들기 때문입니다.
`graphid`의 두 부분은 모두 범위 검사를 받습니다. 어느 쪽이든 범위를 벗어나면 생성자가
거부합니다:
```sql
SELECT graphid(65536, 1);
```
```
ERROR: labid out of range: 65536
```
```sql
SELECT graphid(1, 281474976710656);
```
```
ERROR: locid out of range: 281474976710656
```
`graphid` 리터럴을 파싱할 때도 문제가 된 값만 빠진 같은 메시지 둘이 돌아옵니다.
`SELECT '65536.1'::graphid` 는 `labid out of range`를 냅니다.
이 번호를 나눠 주는 계수기는 평범한 시퀀스이므로 들여다볼 수 있습니다. 그래프마다 레이블 id를 위한
`ag_label_seq`가 하나씩, 레이블마다 로컬 id를 위한 `