了解一下SQL Server

jeanron100 2017-09-07

mysql Oracle SQL 数据库 用户体验 内存管理 Server read 存储

说实话,我在大学的时候用了下SQL Server,自从工作以来一直没有接触过SQL Sever,越是不接触越是排斥,也是不了解越是排斥,所以花点时间了解下自己不熟悉的技术,可能也会有一番收获。

SQLServer的版本

它最初是由Microsoft、Sybase和Ashton-Tate三家公司共同开发的,1988年推出了第一个OS/2版本。1996年,Microsoft 推出了SQL Server 6.5版本;1998年,SQL Server 7.0版本和用户见面;SQL Server 2000是Microsoft公司于2000年推出,目前最新版本SQL SERVER 2016。

Oracle的版本也开始按照这种套路了,9i,10g,11g,12c,下来就是18,因为自2018年起,Oracle数据库的版本号将直接跳升到18

甘特魔力象限

如果说Oracle是最强大的商业数据库,估计反对的声音会很少,这些年来Oracle一直在这种强大的光环下,但是从近些年的发展来看,SQL Server的变化也很大,直到去年一看Garnter魔力象限,竟然飙到了第一名。

img_a711e67ad0a349127401d8bb03b0c0aa.jpe

这个象限是通过多个维度来做的一个结论,所以是综合的优势。

DB engines的排名

我从DB Engines拿到了最新的数据库流行度的排行版,前三甲依旧是Oracle,MySQL,SQL Server,从我的片面认识来看,SQL Server似乎没有他地位该有的热度。

img_19556f78501baef7f99e662ff789fafa.png

而进一步了解一下数据库产品竞争图和客户流向示意图,就会发现,很多数据库都在收缩。在我的印象中,SQL Server在韩国,台湾用的相对比较多。

img_e81451f4cfbaad3fdde6a19cbe003da6.jpe

中间粗粗的一条线就是Oracle到MySQL。下面这个图有一点需要补充,那么就是Oracle到SQL Server,微软已经推出了Linux平台的数据库版本服务,这对于Azure的发展可谓是如虎添翼,而且微软算是投入了大量的人力财力来稀释Oracle的市场占有率。他们推出了SQL Server迁移到Oracle免费的策略,除了免费的SQL Server许可外,微软还提供了免费的SQL Server技术培训以及用于抵消迁移部署成本的补偿金。当然这个政策有一定的时效性。

MVP

微软在社区方面也花了很大的精力,他们的社区专家是被称为MVP,是通过评选获得的,整个的参选标准和Oracle的ACE有点像,得到荣誉之后也会发送奖杯之类的。

img_6576354bb912fe12501fedc9bd3a2978.jpe

安装类型

SQL Server的安装类型比较多,有企业版,标准版,个人版,开发版,企业评估版等。估计还有些没有整理细致,从版本的报价来看,比Oracle略低,版本间有一定的梯度价格。

Oracle的版本相对要少一些,企业版,标准版,还有个中间版本,版本的不同就是组件的差别了。比如ADG,RAC,Partition这些都是企业版的。

MySQL在这方面的差别更明显,商业版,社区版,分支(MariaDB,Percona,Drizzle...),除了商业版有个基本的费用外,其他都免费,还开源,当然这么比就不公平了,毕竟是商业数据库和开源数据库。

体系结构

学习一个数据库,看看它的体系结构设计尤其重要。这是我找到的一个体系结构图。

img_bdffb0b55f8bfac0f169930a56b9c03f.jpe

整体来看,数据库引擎是分为了下面四个部分。

  • 协议层(Protocols)

    这个层面SQL Server做得很全面,支持TCP/IP,name pipes等,Oracle的网络服务是独立的,本机是bequeath协议,网络TCP.网络扩展支持很强,支持多端口,多种配置模式。

    MySQL在这方面的要简单一些,独一端口,统一的协议。

  • 关系引擎(Relational Engine),也称为查询处理器(Query Processor)

    这个被称为是SQL Server最复杂的一个组件。和我们通常所说的SQL引擎差不多。

  • 存储引擎(Storage Engine)

    存储引擎包含的组件大体有事务服务,锁管理器,访问方法和实用工具等。

    MySQL里面的存储引擎那可是百花齐放,尤以InnoDB为上品。

  • SQLOS是应用层,是最底层的,里面有很多的调度和管理,比如内存管理,死锁检测,调度等。

隔离级别

SQL Server有下面的5种事务隔离级别,比平常我们所说的多了一种:快照。

  • Read Uncommitted:仅支持悲观并发;

  • Repeatable Read:仅支持悲观并发;

  • Serializable:仅支持悲观并发;

  • Snapshot: 支持乐观并发;

  • Read Committed:默认隔离级别,依据配置既可支持悲观并发也可支持乐观并发

备份恢复

这方面的工作,如果手工去做,通过图形界面就能够完成,这一点上很多数据库都达不到SQL Server这种易用性和用户体验。当然大批量的环境应该得用脚本实现。

看了下SQL Server create database的语句,和Oracle很想,有些数据字典也会很类似。比如里面也有information_schema,还有sys等。
登录 后评论
下一篇
云栖号资讯小编
1860人浏览
2020-05-25
相关推荐
优化 SQL Server CPU 性能
910人浏览
2017-06-25 01:24:00
SQL SERVER SQLOS的任务调度
3314人浏览
2015-03-07 09:30:00
0
0
0
832