达梦函数索引网关密文索引机制测试虚拟列测试

2024-05-29 20:32

本文主要是介绍达梦函数索引网关密文索引机制测试虚拟列测试,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


### Code Reference
  • URL:p119(函数索引) DM8 系统管理员手册 p189(explain sql)
  • DESC:达梦函数索引&网关密文索引机制测试&虚拟列测试
  • Last Update:2020-7-2 19:30
    • 测试表加密

      • 创建测试表
          create table test1.tab_index_100W as select rownum as id,to_char(sysdate + rownum / 24 / 3600, 'yyyy-mm-dd hh24:mi:ss') as 办卡日期,trunc(18510911437-dbms_random.value(-100000, 100000)) as 电话号码,'TDE' || dbms_random.string('x', 20) 身份证号,'TDE' || dbms_random.string('x', 15) 银行卡号from dualconnect by level <= 1000000;alter table "TEST1"."TAB_INDEX_100W" add primary key("ID");                
        
      • 加密并授权
      • 查询测试(全表扫描)

        10.727s

        select * from TEST1.TAB_INDEX_100W T where T.电话号码 = 18510911417

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7nqWCrDQ-1593710451660)(http://redevm/uploads/big/5227b791e14a28fed52b75eda5c7ee72.png)]
    • 哈希值&索引测试

      • 增加哈希特征列&初始化特征值

        • 哈希算法

            SYS.DBMS_OBFUSCATION_TOOLKIT.MD5(utl_raw.CAST_TO_RAW('oracle'))封装系统自带的摘要算法为确定函数create or replace function test1."fun_md5"(pvb_str varchar2(1000))return varbinary(1000) deterministic asbeginreturn SYS.DBMS_OBFUSCATION_TOOLKIT.MD5(utl_raw.CAST_TO_RAW(pvb_str));end;
          
        • 增加摘要列

            alter table "TEST1"."SS_ENC_TAB_1d9druqb54d" add column("hashValue" VARBINARY(100));
          
        • 初始化摘要值

            update "TEST1"."SS_ENC_TAB_1d9druqb54d" set "hashValue"=SYS.DBMS_OBFUSCATION_TOOLKIT.MD5(utl_raw.CAST_TO_RAW(身份证号))
          
        • 创建普通索引

            create index idx_hash on "TEST1"."SS_ENC_TAB_1d9druqb54d" ("hashValue")
          
        • 创建函数索引

            drop index "TEST1".idx_funhash;create index idx_funhash on "TEST1"."SS_ENC_TAB_1d9druqb54d"(test1."fun_md5"(身份证号));函数索引表达式包含有非法的列类型、不确定性函数、非静态方法或集函数(封装函数后无法正常创建)
          
        • 虚拟列

            alter table "TEST1"."SS_ENC_TAB_1d9druqb54d" add column("virtualHash" varbinary(100) as (test1."fun_md5"(身份证号)));函数不能确定(封装函数后正常创建)     
          
      • 测试使用不同的查询方式的性能差异&执行计划

        • 使用主键(1)
            explain select * from "TEST1"."SS_ENC_TAB_1d9druqb54d" where ID in (251846,533081,533530,564719);                            
          
        • 使用明文,未建索引(2)
            explain select * from "TEST1"."SS_ENC_TAB_1d9druqb54d" where 身份证号 IN('TDE64BWJOD0Q2O9GD6M9GL0','TDEFTYV4YR5QSL5657CD4NY','TDEALCXOJUJITGOQESIYK6L','TDEKNNET2QSO3X6047M95JJ')            
          
        • 使用哈希列(3)
            explain select * from "TEST1"."SS_ENC_TAB_1d9druqb54d" where "hashValue" in (SYS.DBMS_OBFUSCATION_TOOLKIT.MD5(utl_raw.CAST_TO_RAW('TDE64BWJOD0Q2O9GD6M9GL0')),SYS.DBMS_OBFUSCATION_TOOLKIT.MD5(utl_raw.CAST_TO_RAW('TDEFTYV4YR5QSL5657CD4NY')),SYS.DBMS_OBFUSCATION_TOOLKIT.MD5(utl_raw.CAST_TO_RAW('TDEALCXOJUJITGOQESIYK6L')),SYS.DBMS_OBFUSCATION_TOOLKIT.MD5(utl_raw.CAST_TO_RAW('TDEQVQHEEKE8223NHHIN41V')));执行很慢,在虚拟列创建索引,报和函数索引相同错误。explain select * from "TEST1"."SS_ENC_TAB_1d9druqb54d" where "virtualHash" in (test1."fun_md5"(utl_raw.CAST_TO_RAW('TDE64BWJOD0Q2O9GD6M9GL0')),test1."fun_md5"(utl_raw.CAST_TO_RAW('TDEFTYV4YR5QSL5657CD4NY')),test1."fun_md5"(utl_raw.CAST_TO_RAW('TDEALCXOJUJITGOQESIYK6L')),test1."fun_md5"(utl_raw.CAST_TO_RAW('TDEQVQHEEKE8223NHHIN41V')));                                            
          
        • 使用哈希列计算出的值(2)
            explain select * from "TEST1"."SS_ENC_TAB_1d9druqb54d" where "hashValue" in ('0x3ADF273B01AAC189DF86F6C476DFAB9F','0x512862544080D8845E370FDFF31C38E7','0x2DDC00C337BAA23088D22D8278E238C3','0x4FCBD80BE2D4373930773694355C63B3');
          

这篇关于达梦函数索引网关密文索引机制测试虚拟列测试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Nginx设置连接超时并进行测试的方法步骤

《Nginx设置连接超时并进行测试的方法步骤》在高并发场景下,如果客户端与服务器的连接长时间未响应,会占用大量的系统资源,影响其他正常请求的处理效率,为了解决这个问题,可以通过设置Nginx的连接... 目录设置连接超时目的操作步骤测试连接超时测试方法:总结:设置连接超时目的设置客户端与服务器之间的连接

Python itertools中accumulate函数用法及使用运用详细讲解

《Pythonitertools中accumulate函数用法及使用运用详细讲解》:本文主要介绍Python的itertools库中的accumulate函数,该函数可以计算累积和或通过指定函数... 目录1.1前言:1.2定义:1.3衍生用法:1.3Leetcode的实际运用:总结 1.1前言:本文将详

Spring排序机制之接口与注解的使用方法

《Spring排序机制之接口与注解的使用方法》本文介绍了Spring中多种排序机制,包括Ordered接口、PriorityOrdered接口、@Order注解和@Priority注解,提供了详细示例... 目录一、Spring 排序的需求场景二、Spring 中的排序机制1、Ordered 接口2、Pri

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE

MySQL数据库函数之JSON_EXTRACT示例代码

《MySQL数据库函数之JSON_EXTRACT示例代码》:本文主要介绍MySQL数据库函数之JSON_EXTRACT的相关资料,JSON_EXTRACT()函数用于从JSON文档中提取值,支持对... 目录前言基本语法路径表达式示例示例 1: 提取简单值示例 2: 提取嵌套值示例 3: 提取数组中的值注意

MySQL 缓存机制与架构解析(最新推荐)

《MySQL缓存机制与架构解析(最新推荐)》本文详细介绍了MySQL的缓存机制和整体架构,包括一级缓存(InnoDBBufferPool)和二级缓存(QueryCache),文章还探讨了SQL... 目录一、mysql缓存机制概述二、MySQL整体架构三、SQL查询执行全流程四、MySQL 8.0为何移除查

Java实现Elasticsearch查询当前索引全部数据的完整代码

《Java实现Elasticsearch查询当前索引全部数据的完整代码》:本文主要介绍如何在Java中实现查询Elasticsearch索引中指定条件下的全部数据,通过设置滚动查询参数(scrol... 目录需求背景通常情况Java 实现查询 Elasticsearch 全部数据写在最后需求背景通常情况下

一文详解Java Condition的await和signal等待通知机制

《一文详解JavaCondition的await和signal等待通知机制》这篇文章主要为大家详细介绍了JavaCondition的await和signal等待通知机制的相关知识,文中的示例代码讲... 目录1. Condition的核心方法2. 使用场景与优势3. 使用流程与规范基本模板生产者-消费者示例

Pandas中多重索引技巧的实现

《Pandas中多重索引技巧的实现》Pandas中的多重索引功能强大,适用于处理多维数据,本文就来介绍一下多重索引技巧,具有一定的参考价值,感兴趣的可以了解一下... 目录1.多重索引概述2.多重索引的基本操作2.1 选择和切片多重索引2.2 交换层级与重设索引3.多重索引的高级操作3.1 多重索引的分组聚

Java function函数式接口的使用方法与实例

《Javafunction函数式接口的使用方法与实例》:本文主要介绍Javafunction函数式接口的使用方法与实例,函数式接口如一支未完成的诗篇,用Lambda表达式作韵脚,将代码的机械美感... 目录引言-当代码遇见诗性一、函数式接口的生物学解构1.1 函数式接口的基因密码1.2 六大核心接口的形态学