SPL性能提升-单键值查找

2024-01-06 00:30
文章标签 性能 查找 提升 spl 单键

本文主要是介绍SPL性能提升-单键值查找,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一.介绍

集算器是一款程序化数据运算工具,它能够执行各类数据分析与结构化计算,也可以自由访问数据库,完成在线数据分析。
在这里插入图片描述
支持各种数据源混合查询,离散与集合的充分结合,超强有序计算,提倡分步计算

官网:http://www.scudata.com.cn/

二.准备

1.下载学习资源:http://www.raqsoft.com.cn/wx/course-performance-optimizing.html

2.安装完毕打开集算器,设置seek为主目录
在这里插入图片描述
3.切换到主目录

在这里插入图片描述

4.执行脚本
在这里插入图片描述
1、“主目录\dfx\orders.dfx”,生成订单集文件"主目录\data\btx\orders.btx"。
2、“主目录\dfx\residents.dfx”,生成居民集文件"主目录\data\btx\residents.btx"
3、“主目录\dfx\fulltext.dfx”,生成全文检索组文件"主目录\data\ctx\fulltext.ctx"“。
4、“主目录\dfx\keyvalues.dfx”,生成键值组文件"主目录\data\ctx\col.ctx”"。

三.内存-单键值查找

一.准备数据

执行p1.1.dfx,生成一百万数据量的客户序表customer,并随机取出1000个id、name
在这里插入图片描述

二.内存-二分法

在这里插入图片描述
1.打开p1.2.dfx,用顺序查找,记录执行时间
在这里插入图片描述
2.打开p1.2.dfx,用二分法改写,记录执行时间
在这里插入图片描述
注意:二分法找name是不行的,二分法查找的必须是有序的集合

=customer.select@b(name= ="Luke")

三.序号定位

在这里插入图片描述
在这里插入图片描述
1.打开p1.3.dfx,用序号定位法改写,比较执行时间
在这里插入图片描述
注意:基于无序集合理论的关系数据库,没有提供序号定位的手段,即使可以用序号定位时也只能用主键查找

四.哈希索引

在这里插入图片描述
索引越长,产生哈希冲突的概率越小,查找速度越快,但占用内存越大

索引长度缺省:原序列长度和2000万的较小值。当users表长度为100万的时候,索引长度缺省就是100万,哈希值重复的情况就很少了。

1.打开p1.4.dfx,用哈希索引改写
在这里插入图片描述
我们的数据是100w,所以索引缺省值是100w,冲突率小,查询快

2.将A2的index()改为index(10000),强行修改索引缺省值
在这里插入图片描述
可以看到缺省值小了,哈希冲突概率增大,查询效率变低

四.位置索引

在这里插入图片描述
1.打开p1.5.dfx-文件,观察遍历查找的写法,记录执行时间
在这里插入图片描述
2.改写为位置索引法查找
在这里插入图片描述

五.多层序号查找

在这里插入图片描述
在这里插入图片描述
1.打开p1.6.dfx,居民表residents取出十万条数据,idcards随机取出100个idcard身份证号
在这里插入图片描述
2.身份证号前十四位转换为排号键代码如下,补全剩下的三位转换代码
在这里插入图片描述

六.多层序号与限制长度哈希索引对比

1.打开p1.8.dfx,利用长度1000的哈希索引查找10000次
在这里插入图片描述
2.改写p1.8.dfx,将residents主键改为idcardk,哈希索引改为排号键索引
在这里插入图片描述

四.外存-单键值查找

一.外存-二分法

在这里插入图片描述
在这里插入图片描述
1.打开p1.9.dfx,用遍历法查找oid==8123456,记录执行时间
在这里插入图片描述
2.利用二分法(外存)改写p1.9.dfx,比较性能
在这里插入图片描述

二.外存-排序索引

在这里插入图片描述
在这里插入图片描述
1.打开p1.10.dfx,无索引查找1000个随机的订单编号,记录执行时间
在这里插入图片描述
2.改写p1.10.dfx,使用排序索引查找,比较性能,查看产生的索引文件
在这里插入图片描述
在seek\data\ctx目录中发现订单索引文件
在这里插入图片描述

三.外存-哈希索引

在这里插入图片描述
1.打开p1.11.dfx,用遍历法查找1000个随机的订单编号,记录执行时间
在这里插入图片描述
2.改写p1.11.dfx,使用哈希索引查找,比较性能
在这里插入图片描述
在这里插入图片描述
保证生成的索引文件名称不能重复,平均索引长度为1最合适,冲突最小

这篇关于SPL性能提升-单键值查找的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/574640

相关文章

linux查找java项目日志查找报错信息方式

《linux查找java项目日志查找报错信息方式》日志查找定位步骤:进入项目,用tail-f实时跟踪日志,tail-n1000查看末尾1000行,grep搜索关键词或时间,vim内精准查找并高亮定位,... 目录日志查找定位在当前文件里找到报错消息总结日志查找定位1.cd 进入项目2.正常日志 和错误日

Docker多阶段镜像构建与缓存利用性能优化实践指南

《Docker多阶段镜像构建与缓存利用性能优化实践指南》这篇文章将从原理层面深入解析Docker多阶段构建与缓存机制,结合实际项目示例,说明如何有效利用构建缓存,组织镜像层次,最大化提升构建速度并减少... 目录一、技术背景与应用场景二、核心原理深入分析三、关键 dockerfile 解读3.1 Docke

从原理到实战解析Java Stream 的并行流性能优化

《从原理到实战解析JavaStream的并行流性能优化》本文给大家介绍JavaStream的并行流性能优化:从原理到实战的全攻略,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的... 目录一、并行流的核心原理与适用场景二、性能优化的核心策略1. 合理设置并行度:打破默认阈值2. 避免装箱

深度剖析SpringBoot日志性能提升的原因与解决

《深度剖析SpringBoot日志性能提升的原因与解决》日志记录本该是辅助工具,却为何成了性能瓶颈,SpringBoot如何用代码彻底破解日志导致的高延迟问题,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言第一章:日志性能陷阱的底层原理1.1 日志级别的“双刃剑”效应1.2 同步日志的“吞吐量杀手”

Java利用@SneakyThrows注解提升异常处理效率详解

《Java利用@SneakyThrows注解提升异常处理效率详解》这篇文章将深度剖析@SneakyThrows的原理,用法,适用场景以及隐藏的陷阱,看看它如何让Java异常处理效率飙升50%,感兴趣的... 目录前言一、检查型异常的“诅咒”:为什么Java开发者讨厌它1.1 检查型异常的痛点1.2 为什么说

C#高效实现Word文档内容查找与替换的6种方法

《C#高效实现Word文档内容查找与替换的6种方法》在日常文档处理工作中,尤其是面对大型Word文档时,手动查找、替换文本往往既耗时又容易出错,本文整理了C#查找与替换Word内容的6种方法,大家可以... 目录环境准备方法一:查找文本并替换为新文本方法二:使用正则表达式查找并替换文本方法三:将文本替换为图

Python中高级文本模式匹配与查找技术指南

《Python中高级文本模式匹配与查找技术指南》文本处理是编程世界的永恒主题,而模式匹配则是文本处理的基石,本文将深度剖析PythonCookbook中的核心匹配技术,并结合实际工程案例展示其应用,希... 目录引言一、基础工具:字符串方法与序列匹配二、正则表达式:模式匹配的瑞士军刀2.1 re模块核心AP

Java慢查询排查与性能调优完整实战指南

《Java慢查询排查与性能调优完整实战指南》Java调优是一个广泛的话题,它涵盖了代码优化、内存管理、并发处理等多个方面,:本文主要介绍Java慢查询排查与性能调优的相关资料,文中通过代码介绍的非... 目录1. 事故全景:从告警到定位1.1 事故时间线1.2 关键指标异常1.3 排查工具链2. 深度剖析:

深入解析Java NIO在高并发场景下的性能优化实践指南

《深入解析JavaNIO在高并发场景下的性能优化实践指南》随着互联网业务不断演进,对高并发、低延时网络服务的需求日益增长,本文将深入解析JavaNIO在高并发场景下的性能优化方法,希望对大家有所帮助... 目录简介一、技术背景与应用场景二、核心原理深入分析2.1 Selector多路复用2.2 Buffer

基于Python Playwright进行前端性能测试的脚本实现

《基于PythonPlaywright进行前端性能测试的脚本实现》在当今Web应用开发中,性能优化是提升用户体验的关键因素之一,本文将介绍如何使用Playwright构建一个自动化性能测试工具,希望... 目录引言工具概述整体架构核心实现解析1. 浏览器初始化2. 性能数据收集3. 资源分析4. 关键性能指