索引是一种特殊的数据库结构,由数据表中的一列或多列组合而成,可以用来快速查询数据表中有某一特定值的记录。
索引结构:最常见的索引结构为 B*树索引
提高 GROUP BY 语句的效率,可以在 GROUP BY 之前过滤掉不需要的内容。
当 SQL 语句需要 UNION 两个查询结果集合时,这两个结果集合会以 UNION ALL 的方式被合并,在输出最终结果前进行排序。用 UNION ALL 替代 UNION, 这样排序就不是必要了,效率就会因此得到提高。
当 SQL 包含一对多表查询时,避免在 SELECT 子句中使用 DISTINCT,一般用 EXISTS 替换 DISTINCT 查询更为迅速。
- 回滚段上用于恢复数据的信息;
- 被程序语句获得的锁;
- redo log buffer 中的空间;
- 为管理上述 3 种资源中的内部花销。
避免使用 HAVING 子句,HAVING 只会在检索出所有记录之后才对结果集进行过滤,这个处理需要排序、总计等操作,可以通过 WHERE 子句限制记录的数目。on、where、having 三个都可以加条件子句,其中,on 是最先执行,where 次之,having 最后。
- on 是先把不符合条件的记录过滤后才进行统计,在两个表联接时才用 on;
- 在单表查询统计的情况下,如果要过滤的条件没有涉及到要计算字段,where 和 having 结果是一样的,但 where 比 having 快
- 如果涉及到计算字段,where 的作用时间是在计算之前完成,而 having 是在计算后才起作用,两者的结果会不同;
- 在多表联接查询时,on 比 where 更早起作用。首先会根据各个表之间的关联条件,把多个表合成一个临时表后,由 where 进行过滤再计算,计算完再由 having 进行过滤。
当删除表中的记录时,在通常情况下, 回滚段用来存放可以被恢复的信息。如果没有 COMMIT 事务,会将数据恢复到执行删除命令之前的状况;而当运用 TRUNCATE 时,回滚段不再存放任何可被恢复的信息。当命令运行后,数据不能被恢复。因此很少的资源被调用,执行时间也会很短。
在基于基础表的查询中可能会需要对另一个表进行联接。在这种情况下, 使用 EXISTS (或 NOT EXISTS )通常将提高查询的效率。在子查询中,NOT IN 子句将执行一个内部的排序和合并。无论在哪种情况下,NOT IN 都是最低效的(要对子查询中的表执行一个全表遍历),所以尽量将 NOT IN 改写成外连接( Outer Joins )或 NOT EXISTS。
MySQL 中执行 ,运算结果为 0;而 DM 数据库中执行结果为 11。
此问题是由于 MySQL 和 DM 数据库运算优先级不一致导致。
DM 数据库运算优先级:
MySQL 数据库运算优先级:
因此 MySQL 中该运算 ,实际执行顺序为:。
DM 中该运算 ,实际执行顺序为:。
性能优化 | 达梦技术文档
【问题描述】:通过如下语句给 varchar 类型绑定空值报错:字符转换出错。
【问题解决】:出现该报错是由于达梦默认 null 和空串不等价,解决办法如下:
- 修改 dm.ini,令 COMPATIBLE_MODE = 2;
- 重启数据库服务后生效
JDBC 接口 | 达梦技术文档
【问题描述】:利用如下程序获取存储过程的元数据信息,执行完后获取的元数据信息为空,jdbc 程序代码片段如下:
【问题描述】:由于未配置 SSL 环境而使用 SSL 登录。
【问题解决】:可以关闭 SSL 参数。使用 sysdba 登录执行以下语句:
然后重启达梦数据库服务即可。
【问题解决】:
- 设置大小写不敏感,此方法会影响查询结果集,因为其对结果集匹配也不区分大小写,需要根据业务自行评估是否可行。
- 在 mysql 数据库中,对象名默认是小写,达梦对象名默认是大写,在用达梦 DTS 工具迁移的时候,去掉“保持对象名大小写”的勾选,使对象名自动转换成大写,在 mybatis 查询的时候,即不需要加双引号强调小写。
mybatis-plus3.0 之后的版本才支持 DM 数据库,在选择使用 mybatisplus-jar 包版本时请注意版本号。
【问题描述】:.NET 程序中使用 DmBulkCopy 对象执行时报错:
【问题分析】:DmBulkCopy 对象用于快速批量装载数据。实现 IDisposable 接口。该功能依赖 DM 安装目录 bin 下的 dmfldr_dll.dll 等动态链接库,需要拷贝到应用程序的执行目录。
驱动文档里的说明:
DmProvider 文件夹中是完整的 DmProvider 驱动文件。使用 DmProvider 的 DmBulkCopy 对象,需要引用 dmfldr_dll.dll 以及此 dll 依赖的其他库。
添加 dmfldr_dll.dll 引用时会报错,这种方法无效。
【问题解决】:在 Path 环境变量里面加上达梦的 bin 目录:
【问题分析】:libeay32.dll 这个加密动态库找不到。
【问题解决】:在系统环境变量中配置达梦的 bin 目录,或者把 dm 的安装目录环境变量设置到最前面或者把这个动态库以及依赖文件拷贝到程序目录下面或者 system32(可以拷贝 bin 目录下所有动态库文件)
- 版本对比
龙芯、飞腾、申威、泰山、
海光、兆芯、Power、安腾等
Windows 全系列、Linux 全系列、
龙芯、飞腾、申威、泰山、
海光、兆芯、Power、安腾等
Windows 全系列、Linux 全系列、
龙芯、飞腾、申威、泰山、
海光、兆芯、Power、安腾等
最大存储容量 500G 无限制 无限制 单表最大行数 1 亿 无限制 无限制 大表最大列数 1024 2048 2048 列存储 不支持 支持 支持 分区表 不支持 支持 支持 并行查询 不支持 支持 支持 闪回查询 不支持 支持 支持 分析函数与
自定义聚集函数
不支持 支持 支持 虚拟函数 VPD 不支持 支持 支持 DBMS_SQL 包 不支持 支持 支持 存储过程调试功能 不支持 支持 支持 XML 支持 不支持 支持 支持 JSON 支持 不支持 支持 支持 空间数据库支持 不支持 支持 支持 全文索引支持 不支持 支持 支持 DBLINK 功能 不支持 支持 支持 DMHS 支持 不支持 支持 支持 数据守护集群
DATAWATCH
不支持 支持 支持 读写分离集群
DMRWC
不支持 支持 支持 共享存储集群
DMDSC
不支持 支持 支持 大规模并行处理集群
DMMPP
不支持 支持 支持 数据复制
Data Replication
不支持 支持 支持 企业管理工具
DEM
不支持 支持 支持 备份还原接口 SBT 不支持 支持 支持 嵌入式 pro*c 不支持 支持 支持 外部函数扩展 不支持 支持 支持 外部表 不支持 支持 支持 通讯加密 不支持 支持 支持 存储加密 不支持 支持 支持 加密引擎 不支持 不支持 支持 三权分立 不支持 支持 支持 四权分立 不支持 不支持 支持 自主访问控制 不支持 支持 支持 强制访问控制 不支持 不支持 支持 审计和实时侵害检测 不支持 不支持 支持 客体重用 不支持 不支持 支持 资源限制 不支持 支持 支持
DM 提供非常多的数据字典,供用户更好的了解系统的详细信息。数据字典表的模式名为 SYS。例如:SYS.SYSOBJECTS。
例 1 查看系统表 SYS.SYSOBJECTS。
新手直接看达梦入门即可
达梦数据库管理系统是达梦公司推出的具有完全自主知识产权的高性能数据库管理系统,简称DM,它具有如下特点:
(1)创建表的时候,不支持在列的后面直接加注释,使用 代替,如:
(2)不支持 函数,使用 ,例子:
(3)不支持 函数,它有三种代替方法:
A: 使用 datepart 代替:语法:datepart(datepart, date),返回代表日期的指定部分的整数,datepart可以为:year(yy,yyyy),quarter(,q),month(mm,m),dayofyear(dy,y),day(dd,d),week(wk,ww),weekday(dw),hour(hh), minute(mi,n),second(ss,s), millisecond(ms),例子:
B: 使用 date_part 代替,功能和 datepart 一样,写法不同,参数顺序颠倒,且都要加引号,例子:
C: 使用 extract 代替,语法:extract(dtfield from date),从日期类型date中抽取dtfield对应的值,dtfield 可以是 year,month,day,hour,minute,second,例子:
(4)不支持 substring_index 函数, 使用 substr / substring 代替,语法:
(5)不支持 group_concat 函数,使用 wm_concat 代替,例子:
(6)不支持 from_unixtime 函数,使用 round 代替,语法:
(7)不支持 case-when-then-else ,例如:
(8)current_timestamp 的返回值带有时区,例子:
注意:模式不可以使用-连字符,最好使用下划线
expr 在达梦中需要加单引号,建议使用到这类函数时数字加上单引号。
达梦数据库没有 yearweek ,使用 函数 函数 结合
解决方案:迁移外键的时候,取消“保留引用表原有的模式信息”功能,选择迁移对象->点击转换
1、在imp业务层设置了uuid
2、在 DM 数据库中可以使用以下两种方法生成 UUID:
注意,使用第二种方法时,需要将 UUID 转换为字符串,因为 DM 数据库中没有原生的 UUID 类型。
【DM】达梦数据库与MySQL适配_达梦数据库 mysql-CSDN博客
达梦8数据库更新语句包含单引号双引号引起转义字符执行失败解决方法全网唯一_达梦单引号转义-CSDN博客
1、通过达梦客户端manager图像化工具进行设置
2、通过修改,相关语法参考以下sql(特别提醒:多个IP之间用逗号隔开,当已经存在某些开放IP的情况下再新增开放IP,一定要把之前的IP带上,否则将会丢失之前的开放IP信息):
alter user 用户名 allow_ip "允许登录的IP1",“允许登录的IP2”;
可通过以下系统表,查找出用户的开放IP有哪些?将以下sql查出的第二列添加到以上sql语句后面即可
select b.name,'"'||replace(a.allow_addr,'|','","')||'"' as allow_ip_list
from SYSUSERS a join SYSOBJECTS b on a.id=B.ID
where b.name='用户名'
达梦技术社区:
到此这篇达梦数据库连不上(达梦数据库连接池)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/sjkxydsj/59226.html