人大金仓KingbaseES大小写敏感性专题

人大金仓的 KingbaseES V8R3 在初始化的时候可以选择大小写是否敏感,这个一旦选定之后,没有办法通过参数来进行调整,只能重新初始化来调整。所以先搞明白什么是大小写敏感性,我们到底需要大小写敏感还是大小写不敏感,然后在初始化时做好选择,避免不必要的麻烦。
首先从整体上介绍一下大小写敏感性与大小写不敏感的一些区别
在这里插入图片描述
大小写敏感性主要对以上三个方面有影响。连接数据库很容易理解,下面分别从元数据和数据内容两个方面实际验证一下。

元数据

元数据(metadata)简单理解就是关于数据结构的数据,例如对象信息(表的结构信息,列的类型长度等信息)。其中跟大小写敏感性相关的主要是这些信息中的名称信息,例如表名、列名等。
在这里插入图片描述
上表展示了创建时的几种情况下,在进行查询时是否能够正常访问,其实这里不限于查询,所有使用到对象名的情况都是同样的,例如drop \ delete \ update \ insert 等操作。这里可以很直观的看到大小写不敏感时,加不加双引号,大小写怎样组合,在使用时都会认为是同一个对象,都可以正常访问。而在大小写敏感环境下,就会分为两种情况,不加双引号(大小写随意组合)和加双引号全大写是等价的,创建时不加双引号,使用时要么也不加双引号,要么加双引号全大写;如果创建时加了双引号,那么在使用时就必须加双引号,并且大小写组合要跟创建时保持一致。

数据内容

数据内容指的时数据库中存储的用户数据。
在这里插入图片描述
通过这个case可以看出来,在显示时,两种情况都是能按照插入的情况把大小写信息显示出来的。但是在大小写不敏感时,作为where条件进行数据过滤时,会忽略大小写敏感性,也就是说会认为所有大小写组合都是一种情况,这显然不符合大部分人的使用习惯和认知。在大小写敏感时,作为where条件也会区分大小写,这才符合我们平时的使用习惯和认知。

整体上来说,我认为大小写敏感的情况更符合我们的使用习惯和认知。

查看大小写敏感性

show case_sensitive ;

在这里插入图片描述
off : 表示大小写不敏感
on : 表示大小写敏感

设置大小写敏感性

大小写敏感性是实例级参数,只有在初始化数据库时才能进行设置,一旦设置后,无法进行修改。

1. 安装数据库时设置

安装数据库时,在“setup initdb parameter”(设置初始化参数)这一步,有一个“case_insensitive”的复选框。默认是不选中的,也就是大小写敏感的;如果要设置为大小写不敏感,需要选中复选框。
在这里插入图片描述

2. 重新初始化数据库

如果以及安装过数据库,甚至以及在使用了,发现需要修改大小写敏感性,那就比较麻烦了。可以直接选择重新安装数据库,在安装时进行设置。不想重新安装数据库的话,可以通过重新初始化数据库的方法来进行设置。这两种方法都会清空数据,如果有数据,一定要进行备份,最后进行还原。 关于备份还原,后面专门会写一篇文章。

  • 初始化之前要备份数据、关闭数据库、给data目录重命名。

  • 初始化命令:initdb -U SYSTEM -W “Kingbase@2021” -‌-case-insensitive -D /opt/Kingbase/ES/V8/data -E UTF-8
    -U :指定管理员用户名,一般使用 SYSTEM 即可;
    -W :指定管理员密码,根据需要自行设置;
    -‌-case-insensitive :表示大小写不敏感,需要大小写敏感的话去掉该参数即可;
    -D :指定data目录,指定为原来的data目录路径即可;
    -E :指定编码。

  • 初始化完成后要手动启动数据库。
    在这里插入图片描述
    大概过程如图中演示的这样,最后如果需要原来的数据,可以将备份出来的数据还原回去。

 sys_restore -USYSTEM -W"Kingbase@2021" -dsamples /home/kingbase/samples.dmp
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值