ScaNN
색인을 생성할 때 발생할 수 있는 오류를 설명합니다. 오류의 예시와 권장 해결 방법도 제공됩니다.
오류 목록
다음은 ScaNN
색인을 만들려고 할 때 생성되는 오류 목록입니다. 이러한 오류의 생성을 사용 중지하고 색인을 계속 생성할 수 있습니다. 자세한 내용은 색인 생성 적용 및 오류 억제를 참고하세요.
ERROR: 빈 테이블로 ScaNN 색인을 만들 수 없음
오류 메시지
데이터가 없는 테이블에 색인을 생성하거나 생성된 ScaNN
색인이 있는 테이블을 자르려고 하면 다음 오류가 발생합니다.
ERROR: Cannot create ScaNN index with empty table. Once the table is populated
with data, create the index. See documentation to bypass this validation.
오류를 일으키는 샘플 쿼리
쿼리 예시 A
create table t1 (a INT, b VECTOR(512)); CREATE TABLE create index on t1 using ScaNN(b cosine) with (num_leaves = 10, quantizer = 'sq8');
쿼리 예시 B
truncate t1;
권장 해결 방법
ScaNN
색인을 생성하기 전에 테이블에 임베딩 벡터가 채워져 있는지 확인합니다.
ERROR: ScaNN 색인을 만들 수 없음
오류 메시지
채워진 행이 적은 테이블에 색인을 생성하려고 하면 다음 오류가 발생합니다.
Cannot create ScaNN index, error: INVALID_ARGUMENT: Number of row (5) must be
larger than (1000).
오류를 일으키는 샘플 쿼리
create table t1 (a INT, b VECTOR(512));
CREATE TABLE
insert into t1 select (random()*1e9)::int, random_vector(512) from generate_series(1, 5);
INSERT 0 5
create index on t1 using scann(b cosine) with (num_leaves = 100, quantizer = 'sq8');
권장 해결 방법
ScaNN
색인을 생성하기 전에 테이블에 임베딩 벡터가 채워져 있는지 확인합니다. 테이블의 행 수가 num_leaves
매개변수에 정의된 값보다 큰 것이 좋습니다.
ERROR: 상위 파티션 테이블에 ScaNN 색인을 만들 수 없습니다.
오류 메시지
상위 테이블에서 파티션을 나눈 테이블을 만든 경우 상위 테이블에 ScaNN 색인을 만들면 다음과 같은 오류가 발생합니다.
ERROR: Cannot create ScaNN index on parent partition table. Create ScaNN
indexes on the child tables instead. See documentation to bypass this
validation.
오류를 일으키는 샘플 쿼리
create table t1 (a INT, b VECTOR(512)) partition by range(a);
CREATE TABLE
CREATE TABLE t1_one_ten PARTITION of t1 for values from (1) to (10);
CREATE TABLE
insert into t1_one_ten select (random()*1e9)::int, random_vector(512) from generate_series(1, 100);
INSERT 0 100
CREATE TABLE t1_eleven_twenty PARTITION of t1 for values from (11) to (20);
CREATE TABLE
insert into t1_eleven_twenty select (random()*1e9)::int, random_vector(512) from generate_series(1, 100);
INSERT 0 100
create index on t1 using scann(b cosine) with (num_leaves = 10, quantizer = 'sq8');
권장 해결 방법
파티션을 나눈 테이블의 상위 테이블에는 ScaNN
색인을 생성할 수 없습니다.
파티션된 테이블에 ScaNN
색인을 생성해야 합니다.
색인 생성 적용 및 오류 억제
AlloyDB가 색인을 생성하고 오류를 억제하도록 적용할 수 있습니다. 이 메서드로 색인 생성을 허용하기 전에 다음과 같은 의미를 고려하세요.
- 색인이 적은 데이터 또는 아무런 데이터도 없이 학습되므로 중앙값은 0 데이터를 학습하여 검색률이 저하됩니다.
- 데이터베이스에 대한 쓰기 성능도 느릴 수 있습니다.
색인 생성을 강제하려면 다음을 완료하세요.
데이터베이스에서
scann.allow_blocked_operations creation
세션 수준 매개변수를true
로 설정합니다.SET scann.allow_blocked_operations = true;
데이터베이스에서 다음 쿼리를 실행할 사용자에게
SUPERUSER
권한을 할당합니다.CREATE USER USER_NAME WITH SUPERUSER PASSWORD PASSWORD;
다음을 바꿉니다.
USER_NAME
: 권한을 부여하려는 사용자의 이름입니다.PASSWORD
: 사용자의 비밀번호입니다.