达梦数据库全面支持ANSISQL标准和主流编程语言接口/开发框架。行列融合存储技术,在兼顾OLAP和OLTP的同时,满足HTAP混合应用场景。
坚持开放创新、简洁实用的理念,推出的新一代自研数据库。DM吸收借鉴当前先进新技术思想与主流数据库产品的优点,融合了分布式、弹性计算与云计算的优势,对灵活性、易用性、可靠性、高安全性等方面进行了大规模改进,多样化架构充分满足不同场景需求,支持超大规模并发事务处理和事务-分析混合型业务处理,动态分配计算资源,实现更精细化的资源利用、更低成本的投入。一个数据库,满足用户多种需求,让用户能更加专注于业务发展。
在有些情况下,数据库的概念包含的内容会很广泛。如在单独提到DM数据库时,可能指的是DM数据库产品,也有可能是正在运行的DM数据库实例,还可能是DM数据库运行中所需的一系列物理文件的集合等。但是,当同时出现DM数据库和实例时,DM数据库指的是磁盘上存放在DM数据库中的数据的集合,一般包括:数据文件、日志文件、控制文件以及临时数据文件等。
实例一般是由一组正在运行的DM后台进程/线程以及一个大型的共享内存组成。简单来说,实例就是操作DM数据库的一种手段,是用来访问数据库的内存结构以及后台进程的集合。
DM数据库存储在服务器的磁盘上,而DM实例则存储于服务器的内存中。通过运行DM实例,可以操作DM数据库中的内容。在任何时候,一个实例只能与一个数据库进行关联,包括装载、打开或者挂起数据库。在大多数情况下,一个数据库也只有一个实例对其进行操作。但是在DM共享存储集群中,多个实例可以同时装载并打开一个数据库(位于一组由多台服务器共享的物理磁盘上)。此时,我们可以同时从多台不同的计算机访问这个数据库。
在DM数据库中,表空间由一个或者多个数据文件组成。DM数据库中的所有对象在逻辑上都存放在表空间中,而物理上都存储在所属表空间的数据文件中。
在创建DM数据库时,会自动创建5个表空间:SYSTEM表空间、ROLL表空间、MAIN表空间、TEMP表空间和HMAIN表空间。
SYSTEM表空间存放了有关DM数据库的字典信息,用户不能在SYSTEM表空间创建表和索引。
ROLL表空间完全由DM数据库自动维护,用户无需干预。该表空间用来存放事务运行过程中执行DML操作之前的值,从而为访问该表的其他用户提供表数据的读一致性视图。
MAIN表空间在初始化库的时候,就会自动创建一个大小为128M的数据文件MAIN.DBF。在创建用户时,如果没有指定默认表空间,则系统自动指定MAIN表空间为用户默认的表空间。
TEMP表空间完全由DM数据库自动维护。当用户的SQL语句需要磁盘空间来完成某个操作时,DM数据库会从TEMP表空间分配临时段。如创建索引、无法在内存中完成的排序操作、SQL语句中间结果集以及用户创建的临时表等都会使用到TEMP表空间。
HMAIN表空间属于HTS表空间,完全由DM数据库自动维护,用户无需干涉。当用户在创建HUGE表时,未指定HTS表空间的情况下,充当默认HTS表空间。
每一个用户都有一个默认的表空间。对于SY、SYSAUDITOR系统用户,默认的用户表空间是SYSTEM,SYSDBA的默认表空间为MAIN,新创建的用户如果没有指定默认表空间,则系统自动指定MAIN表空间为用户默认的表空间。如果用户在创建表的时候,指定了存储表空间A,并且和当前用户的默认表空间B不一致时,表存储在用户指定的表空间A中,并且默认情况下,在这张表上面建立的索引也将存储在A中,但是用户的默认表空间是不变的,仍为B。一般情况下,建议用户自己创建一个表空间来存放业务数据,或者将数据存放在默认的用户表空间MAIN中。用户可以通过执行如下语句来查看表空间相关信息。SYSTEM、ROLL、MAIN和TEMP表空间查看语句:SELECTFROMV、SYSAUDITOR系统用户,默认的用户表空间是SYSTEM,SYSDBA的默认表空间为MAIN,新创建的用户如果没有指定默认表空间,则系统自动指定MAIN表空间为用户默认的表空间。如果用户在创建表的时候,指定了存储表空间A,并且和当前用户的默认表空间B不一致时,表存储在用户指定的表空间A中,并且默认情况下,在这张表上面建立的索引也将存储在A中,但是用户的默认表空间是不变的,仍为B。一般情况下,建议用户自己创建一个表空间来存放业务数据,或者将数据存放在默认的用户表空间MAIN中。用户可以通过执行如下语句来查看表空间相关信息。SYSTEM、ROLL、MAIN和TEMP表空间查看语句:SELECTFROMV、SYSAUDITOR系统用户,默认的用户表空间是SYSTEM,SYSDBA的默认表空间为MAIN,新创建的用户如果没有指定默认表空间,则系统自动指定MAIN表空间为用户默认的表空间。如果用户在创建表的时候,指定了存储表空间A,并且和当前用户的默认表空间B不一致时,表存储在用户指定的表空间A中,并且默认情况下,在这张表上面建立的索引也将存储在A中,但是用户的默认表空间是不变的,仍为B。一般情况下,建议用户自己创建一个表空间来存放业务数据,或者将数据存放在默认的用户表空间MAIN中。
数据库表中的每一行是一条记录。在DM中,除了Huge表,其他的表都是在数据页中按记录存储数据的。也就是说,记录是存储在数据页中的,记录并不是DM数据库的存储单位,页才是。由于记录不能跨页存储,这样记录的长度就受到数据页大小的限制。数据页中还包含了页头控制信息等空间,因此DM规定每条记录的总长度不能超过页面大小的一半。
数据页(也称数据块)是DM数据库中最小的数据存储单元。页的大小对应物理存储空间上特定数量的存储字节,在DM数据库中,页大小可以为4KB、8KB、16KB或者32KB,用户在创建数据库时可以指定,默认大小为8KB,一旦创建好了数据库,则在该库的整个生命周期内,页大小都不能够改变。下图显示了DM数据库页的典型格式。
页头控制信息包含了关于页类型、页地址等信息。页的中部存放数据,为了更好地利用数据页,在数据页的尾部专门留出一部分空间用于存放行偏移数组,行偏移数组用于标识页上的空间占用情况以便管理数据页自身的空间。
在绝大多数情况下,用户都无需干预DM数据库对数据页的管理。但是DM数据库还是提供了选项供用户选择,使得在某些情况下能够为用户提供更佳的数据处理性能。
FILLFACTOR是DM数据库提供的一个与性能有关的数据页级存储参数,它指定一个数据页初始化后插入数据时最大可以使用空间的百分比(100),该值在创建表/索引时可以指定。设置FILLFACTOR参数的值,是为了指定数据页中的可用空间百分比和可扩展空间百分比。可用空间用来执行更多的INSERT操作,可扩展空间用来为数据页保留一定的空间,以防止在今后的更新操作中增加列或者修改变长列的长度时,引起数据页的频繁分裂。当插入的数据占据的数据页空间百分比低于FILLFACTOR时,允许数据插入该页,否则将当前数据页中的数据分为两部分,一部分保留在当前数据页中,另一部分存入一个新页中。
对于DBA来说,使用FILLFACTOR时应该在空间和性能之间进行权衡。为了充分利用空间,用户可以设置一个很高的FILLFACTOR值,如100,但是这可能会导致在后续更新数据时,频繁引起页分裂,而导致需要大量的I/O操作。为了提高更新数据的性能,可以设置一个相对较低(但不是过低)的FILLFACTOR值,使得后续执行更新操作时,可以尽量避免数据页的分裂,提升I/O性能,不过这是以牺牲空间利用率来换取性能的提高。
簇是数据页的上级逻辑单元,由同一个数据文件中16个或32个连续的数据页组成。在DM数据库中,簇的大小由用户在创建数据库时指定,默认大小为16。假定某个数据文件大小为32MB,页大小为8KB,则共有32MB/8KB/16=256个簇,每个簇的大小为8K*16=128K。和数据页的大小一样,一旦创建好数据库,此后该数据库的簇的大小就不能够改变。
当创建一个表/索引的时候,DM为表/索引的数据段分配至少一个簇,同时数据库会自动生成对应数量的空闲数据页,供后续操作使用。如果初始分配的簇中所有数据页都已经用完,或者新插入/更新数据需要更多的空间,DM数据库将自动分配新的簇。在缺省情况下,DM数据库在创建表/索引时,初始分配1个簇,当初始分配的空间用完时,DM数据库会自动扩展。
当DM数据库的表空间为新的簇分配空闲空间时,首先在表空间按文件从小到大的顺序在各个数据文件中查找可用的空闲簇,找到后进行分配;如果各数据文件都没有空闲簇,则在各数据文件中查找空闲空间足够的,将需要的空间先进行格式化,然后进行分配;如果各文件的空闲空间也不够,则选一个数据文件进行扩充。
对于用户数据表空间,在用户将一个数据段对应的表/索引对象DROP之前,该表对应的数据段会保留至少1个簇不被回收到表空间中。在删除表/索引对象中的记录的时候,DM数据库通过修改数据文件中的位图来释放簇,释放后的簇被视为空闲簇,可以供其他对象使用。当用户删除了表中所有记录时,DM数据库仍然会为该表保留1-2个簇供后续使用。若用户使用DROP语句来删除表/索引对象,则此表/索引对应的段以及段中包含的簇全部收回,并供存储于此表空间的其他模式对象使用。
对于临时表空间,DM数据库会自动释放在执行SQL过程中产生的临时段,并将属于此临时段的簇空间还给临时表空间。需要注意的是,临时表空间文件在磁盘所占大小并不会因此而缩减,用户可以通过系统函数SF_RESET_TEMP_TS来进行磁盘空间的清理。
对于回滚表空间,DM数据库将定期检查回滚段,并确定是否需要从回滚段中释放一个或多个簇。
段是簇的上级逻辑分区单元,它由一组簇组成。在同一个表空间中,段可以包含来自不同文件的簇,即一个段可以跨越不同的文件。而一个簇以及该簇所包含的数据页则只能来自一个文件,是连续的16或者32个数据页。由于簇的数量是按需分配的,数据段中的不同簇在磁盘上不一定连续。
段可以被定义成特定对象的数据结构,如表数据段或索引数据段。表中的数据以表数据段结构存储,索引中的数据以索引数据段结构存储。DM以簇为单位给每个数据段分配空间,当数据段的簇空间用完时,DM数据库就给该段重新分配簇,段的分配和释放完全由DM数据库自动完成,可以在创建表/索引时设置存储参数来决定数据段的簇如何分配。
当用户使用CREATE语句创建表/索引时,DM创建相应的数据段。表/索引的存储参数用来决定对应数据段的簇如何被分配,这些参数将会影响与对象相关的数据段的存储与访问效率。对于分区表,每个分区使用单独的数据段来容纳所有数据,对于分区表上的非分区索引,使用一个索引数据段来容纳所有数据,而对于分区索引,每个分区使用一个单独索引数据段来容纳其数据。表的数据段和与其相关的索引段不一定要存储在同一表空间中,用户可以在创建表和索引时,指定不同的表空间存储参数。
在DM数据库中,所有的临时段都创建在临时表空间中,这样可以分流磁盘设备的I/O,也可以减少由于在SYSTEM或其他表空间内频繁创建临时数据段而造成的碎片。当处理一个查询时,经常需要为SQL语句的解析与执行的中间结果准备临时空间。DM数据库会自动地分配临时段的磁盘空间。例如,DM在进行排序操作时就可能需要使用临时段,当排序操作可以在内存中执行,或设法利用索引就可以执行时,就不必创建临时段。对于临时表及其索引,DM数据库也会为它们分配临时段。
临时段的分配和释放完全由系统自动控制,用户不能手工进行干预。
DM数据库在回滚表空间的回滚段中保存了用于恢复数据库操作的信息。对于未提交事务,当执行回滚语句时,回滚记录被用来做回滚变更。在数据库恢复阶段,回滚记录被用来做任何未提交变更的回滚。在多个并发事务运行期间,回滚段还为用户提供读一致性,所有正在读取受影响行的用户将不会看到行中的任何变动,直到他们事务提交后发出新的查询。
DM数据库提供了全自动回滚管理机制来管理回滚信息和回滚空间,自动回滚管理消除了管理回滚段的复杂性。此外,系统将尽可能保存回滚信息,来满足用户查询回滚信息的需要。事务被提交后,回滚数据不能再回滚或者恢复,但是从数据读一致性的角度出发,长时间运行查询可能需要这些早期的回滚信息来生成早期的数据页镜像,基于此,数据库需要尽可能长时间的保存回滚信息。DM数据库会收集回滚信息的使用情况,并根据统计结果对回滚信息保存周期进行调整,数据库将回滚信息保存周期设为比系统中活动的最长的查询时间稍长。
DM共享存储数据库集群的英文全称DM Data Shared Cluster,简称DMDSC,是一个多实例、单数据库的系统。多个数据库实例可以同时访问、修改同一个数据库的数据。用户可以登录集群中的任意一个数据库实例,获得完整的数据库服务。数据文件、控制文件在集群系统中只有一份,不论有几个节点,这些节点都平等地使用这些文件,这些文件保存在共享存储上。每个节点有自己独立的联机日志和归档日志,其中联机日志保存在共享存储上,归档日志可以保存在本地存储上也可以保存在共享存储上。DMDSC集群得以实现的重要基础就是共享存储。
达梦读写分离架构—数据库读写分离
支持自动故障切换
支持事务级读写负载分离
支持读写分配比例可调整
读多写少业务场景下的性能近线性提升
达梦混合事务分析处理技术—行列融合2.0
具备事务-分析混合型业务处理的能力,满足用户对HTAP应用场景的需求
具备变更缓存、高级日志两个关键特性,弥合行存储与列存储的鸿沟
多项细节优化,增强易用性
为用户带来359项产品细节打磨,优化细节增强易用性
省心便捷的运维管理
全新的集中式运维管理工具—DEM
管理工具集成新的SQL助手2.0
运行环境提示与误删保护
持续增强安全性
高安全等级的数据库管理系统,达到国家安全四级、EAL4+级满足GB/T20273、GB/T18336
增强改进多项安全性
技术生态再升级
支持更广泛的技术选型
支持多种云计算基础设施环境、支持多种软硬件平台
广泛的SQL语法兼容性
专用DBAPI特性兼容
便捷的数据迁移
达梦柔性迁移解决方案
文章
阅读量
获赞