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

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

相关文章

JAVA线程的周期及调度机制详解

《JAVA线程的周期及调度机制详解》Java线程的生命周期包括NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING和TERMINATED,线程调度依赖操作系统,采用抢占... 目录Java线程的生命周期线程状态转换示例代码JAVA线程调度机制优先级设置示例注意事项JAVA线程

Java中自旋锁与CAS机制的深层关系与区别

《Java中自旋锁与CAS机制的深层关系与区别》CAS算法即比较并替换,是一种实现并发编程时常用到的算法,Java并发包中的很多类都使用了CAS算法,:本文主要介绍Java中自旋锁与CAS机制深层... 目录1. 引言2. 比较并交换 (Compare-and-Swap, CAS) 核心原理2.1 CAS

Spring Boot 集成 mybatis核心机制

《SpringBoot集成mybatis核心机制》这篇文章给大家介绍SpringBoot集成mybatis核心机制,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值... 目录Spring Boot浅析1.依赖管理(Starter POMs)2.自动配置(AutoConfigu

pandas使用apply函数给表格同时添加多列

《pandas使用apply函数给表格同时添加多列》本文介绍了利用Pandas的apply函数在DataFrame中同时添加多列,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习... 目录一、Pandas使用apply函数给表格同时添加多列二、应用示例一、Pandas使用apply函

CPython与PyPy解释器架构的性能测试结果对比

《CPython与PyPy解释器架构的性能测试结果对比》Python解释器的选择对应用程序性能有着决定性影响,CPython以其稳定性和丰富的生态系统著称;而PyPy作为基于JIT(即时编译)技术的替... 目录引言python解释器架构概述CPython架构解析PyPy架构解析架构对比可视化性能基准测试测

Python中Namespace()函数详解

《Python中Namespace()函数详解》Namespace是argparse模块提供的一个类,用于创建命名空间对象,它允许通过点操作符访问数据,比字典更易读,在深度学习项目中常用于加载配置、命... 目录1. 为什么使用 Namespace?2. Namespace 的本质是什么?3. Namesp

MySQL中如何求平均值常见实例(AVG函数详解)

《MySQL中如何求平均值常见实例(AVG函数详解)》MySQLavg()是一个聚合函数,用于返回各种记录中表达式的平均值,:本文主要介绍MySQL中用AVG函数如何求平均值的相关资料,文中通过代... 目录前言一、基本语法二、示例讲解1. 计算全表平均分2. 计算某门课程的平均分(例如:Math)三、结合

Redis的安全机制详细介绍及配置方法

《Redis的安全机制详细介绍及配置方法》本文介绍Redis安全机制的配置方法,包括绑定IP地址、设置密码、保护模式、禁用危险命令、防火墙限制、TLS加密、客户端连接限制、最大内存使用和日志审计等,通... 目录1. 绑定 IP 地址2. 设置密码3. 保护模式4. 禁用危险命令5. 通过防火墙限制访问6.

Elasticsearch 的索引管理与映射配置实战指南

《Elasticsearch的索引管理与映射配置实战指南》在本文中,我们深入探讨了Elasticsearch中索引与映射的基本概念及其重要性,通过详细的操作示例,我们了解了如何创建、更新和删除索引,... 目录一、索引操作(一)创建索引(二)删除索引(三)关闭索引(四)打开索引(五)索引别名二、映射操作(一

MySQL索引踩坑合集从入门到精通

《MySQL索引踩坑合集从入门到精通》本文详细介绍了MySQL索引的使用,包括索引的类型、创建、使用、优化技巧及最佳实践,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友... 目录mysql索引完整教程:从入门到入土(附实战踩坑指南)一、索引是什么?为什么需要它?1.1 什么