【 使用环境 】生产环境
【 OB or 其他组件 】OB
【 使用版本 】4.4.2
【问题描述】
CREATE TABLE image_search (
id int(11) NOT NULL AUTO_INCREMENT,
product_id int(11) NOT NULL DEFAULT ‘0’ COMMENT ‘业务关联id’,
image_id int(11) NOT NULL DEFAULT ‘0’ COMMENT ‘图片表id:image_info表id’,
original int(11) NOT NULL DEFAULT ‘0’ COMMENT '图片业务来源代码: ',
int_attr1 int(11) DEFAULT ‘0’ COMMENT ‘检索字段 - int类型1’,
int_attr2 int(11) DEFAULT ‘0’ COMMENT ‘检索字段 - int类型2’,
int_attr3 int(11) DEFAULT ‘0’ COMMENT ‘检索字段 - int类型3’,
str_attr1 varchar(20) DEFAULT ‘’ COMMENT ‘检索字段- str类型1’,
str_attr2 varchar(20) DEFAULT ‘’ COMMENT ‘检索字段- str类型2’,
str_attr3 varchar(20) DEFAULT ‘’ COMMENT ‘检索字段- str类型3’,
embedding VECTOR(768) DEFAULT NULL,
create_time timestamp(3) NULL DEFAULT CURRENT_TIMESTAMP(3),
modify_time timestamp(3) NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
PRIMARY KEY (id),
UNIQUE KEY uniq_product_id_image_id_original (product_id, image_id, original) BLOCK_SIZE 16384 LOCAL,
VECTOR KEY img_embedding_idx (embedding) WITH (DISTANCE=L2, TYPE=HNSW, M=64, EF_CONSTRUCTION=200, EF_SEARCH=64, LIB=VSAG) BLOCK_SIZE 16384,
VECTOR KEY idx_1785055552074495 (embedding) WITH (DISTANCE=L2, TYPE=HNSW, M=64, EF_CONSTRUCTION=200, EF_SEARCH=64, LIB=VSAG) BLOCK_SIZE 16384
) ORGANIZATION INDEX AUTO_INCREMENT = 20248515 AUTO_INCREMENT_MODE = ‘ORDER’ DEFAULT CHARSET = utf8mb4 ROW_FORMAT = DYNAMIC COMPRESSION = ‘zstd_1.3.8’ REPLICA_NUM = 3 BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE ENABLE_MACRO_BLOCK_BLOOM_FILTER = FALSE TABLET_SIZE = 134217728 PCTFREE = 0 TABLEGROUP = ‘imagesearch’;
如上,是我的向量表。
其中的向量索引idx_1785055552074495。 是莫名其妙多出来的···
而且当使用 create table image_search_new like image_search. 创建新表时,是没有idx_1785055552074495这个索引的。
疑问1:单个向量索引大小有上限?超过这个上限,会新建一个索引承接数据?
select dbms_vector.index_vector_memory_estimate
(
‘image_search’
,‘embedding’
,‘HNSW’
,‘DISTANCE=L2, TYPE=HNSW, M=64, EF_CONSTRUCTION=200, EF_SEARCH=64, LIB=VSAG’
);
执行结果。推荐:Suggested minimum vector memory is 150.5 GB
实际内存占用:98G。 差了一半。
select * from oceanbase.GV$OB_VECTOR_MEMORY
| SVR_IP | SVR_PORT | TENANT_ID | VECTOR_MEM_HOLD | VECTOR_MEM_USED | VECTOR_MEM_LIMIT |
|---|---|---|---|---|---|
| 192.168.2.10 | 2882 | 1006 | 97936468050 | 93043893518 | 201246061350 |
疑问二:向量索引内存占用预估值比实际占用内存大50%。有没有更精确的预估方法?