㈠ 达梦数据库的通用性
DM7兼容多种硬件体系,可运行于X86、SPARC、POWER等硬件体系之上。DM7各种平台上的数据存储结构和消息通信结构完全一致,使得DM7各种组件在不同的硬件平台上具有一致的使用特性。
DM7实现了平台无关性,支持Windows系列、各版本Linux(2.4及2.4以上内核)、Unix、NeoKylin、AIX、Solaris等各种主流操作系统。DM7的服务器、接口程序和管理工具均可在32位/64 位版本操作系统上使用。
DM7支持多种主流集成开发环境,包括PowerBuilder、Delphi、Visual Studio、.NET、C++Builder、Qt、JBuilder、Eclipse、Zend Studio等;
DM7支持各种开发框架技术,主要有Spring、Struts、Hibernate、iBATIS sqlMap、EntityFramework、ZendFramework等;
DM7支持主流系统中间件,包括WebLogic、WebSphere、Tomcat、Jboss、东方通TongWeb、金蝶Apusic、中创InfoWeb等。
DM7提供对SQL92的特性支持以及SQL99的核心级别支持;支持多种数据库开发接口,包括OLE DB、ADO、ODBC、OCI、JDBC、Hibernate、PHP、PDO、DB Express以及.Net DataProvider等。
DM7支持多种网络协议,包括IPV4协议、IPV6协议等。
DM7完全支持Unicode、GBK18030等常用字符集。
DM7提供了国际化支持,服务器和客户端工具均支持简体中文和英文来显示输出结果和错误信息。
㈡ 达梦数据库的高性能
DM7采用多趟扫描、代价估算的优化策略,支持查询计划的HINT功能,可供经验丰富的DBA对特定查询进行优化改进,进一步提高查询的效率和灵活性。
DM7提供查询计划的重用,可以减少重复分析操作,有效提升语句的执行效率。DM7采用参数化常量方法,使得常量值不同的查询语句,同样可以重用查询计划。
DM7提供查询结果集缓存策略,在服务器端实现结果集缓存,可以在提升查询速度的同时,保证缓存结果的实时性和正确性。
DM7采用更加有效的异步检查点机制,相对原有检查点长时间占用缓冲区的策略相比,逻辑更加简单,速度更快,对整体系统运行影响更小。
DM7采用多版本并发控制技术,使得查询与更新操作间互不干扰,有效提高了高并发应用场景中的执行效率。
DM7中实现了数据字典缓存技术,执行期间不必封锁整个数据字典,可以有效降低DDL操作对整体系统并发执行的影响。
DM7为具有多个处理器 (CPU) 的计算机提供了并行查询,以优化查询执行和索引操作。并行查询其优势就是可以通过多个线程来处理查询作业,从而提高查询的效率。
DM7数据压缩采用智能压缩策略,自动选择最合适的压缩算法进行数据压缩,可以显着提升数据的压缩比,进一步减少系统的空间资源开销。
DM7同时支持行存储引擎与列存储引擎,可实现事务内对行存储表与列存储表的同时访问,可同时适用于联机事务和分析处理。
DM7提供 OLAP 函数,用于支持复杂的分析操作,侧重对决策人员和高层管理人员的决策支持,可根据分析人员的要求快速、灵活地进行大数据量的复杂查询处理,并且以直观易懂的形式将查询结果提供给决策人员,以便他们准确掌握企业的经营状况,了解被服务对象的需求,制定正确的方案。
DM7采用完全对等无共享(share-nothing)的MPP架构,支持SQL并行处理,可自动化分区数据和并行查询,无I/O冲突。DM7 MPP为新一代数据仓库所需的大规模数据和复杂查询提供了先进的软件级解决方案,具有业界先进的架构和高度的可靠性。
㈢ 达梦数据库各数据类型详解及使用场景
达梦数据库仿照Oracle数据库,很多功能都和Oracle类似。 其实最根本的区别,一个是国产,一个国外。 国内数据库还有很长的路要走。
㈣ 介绍几个国产数据库
一、DM
软件名称:达梦数据库(DM)。
开发商:武汉达梦数据库有限公司。
软件描述:
达梦数据库具有如下技术特色:支持多个平台之间的互联互访、高效的并发控制机制、有效的查询优化策略、灵活的系统配置、支持各种故障恢复并提供多种备份和还原方式。
具有高可靠性、支持多种多媒体数据类型、提供全文检索功能、各种管理工具简单易用、各种客户端编程接口都符合国际通用标准、用户文档齐全。
官网:
http://www.dameng.com/
二、OpenBASE
软件名称:OpenBASE。
开发商:东软集团有限公司。
软件描述:
主要包括OpenBASE 多媒体数据库管理系统、OpenBASE Web应用服务器、OpenBASE Mini嵌入式数据库管理系统、OpenBASE Secure安全数据库系统等产品。
所有的这些产品涵盖了企业应用、Internet/Intranet、移动计算等不同的应用领域,具有不同的应用模式。
形成了OpenBASE面向各种应用的全面的解决方案。多媒体数据库管理系统OpenBASE是OpenBASE产品系列的核心和基础,其它的产品都是在其基础上,根据各自应用领域的不同特点发展、演变而成的。
官网:
https://oceanbase.alipay.com/
三、思极有容
软件名称:思极有容分布式数据库。
开发商:国网信通和创意信息联合研发
软件描述:
一款国产自主可控的分布式关系型数据库。支持国产CPU、操作系统生态,支持云平台和容器。在安全方面,设定多种权限访问、审计、流量控制机制,实现真正资源隔离。
产品采用当前领先分布式技术,提供多种隔离级别,保障完整分布式事务。通过读写分离、并行计算、在线横向扩展,实现集群性能准线性提升,可达数百万级TPM。
官网:
https://oceanbase.alipay.com/
四、KingbaseES
软件名称:金仓数据库管理系统KingbaseES。
开发商:北京人大金仓信息技术有限公司。
软件描述:
交互式工具ISQL;图形化的数据转换工具; 多种方式的数据备份与恢复;提供作业调度工具;方便的用户管理;支持事务处理;支持各种数据类型;提供各种操作函数;提供完整性约束;支持视图;支持存储过程/函数;支持触发器。
官网:
https://www.kingbase.com.cn
五、阿里的数据库系统
软件名称:OceanBase & PolarDB
官方称为“完全自主研发的金融级分布式关系数据库”。下面是其官网的介绍:OceanBase 对传统的关系数据库进行了开创性的革新。
在普通硬件上实现金融级高可用,在金融行业首创“三地五中心”城市级故障自动无损容灾新标准,同时具备在线水平扩展能力,创造了4200万次/秒处理峰值的纪录(注:当时TPS官宣为25.6w)。
现在OceanBase的版本已经2.x了,OceanBase TPC-C的评测刷遍了朋友圈,TPS达到了100w (6088w tpmc),榜单第一。
官网:
https://oceanbase.alipay.com/
六、腾讯的数据库系统
软件名称:TDSQL
其官网简介:分布式数据库(Tencent Distributed SQL,TDSQL)是腾讯打造的一款分布式数据库产品,具备强一致高可用、全球部署架构、分布式水平扩展、高性能、企业级安全等特性。
同时提供智能 DBA、自动化运营、监控告警等配套设施,为用户提供完整的分布式数据库解决方案。
目前 TDSQL 已经为超过500+的政企和金融机构提供数据库的公有云及私有云服务,客户覆盖银行、保险、证券、互联网金融、计费、第三方支付、物联网、互联网+、政务等领域。TDSQL 亦凭借其高质量的产品及服务,获得了多项国际和国家认证,得到了客户及行业的一致认可。
官网:
https://cloud.tencent.com/proct/tdsql
三、华为的数据库系统
软件名称:GaussDB
全球首款AI-Native数据库,内部有100、200、300多个版本,应该是基于PostgreSQL开发的。在国内,可能除了阿里,就到华为的团队了(高斯实验室)。和不少高校建立了合作。
官网:
https://e.huawei.com/cn
总结
如果你倾向极强的定制性和高度兼容MySQL,推荐思极有容数据库,因为它这两者是优化到极致且比较简洁,可控性强。
㈤ 达梦数据库的特色功能
DM采用创新的混合数据库模型,扩展的多媒体和GIS数据类型等技术,成功实现了空间数据、多媒体数据与常规数据的一体化定义、存储和管理,在空间地理信息及多媒体信息管理方面具有明显的优势。此外,DM系统还提供了地理信息的分层检索、限定检索、漫游、特写、局部放大、叠加等功能。
㈥ 达梦数据库的高可用性
DM7可以提供数据库或整个服务器的冷/热备份以及对应的还原功能,达到数据库数据保护和迁移。支持的备份类型包括物理备份、逻辑备份,可实现全库、表空间、B树3个级别的备份。支持增量备份,支持以检查点进行还原。
DM7提供事务级的同步复制和异步复制功能。DM7数据复制功能支持一到多、多到一、级联复制、多主多从复制、环形复制、对称复制以及大数据对象复制。
主备系统是DM7提高容灾能力的重要手段。系统由一台主机与一或多台备机构成。主机提供正常的数据处理服务,备机则时刻保持与主机的数据同步。一旦主机发生故障,备机中的一台立刻可以切换成为新的主机,继续提供服务。
㈦ 达梦数据库常见参数调整
下面是在命令行客户端工具直接执行的脚本(执行后,会输出待调整参数):
备注:第一次dminit后就要调整,获取的是当前系统可用内存。
set serveroutput on
declare
v_maxsess bigint;
v_cpus bigint;
v_mem_mb bigint;
v_bufs bigint;
v_refs bigint;
v_maxdisk_mb bigint;
begin
-- manual set
v_maxsess=5000;
-- reload messages
v_cpus=64;
v_mem_mb=500000;
v_bufs=101;
v_refs=67;
v_maxdisk_mb=100000;
SELECT cast(67434610688*0.8/1024/1024 as int) into v_maxdisk_mb FROM V$SYSTEMINFO ORDER BY DRIVER_TOTAL_SIZE DESC ;
-- SELECT * FROM V$SYSTEMINFO ORDER BY DRIVER_TOTAL_SIZE DESC LIMIT 1 OFFSET 1;
SELECT case when N_CPU<8 then 8 3 when N_CPU<32 then N_CPU 2 else 64 end n_CPU,FREE_PHY_SIZE/1024/1024 MEM
into v_cpus,v_mem_mb FROM V$SYSTEMINFO LIMIT 1;
with a(val) as(select 5 union all
select 7 union all
select 11 union all
select 13 union all
select 17 union all
select 19 union all
select 23 union all
select 29 union all
select 31 union all
select 37 union all
select 41 union all
select 43 union all
select 47 union all
select 53 union all
select 59 union all
select 61 union all
select 67 union all
select 71 union all
select 73 union all
select 79 union all
select 83 union all
select 89 union all
select 97 union all
select 101),b as(
select rownum rn,val val from a)
select (
select VAL bufs from b where rn=( 3 + CAST( v_mem_mb/1024.0 1.0/2048 100 AS INT))) v_bufs,,(
select VAL refs from b where rn=( 3 + CAST( v_mem_mb/1024.0 1.0/2048 100 AS INT)) )v_refs into v_bufs,v_refs from al
;
print '
begin
SP_SET_PARA_VALUE(2,''MAX_OS_MEMORY'',100);
SP_SET_PARA_VALUE(2,''MEMORY_POOL'',cast( '||v_mem_mb||' 0.1 as int) );
SP_SET_PARA_VALUE(2,''MEMORY_TARGET'',cast ( '||v_mem_mb||' 0.2 as int) );
SP_SET_PARA_VALUE(2,''MEMORY_MAGIC_CHECK'',1);
SP_SET_PARA_VALUE(2,''VM_POOL_TARGET'',cast( (0.37) '||v_mem_mb||' 1024 0.6/'||v_maxsess||' as int));
SP_SET_PARA_VALUE(2,''SESS_POOL_TARGET'',cast( (0.37) '||v_mem_mb||' 1024 0.3/'||v_maxsess||' as int ) );
SP_SET_PARA_VALUE(2,''CACHE_POOL_SIZE'',cast( (0.37) '||v_mem_mb||' ('||v_maxsess||'/2000.0)*0.55 as int) );
SP_SET_PARA_VALUE(2,''BUFFER'',cast('||v_mem_mb||' * 0.5 as int));
SP_SET_PARA_VALUE(2,''MAX_BUFFER'',cast('||v_mem_mb||' * 0.5 as int));
SP_SET_PARA_VALUE(2,''RECYCLE'',10000*'||v_cpus||'/100);
SP_SET_PARA_VALUE(2,''BUFFER_POOLS'','||v_bufs||');
SP_SET_PARA_VALUE(2,''RECYCLE_POOLS'','||v_refs||');
SP_SET_PARA_VALUE(2,''WORKER_THREADS'','||v_cpus||');
SP_SET_PARA_VALUE(2,''TASK_THREADS'','||v_cpus||');
SP_SET_PARA_VALUE(2,''HJ_BUF_GLOBAL_SIZE'', cast('||v_mem_mb||' * 0.18 as int));
SP_SET_PARA_VALUE(2,''HJ_BUF_SIZE'', cast('||v_mem_mb||' * 0.0018 as int));
SP_SET_PARA_VALUE(2,''HAGR_BUF_GLOBAL_SIZE'',cast('||v_mem_mb||' * 0.12 as int));
SP_SET_PARA_VALUE(2,''HAGR_BUF_SIZE'', cast('||v_mem_mb||' * 0.0024 as int));
SP_SET_PARA_VALUE(2,''DICT_BUF_SIZE'','||v_refs||' 5);
SP_SET_PARA_VALUE(2,''TEMP_SIZE'',5000 '||v_mem_mb||'/1024.0/256);
SP_SET_PARA_VALUE(2,''VM_POOL_SIZE'','||v_refs||' 5);
SP_SET_PARA_VALUE(2,''SESS_POOL_SIZE'','||v_refs||' 5);
SP_SET_PARA_VALUE(2,''MAX_SESSIONS'','||v_maxsess||');
SP_SET_PARA_VALUE(2,''MAX_SESSION_STATEMENT'','||v_maxsess||'*8);
SP_SET_PARA_VALUE(2,''ENABLE_ENCRYPT'',0);
SP_SET_PARA_VALUE(2,''USE_PLN_POOL'',1);
SP_SET_PARA_VALUE(2,''OLAP_FLAG'',2);
SP_SET_PARA_VALUE(2,''OPTIMIZER_MODE'',1);
SP_SET_PARA_VALUE(2,''VIEW_PULLUP_FLAG'',1);
SP_SET_PARA_VALUE(2,''COMPATIBLE_MODE'',2);
SP_SET_PARA_VALUE(2,''MONITOR_TIME'',0);
SP_SET_PARA_VALUE(2,''ENABLE_MONITOR'',1);
SP_SET_PARA_VALUE(2,''SVR_LOG'',0);
end;
'
print '
create tablespace "USER" datafile ''USER01.dbf'' size 200;'
--print '
--alter user SYSDBA default tablespace "USER";'
print '
sp_set_para_value(1,''PWD_POLICY'',0);'
print '
create user DMDBA identified by DMDBA default tablespace "USER";'
print '
GRANT DBA TO dmdba;'
print '
sp_set_para_value(1,''PWD_POLICY'',2);'
print '
ALTER DATABASE MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE ADD ARCHIVELOG ''DEST=/home/dmdba/dmdbms/arch,TYPE=LOCAL,FILE_SIZE=1024,SPACE_LIMIT='||cast(v_maxdisk_mb*0.1 as int)||'''
ALTER DATABASE OPEN;'
print '
sp_set_para_value(1,''BAK_USE_AP'',2);
BACKUP DATABASE FULL TO DMBAK_FULL_00 BACKUPSET ''DMBAK_FULL_00'' COMPRESSED;
'
exception
when others then
raise_application_error (-20001,substr( ' 执行失败, '||SQLCODE||' '||SQLERRM||' '||dbms_utility.format_error_backtrace , 1, 400));
end;
/
㈧ 达梦数据库认证可以自学吗
不可以。达梦数据库的认证考试所包含的数据有DCA、DCP、DCM等数据,不自己自学就可以通过认证的。
㈨ 达梦数据库的高安全性
DM7是具有自主知识产权的高安全数据库管理系统,已通过公安部安全四级评测。是目前安全等级最高的商业数据库之一。同时DM7还通过了中国信息安全测评中心的EAL4级评测。
DM7 提供基于用户口令和用户数字证书相结合的用户身份鉴别功能,还支持基于操作系统的身份认证、基于LDAP集中式的第三方认证。
DM7提供数据库审计功能,审计类别包括:系统级审计、语句级审计、对象级审计。DM7提供审计分析功能,通过审计分析工具Analyzer实现对审计记录的分析。提供强大的实时侵害检测功能,用于实时分析当前用户的操作,并查找与该操作相匹配的审计分析规则。
DM7提供了系统权限和对象权限管理功能,并支持基于角色的权限管理,方便数据库管理员对用户访问权限进行灵活配置。
DM7提供强制访问控制功能,强制访问控制的范围涉及到数据库内所有的主客体,避免了管理权限全部由数据库管理员一人负责的局面,可以有效防止敏感信息的泄露与篡改,增强系统的安全性。
DM7支持基于SSL协议的通讯加密,对传输在客户端和服务器端的数据进行非对称的安全加密,保证数据在传输过程中的保密性、完整性、抗抵赖性。
DM7实现了对存储数据的透明存储加密、半透明存储加密和非透明存储加密。每种模式均可自由配置加密算法。用户可以根据自己的需要自主选择采用何种加密模式。
㈩ 达梦参数
应用使用 ORM 开启事务,批量插入语句,起初正常,一定条数之后开始报错:
首先查看下报错中提到的两个相关参数 statements 和 memory 的当前值:
可以看到 memory pool 只有 200M, session statement 也只有 100 条,都太小了,我们扩大这两个参数。
可以看出 memory pool 必须通过 ini 文件 修改,而要让 session statement 永久生效(不要在重启后就又变回去)也要在 ini 文件 中修改,所以我们找到文件所在路径,备份后修改这两个参数为自己需要的值:
顺便说一句,如果只修改 session statement 是可以使用语句直接操作的:
测试发现:本次卡住我们的,正是参数 max_session_statement 。那为什么我们的程序,要由这么多的句柄支撑呢?
我们改小句柄数(100),分别对以下语句进行测试:
经过简单的测试,我们可以初步判断: 句柄数 max_session_statement 是用于限制查询结果集的。
那么这个限制在什么维度生效?
我们进行以下测试:
经过测试,我们可以得出结论:句柄数 max_session_statement 是用于限制在 一个事务中 查询结果集个数的。
我们将此参数修改为 5000。毕竟,再大些的事务,就一定要拆分了。