相似图像搜索插件imgsmlr性能测试与优化方法是什么

技术相似图像搜索插件imgsmlr性能测试与优化方法是什么这篇文章主要讲解了“相似图像搜索插件imgsmlr性能测试与优化方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究

这篇文章主要讲解了"相似图像搜索插件imgsmlr性能测试与优化方法是什么",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"相似图像搜索插件imgsmlr性能测试与优化方法是什么"吧!

citus (8节点, 128 shard)

1、安装imgsmlr插件软件(所有节点)

2、创建扩展imgsmlr(所有节点)

3、生成随机img sig的函数(cn,因为只需要用于插入,不需要下推)

creatorreplaceffectionpublic。gen _ rand _ img _ SIG(整数)

返回签名

语言结构化查询语言

严格的

阿斯$函数$

select('(' | | rtrim(ltrim(array(select(random()* $ 1): float 4 from generate _ series(1,16)):text,' { '),' } ')| | ')'): signature;

$函数$4,创建测试表(cn)

创建表t _ img(idiprimarykey,SIG签名);5、创建索引(cn)

createindexidx _ t _ img _ 1 ont _ imgusingist(SIG);6、创建分片表(128碎片)(cn)

setcitus.shard _ count=128

选择create _ distributed _ table(' t _ img ',' id ');7、写入4.5亿随机图像特征值

vitest.sql

\setidrandom(1,2000000000)

insertintot_imgvalues(:id,gen _ rand _ img _ SIG(10))on conflict(id)dono thing;pgbench-Mprepared-n-r-P1-f/test。SQL-c128-j128-t 10000000写入约4.5亿随机图像特征值

postgres=# selectcount(*)from _ img;

数数

-

446953185

(1低)postgres=# select * from _ imglimit 10;

id|nb

sp;                   sig                                                                                  
-----------+------------------------------------------------------------------------------------------------------------------------------------------------------------------  
  47902935 | (5.861920, 1.062770, 8.318020, 2.205840, 0.202951, 6.956610, 1.413190, 2.898480, 8.961630, 6.377800, 1.110450, 6.684520, 2.286290, 7.850760, 1.832650, 0.074348)  
 174656795 | (2.165030, 0.183753, 9.913950, 9.208260, 5.165660, 6.603510, 2.008380, 8.117910, 2.358590, 5.466330, 9.139280, 8.893700, 4.664190, 9.361670, 9.016990, 2.271000)  
  96186891 | (9.605980, 4.395920, 4.336720, 3.174360, 8.706960, 0.155107, 9.408940, 4.531100, 2.783530, 5.681780, 9.792380, 6.428320, 2.983760, 9.733290, 7.635160, 7.035780)  
  55061667 | (7.567960, 5.874530, 5.222040, 5.638520, 3.488960, 8.770750, 7.054610, 7.239630, 9.202280, 9.465020, 4.079080, 5.729770, 0.475227, 8.434800, 6.873730, 5.140080)  
  64659434 | (4.860650, 3.984440, 3.009900, 5.116680, 6.489150, 4.224800, 0.609752, 8.731120, 6.577390, 8.542540, 9.096120, 8.976700, 8.936000, 2.836270, 7.186250, 6.264300)  
  87143098 | (4.801570, 7.870150, 0.939599, 3.666670, 1.102340, 5.819580, 6.511330, 6.430760, 0.584531, 3.024190, 6.255460, 8.823820, 5.076960, 0.181344, 8.137380, 1.230360)  
 109245945 | (7.541850, 7.201460, 6.858400, 2.605210, 1.283090, 7.525200, 4.213240, 8.413760, 9.707390, 1.916970, 1.719320, 1.255280, 9.006780, 4.851420, 2.168250, 5.997360)  
   4979218 | (8.463000, 4.051410, 9.057320, 1.367980, 3.344340, 7.032640, 8.583770, 1.873090, 5.524810, 0.187254, 5.783270, 6.141040, 2.479410, 6.406450, 9.371700, 0.050690)  
  72846137 | (7.018560, 4.039150, 9.114800, 2.911170, 5.531180, 8.557330, 6.739050, 0.103649, 3.691390, 7.584640, 8.184180, 0.599390, 9.037130, 4.090610, 4.369770, 6.480000)  
  36813995 | (4.643480, 8.704640, 1.073880, 2.665530, 3.298300, 9.244280, 5.768050, 0.887555, 5.990350, 2.991390, 6.186550, 6.464940, 6.187140, 0.150242, 2.123070, 2.932270)  
(10 rows)

查询性能

1、由于imgsmlr的一些类型没有写对应的send, recv函数接口,所以需要使用TEXT交互。CN设置参数如下

set citus.binary_master_copy_format =off;

未设置时报错

WARNING:  42883: no binary output function available for type signature  
LOCATION:  ReportResultError, remote_commands.c:302

2、创建生成随机图像特征值stable函数,便于测试。(所有节点)

create or replace function get_rand_img_sig(int) returns signature as $$  
  select ('('||rtrim(ltrim(array(select (random()*$1)::float4 from generate_series(1,16))::text,'{'),'}')||')')::signature;  
$$ language sql strict stable;

3、性能

postgres=# select * from t_img order by sig <-> get_rand_img_sig(10) limit 1;  
    id     |                                                                               sig                                                                                  
-----------+------------------------------------------------------------------------------------------------------------------------------------------------------------------  
 565459043 | (1.790420, 9.463960, 7.089370, 5.888980, 0.974693, 2.148580, 6.153310, 9.098670, 2.815750, 7.625620, 7.598990, 7.141670, 7.189410, 4.630740, 3.673030, 7.820140)  
(1 row)  
  
Time: 612.839 ms

4、执行计划

postgres=# explain (analyze,verbose,timing,costs,buffers) select * from t_img order by sig <-> get_rand_img_sig(10) limit 1;  
                                                                                         QUERY PLAN                                                                                            
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------  
 Limit  (cost=0.00..0.00 rows=0 width=0) (actual time=823.235..823.237 rows=1 loops=1)  
   Output: remote_scan.id, remote_scan.sig, remote_scan.worker_column_3  
   ->  Sort  (cost=0.00..0.00 rows=0 width=0) (actual time=823.233..823.233 rows=1 loops=1)  
         Output: remote_scan.id, remote_scan.sig, remote_scan.worker_column_3  
         Sort Key: remote_scan.worker_column_3  
         Sort Method: top-N heapsort  Memory: 25kB  
         ->  Custom Scan (Citus Real-Time)  (cost=0.00..0.00 rows=0 width=0) (actual time=823.185..823.200 rows=128 loops=1)  
               Output: remote_scan.id, remote_scan.sig, remote_scan.worker_column_3  
               Task Count: 128  
               Tasks Shown: One of 128  
               ->  Task  
                     Node: host=172.24.211.224 port=1921 dbname=postgres  
                     ->  Limit  (cost=0.67..0.97 rows=1 width=72) (actual time=151.011..151.012 rows=1 loops=1)  
                           Output: id, sig, ((sig <-> get_rand_img_sig(10)))  
                           Buffers: shared hit=5769  
                           ->  Index Scan using idx_t_img_1_106940 on public.t_img_106940 t_img  (cost=0.67..1052191.36 rows=3488100 width=72) (actual time=151.008..151.009 rows=1 loops=1)  
                                 Output: id, sig, (sig <-> get_rand_img_sig(10))  
                                 Order By: (t_img.sig <-> get_rand_img_sig(10))  
                                 Buffers: shared hit=5769  
                         Planning time: 1.021 ms  
                         Execution time: 156.785 ms  
 Planning time: 2.364 ms  
 Execution time: 823.577 ms  
(23 rows)
postgres=# select * from t_img order by sig <-> get_rand_img_sig(10) limit 1;  
    id    |                                                                               sig                                                                                  
----------+------------------------------------------------------------------------------------------------------------------------------------------------------------------  
 30290963 | (4.656000, 7.143380, 7.738080, 1.971150, 4.294430, 4.397560, 7.121350, 8.629690, 2.768710, 2.715320, 0.358493, 0.486682, 5.985860, 8.319860, 2.560290, 3.384480)  
(1 row)  
  
Time: 612.783 ms  
postgres=# select * from t_img order by sig <-> get_rand_img_sig(10) limit 1;  
     id     |                                                                               sig                                                                                  
------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------  
 1632633492 | (6.969460, 5.835990, 0.629481, 7.621580, 0.171138, 2.586950, 1.483150, 5.526530, 3.835270, 2.275350, 3.470760, 4.934100, 0.442193, 1.843810, 0.561291, 0.647721)  
(1 row)  
  
Time: 610.960 ms

感谢各位的阅读,以上就是“相似图像搜索插件imgsmlr性能测试与优化方法是什么”的内容了,经过本文的学习后,相信大家对相似图像搜索插件imgsmlr性能测试与优化方法是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/80644.html

(0)

相关推荐

  • 如何理解Java设计模式的装饰模式

    技术如何理解Java设计模式的装饰模式这篇文章主要介绍“如何理解Java设计模式的装饰模式”,在日常操作中,相信很多人在如何理解Java设计模式的装饰模式问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望

    攻略 2021年11月8日
  • 我的青春色彩作文800,我的青春一路花香作文。800字

    技术我的青春色彩作文800,我的青春一路花香作文。800字一路花香如果说生命只是一个不能重复的花季,那搏动的心便是一朵永不凋零的春花我的青春色彩作文800。早春二月,乍暖还寒之时,鹅黄隐约,新绿悄绽,昭示着生命的勃勃,那

    生活 2021年10月27日
  • DG归档日志删除脚本怎么写

    技术DG归档日志删除脚本怎么写这篇文章主要介绍DG归档日志删除脚本怎么写,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!由于磁盘资源紧缺,需要一个归档日志处理的策略网上找了几个脚本,发现写的那么麻烦

    攻略 2021年11月9日
  • Bootstrap中如何导航组件和选项卡组件

    技术Bootstrap中如何导航组件和选项卡组件本篇内容介绍了“Bootstrap中如何导航组件和选项卡组件”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧

    攻略 2021年11月25日
  • 如何分析ASP.NET三层结构及三层架构的缺点

    技术如何分析ASP.NET三层结构及三层架构的缺点如何分析ASP.NET三层结构及三层架构的缺点,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。ASP.NET

    攻略 2021年11月26日
  • 稳压二极管工作原理,稳压管的工作原理是什么

    技术稳压二极管工作原理,稳压管的工作原理是什么要理解稳压二极管的工作原理稳压二极管工作原理,只要了解二极管的反向特性就行了。所有的晶体二极管,其基本特性是单向导通。就是说,正向加压导通,反向加压不通。这里有个条件就是反向

    生活 2021年10月24日