达梦7的试用 与SQLSERVER的简单技术对比

达梦7的试用 与SQLSERVER的简单技术对比

达梦数据库公司推出了他们的数据库服务管理平台,能够在该平台使用达梦数据库而无须安装达梦7数据库html

地址:http://online.dameng.com/mysql

说实话,第一眼看到仍是感到很高大上的,毕竟ORACLEMYSQLSQLSERVER都没有推出数据库试用的云平台sql

其实其余数据库也应该学习一下达梦,作一个平台让你们有机会学习自家的数据库知识,虽然如今这个时代下载安装包比较容易,不过提供一个平台也是有好处的数据库

达梦数据库文档下载:http://files.cnblogs.com/lyhabc/DM%E6%96%87%E6%A1%A3.rar缓存

 

 


试用体验服务器

达梦数据库使用的SQL语言是DM_SQL
网络

 

达梦数据库的存储层次结构多线程

有空的朋友能够看一下主页右下角的三个文档架构

 

 

具体的DM_SQL语法和命令你们能够参考DM_SQL.pdfapp

 

 


试用开始

一、咱们先选择一个实例,达梦是这样的,一个实例下面只能挂一个数据库,不像SQLSERVER和MYSQL能够挂多个数据库

咱们就选DM1这个实例,Windows的,有一些实例可能有人在用因此你会链接不上,当前会话数那里就显示了哪些实例是有在用的

并且这些实例下面有一些是已经有人建了数据库在上面的了

二、选择完实例以后,咱们就能够建立数据库,咱们打开新建查询窗口

 

 脚本:

--建库
CREATE TABLESPACE BOOKSHOP DATAFILE 'BOOKSHOP.DBF' SIZE 150

--建立模式和表
CREATE SCHEMA RESOURCES AUTHORIZATION SYSDBA


CREATE TABLE RESOURCES.COMPANYHOLIDAYS
(
  HOLIDAY DATE
)STORAGE(ON BOOKSHOP);

--插入数据
INSERT INTO RESOURCES.COMPANYHOLIDAYS(HOLIDAY)
VALUES('2007-7-21')

INSERT INTO RESOURCES.COMPANYHOLIDAYS(HOLIDAY)
VALUES('2008-8-26')

INSERT INTO RESOURCES.COMPANYHOLIDAYS(HOLIDAY)
VALUES('2010-10-2')


--查询数据
select "HOLIDAY"
from "RESOURCES"."COMPANYHOLIDAYS";
View Code

TIPS:若是实在不知道语句怎么写,不用担忧,左边的管理器也有生成脚本的功能,只须要选中表而后按右键,弹出右键菜单

不过右下角没有显示您当前链接的是哪一个实例哪一个库,不是太方便

 

 

查看表属性,能够看到表是使用16K的块大小

管理界面


这个管理平台的基本功能

 

平台编辑器的功能:语法自动补全、自动格式代码、关键字自动高亮、调试、界面管理跟一个完整的数据库管理工具差很少

缺点是右下角没有显示出当前在使用的实例和数据库名

 

下面是部分功能截图

新建了数据库和模式以后,立刻就能够在左边的树型菜单里看到新建的模式

 

 

能够看到当前达梦数据库是运行Windows2003系统上的

达梦里有比较多的系统工做线程,每一个系统工做线程各司其职

例如rapply_worker_thread线程,他是日志重作线程,他在备机上进行日志重作,跟SQLSERVER是同样的,SQLSERVER里镜像、复制也有同样功能的线程

 

管理界面就介绍到这里了,继续讲下去好像偏离这篇文章的主体,你们有兴趣能够继续深刻研究


技术对比

当你对某一个数据库研究得很深刻的时候再学习另外一种数据库就会发现,大部分原理都是相通的

例如技术实现原理,还有一些概念,只是换了名词已而

例如:

一、SQLSERVER的用户自定义函数,在MYSQL和达梦数据库里叫存储函数

二、MYSQL里面的事件(EVENT),就是SQLSERVER里面的做业(JOB)

三、达梦数据库里的动态性能视图,SQLSERVER里叫动态管理视图(DMV)

四、达梦数据库里的归档日志文件,SQLSERVER里的事务日志文件

五、MYSQL和达梦数据库里的表空间相似于SQLSERVER里的文件组

固然,上面的概念比较可能不太准确,若是有错误但愿你们指正o(∩_∩)o 

 

技术对比一

数据库备份

表空间备份

 

备份的时候,本人以为大部分原理跟SQLSERVER都是同样的,备份的时候,SQLSERVER会把活动日志一同放进bak文件里面

目的就是保证事务的一致性,达梦数据库也是同样,联机备份的时候把归档日志写入备份文件

而达梦数据库脱机备份的意思是:由于数据库已经脱机,没有数据变动了,当前数据库里的事务都是一致的,因此这时候就无需把日志写入到备份文件里

表空间备份相似于SQLSERVER的文件/文件组备份,只备份数据库的一部分,备份文件组的时候SQLSERVER也是须要把事务日志写入到BAK文件

保证事务一致性

注意:SQLSERVER没有提供脱机备份功能

 

技术对比二

数据库还原

SQLERVER在还原的时候也是只支持脱机还原,要求不能有任何链接在链接当前要还原的数据库,保证一致性

在达梦里也有备份链原理,内部的原理应该跟SQLSERVER是同样的,详细参考:《您真的理解了SQLSERVER的日志链了吗?

在SQLSERVER里也有相似达梦数据库的并行还原技术,在还原数据库的时候企业版的SQLSERVER也是使用了多线程技术进行还原

下面摘抄自《SQLSERVER2012实施与管理实战指南》

企业版的SQLSERVERR会针对上述状况作优化,主要在于下面两点:
一、多线程并行处理重作和回滚
在企业版上,SQLSERVER会启用多线程作重作和回滚操做。这样作的一个好处,是缩短恢复整体时间,
让数据库可以尽早上线
若是在SQLSERVER的errorlog里看到相似下面的信息,就说明SQL正在作一个比较大的恢复

 

技术对比三

数据守护

数据库的数据保护,不论Oracle仍是SQLSERVER仍是MySQL,都有三重含义

第一重是Crash后从新起来,要确保数据不丢失

第二重是数据库告诉应用事务写入成功了,这个事务就得持久化,若是没有告诉应用结果,则还能够丢失;

第三重是主机失败切换时(主从切换),如何表现得和没有切换时的状况同样。

 

每种数据库都有不一样的数据守护技术(数据保护技术)

而每种数据库的数据保护技术都是大同小异的

达梦数据库的数据守护技术

链接服务名里的双IP配置相似于SQLSERVER的链接字符串里指定镜像伙伴,当发生故障转移的时候,自动将程序的链接重定向

到备机

SQLSERVER里面使用镜像技术时,C#的链接字符串,Partner=myMirrorServerAddress指定备机地址,故障发生的时候.NET Data Provider

自动重定向链接到备机

Database mirroring    --数据库镜像 链接字符串 C# 
Data Source=myServerAddress;Failover Partner=myMirrorServerAddress;
Initial Catalog=myDataBase;Integrated Security=True;

 

SQLSERVER里的镜像技术原理,下面摘抄自《SQLSERVER2012实施与管理实战指南》

数据库镜像的基本概念讲得差很少了。那么主体数据库和镜像数据库是如何同步数据的呢?
SQL数据库中任何的数据变化都会先记录到事务日志中,而后才会真正更新数据页面。
而事务日志是先保存在该数据库的 日志缓存(log buffer)里,而后将缓冲中的日志固化到磁盘上LDF文件中。
在数据库镜像中,主体服务器在将主体数据库的日志从日志缓存固化到磁盘的同时,
还会使用另外一个线程来将 日志块(log block)发送到镜像服务器的端点。
当镜像服务器经过端点接收到日志块后,他先将日志块放到镜像数据库的 日志缓存里,而后将缓存里的日志固化到磁盘上。
一旦 日志块被固化后,镜像服务器会根据日志来对镜像数据库执行“ 重作(redo)”,最终更新数据页面。
镜像服务器重作日志时, 镜像数据库实际就是在执行日志的前滚操做
若是重作失败,则镜像服务器经过将数据库至于suspended状态来暂停会话。
DBA必须找到问题的缘由并解决问题才能继续会话。
当主体服务器截断或收缩数据库事务日志时,镜像服务器也将在日志的同一点收缩日志。
 
能够看到,数据库镜像其实就是经过发送日志来保持伙伴之间的同步。
从SQL2008开始, 日志块在被主体服务器发送网络以前会作压缩处理。
这麽作的目的是为了提高日志发送和接收的效率,下降日志块传输对网络链路和网络设备所带来的负载。
对应那些异常繁忙的生产系统,这项功能不但下降了因为网络不胜负荷的镜像会话异常中断,
也下降因为网络延迟致使的数据库镜像性能问题,可谓一箭双雕。
 

达梦数据库的数据守护技术其实是对应于SQLSERVER 的Always On技术和镜像技术

SQLSERVER 的Always On技术镜像技术都是高可用技术,因为每种数据库对一些名词概念都采用本身的叫法

例如SQLSERVER里叫高可用,而MYSQL和ORACLE叫可用性,达梦里面叫数据守护,叫法不一样,实际上都是指同同样东西

由于叫法的不一样致使有一些ORACLE专家觉得SQLSERVER没有可用性的方案和产品

ORACLE:RAC集群Data guard 

MYSQL:MYSQL CLUSTER

SQLSERVER:Always On镜像

 

有一些架构是share-disk,而有一些架构是share-nothing的,具体在这里不展开来说了

有兴趣的朋友能够看一下宋沄剑写的《数据库集群技术漫谈

 

技术对比四

数据库复制

数据库复制不算是数据守护的技术,因此不归到数据守护里面

在SQLSERVER里,有发布数据库、分发数据库、订阅数据库之分

而达梦里面主服务器就是发布库,复制服务器就是分发库,从服务器就是订阅库

达梦数据库的复制结构跟SQLSERVER差很少

 

技术对比五

上面都说了相同点,如今说一下不一样点,可是因为篇幅限制,我这里只说达梦的数据库数据页面的结构是怎样的

 

达梦数据库的页面有不一样的大小,有4K、8K、16K、32K,实际上达梦数据库将数据页面叫数据块

跟ORACLE同样也是叫数据块

达梦数据库在配置文件里设置数据块的大小,重启数据库服务以后,达梦就会读取配置文件新的配置信息(有点相似MYSQL)

在新建表的时候就会根据配置文件来建立数据块

 

而表的数据类型的长度根据当前数据块的大小的不一样而不一样

 

而在SQLSERVER里面,是不能设置数据页面的大小的,每一个数据页面的大小都是8K


重头戏:COUNT(*)统计结果行数

你们注意下划线部分!!

SQLSERVER跟达梦是同样的

USE [sss]
CREATE TABLE counttb(id INT NULL)

INSERT INTO [dbo].[counttb]
        ( [id] )
SELECT 1 UNION ALL 
SELECT NULL 

SELECT COUNT(1),COUNT(*),COUNT(id) FROM [dbo].[counttb]

 

本人以前也写过一篇,至于哪一个观点正确留给你们去思考了

SQLSERVER 里SELECT COUNT(1) 和SELECT COUNT(*)哪一个性能好?


总结

虽然大部分原理同样,可是语法跟数据库的结构仍是有一些出入

因此当DBA从一种数据库转型到另外一种数据库的时候仍是须要一段时间的学习

例如从SQLSERVER转到MYSQL 或者ORACLE转到SQLSERVER

 

本文经过技术对比,可使你们对达梦数据库的技术含量有一个度,虽然没有实际使用过,最起码了解一下咱们国家的自主知识产权的产品仍是不错的

 

实际上,达梦数据库的基本功能:序列、全文索引、策略、表分区。。。

这些该有的功能都有了,你们能够看一下文档,比较一下与ORACLE、SQLSERVER、MYSQL的区别

基本上这些数据库有的功能达梦都有

但愿达梦这支国家队可以愈来愈强大的,在数据库方面使国家可以早日摆脱外国的数据库大佬们的制约

 

若有不对的地方,欢迎你们拍砖o(∩_∩)o 

相关文章
相关标签/搜索