在SQL
Server
2012(11.0.7001.0)下面在还原一个数据库(备份文件40多G大小,实际数据库大小300G),在还原过程中,出现一直等待ASYNC_IO_COMPLETION,如下测试截图所示,已经等待了72分钟了,但是还原比例依然为0%

SQL Server on Linux 理由浅析

 

今天的爆炸性新闻《SQL Server on Linux》基本上在各大科技媒体上刷屏了

大家看到这个新闻都觉得非常震精,而美股,今天微软开盘上涨1.5%,资本市场怎么看微软也非常值得关注。

微软真正要拥抱开源,拥抱Linux了吗?

本人觉得:是的,但是微软做出SQL Server on
Linux
这个决定也是有章可循的

下面有两篇网上的文章
Windows时代完结:只占微软营收10% 越来越不重要
文章来源:
微软将SQL Server带到Linux
文章来源:

 

根据上面的文章,总结了三个原因

理由一
第一篇文章中有说道:云计算机会比 Windows
还大,Windows占微软的营收越来越少
,那么自然微软也没有必要让SQL
Server捆绑Windows,这是让SQL Server跨平台的理由之一

 

理由二
第二篇文章有说道:根据研究集团美国高德纳公Gartner的数据,2011年到2014年间,微软超越了IBM,在年价值320亿美元的数据库市场占据了第二把交椅,但它的市场份额只有21%,是甲骨文的一半,甲骨文拥有MySQL和Oracle两个主流数据库。

最流行的数据库软件现在都支持Linux,如MySQL、Oracle、PostgreSQL和MS
SQL等等,MSSQL被普遍认为门槛最低。

现在服务器版操作系统市场份额基本是Linux稳占第一把交椅,微软要让自家的数据库市场份额扩大来挤占其他数据库的份额,必然要做出SQL
Server on Linux的决定,这是理由二

 

理由三

还记得去年的文章吗,《进击的Microsoft—Gartner魔力象限Leader》

图片 1

图片 2

SQL
Server在操作数据库管理系统(DBMS)的魔力四象限的leader位置,在db-engines网站,SQL
Server也是常年排名前三,那么SQL
Server要保持leader的位置,保持竞争力和地位,推出SQL Server on
Linux也是理所当然的

 

微软做出SQL Server on Linux这个决定意味着未来把整个微软技术stack运行在Linux上已经成为可能。

 

本人在去年参加微软总部MVP峰会的时候
,微软的相关负责人就跟在场参会者说对SQL Server on
Linux暂时还没有计划,想不到时隔3个月就收到SQL Server on
Linux的消息,实在喜出望外。

 

最后,SQL Server on
Linux会对那些厂商产生影响呢?走起君觉得对于开源数据库的影响可能会稍小一点,但是对于其他商业数据库产生的冲击可能比较大,例如对Oracle的冲击,因为即使SQL
Server on Linux 跟Oracle一样也不一定Open
Source

 

好了,我们期待2017年年中 SQL Server on Linux的来临,也希望SQL
Server会有更好的发展前景

 

以上为自己的愚见,希望各位读者多多发表自己的意见

 

PS

1、微软发布Linux版SQL Server 缩写为  SQL Server on Linux
2、db-engines是一个数据库受欢迎程度的每月统计网站:
3、美国高德纳公Gartner是一家很出名的公司,他总是不停地推出IT行业的各种报告以及著名的的Gartner魔力象限

 

如有不对的地方,欢迎大家拍砖o(∩_∩)o 

本文版权归作者所有,未经作者同意不得转载。

 

SELECT  r.session_id ,

        r.command ,

        r.start_time,

        r.status,

        r.wait_type,

        CONVERT(NUMERIC(6, 2), r.percent_complete)   AS [Percent Complete(%)] ,

        CONVERT(VARCHAR(20), DATEADD(ms, r.estimated_completion_time,

                                     GETDATE()), 20) AS [ETA Completion Time] ,

        CONVERT(NUMERIC(10, 2), r.total_elapsed_time / 1000.0 / 60.0) AS [Elapsed Min] ,

        CONVERT(NUMERIC(10, 2), r.estimated_completion_time / 1000.0 / 60.0) AS [ETA Min] ,

        CONVERT(NUMERIC(10, 2), r.estimated_completion_time / 1000.0 / 60.0

        / 60.0) AS [ETA Hours] ,

        CONVERT(VARCHAR(1000), ( SELECT SUBSTRING(text,

                                                  r.statement_start_offset / 2,

                                                  CASE WHEN r.statement_end_offset = -1

                                                       THEN 1000

                                                       ELSE ( r.statement_end_offset

                                                              - r.statement_start_offset )

                                                            / 2

                                                  END)

                                 FROM   sys.dm_exec_sql_text(sql_handle)

                               )) AS CommandText

FROM    sys.dm_exec_requests r

WHERE   command IN ( 'RESTORE DATABASE', 'BACKUP DATABASE','RESTORE LOG' );

 

 

 

图片 3

 

当然,这里是实验,如果还要继续等待的话,相信这个时间会更长。这个是比较让人奇怪的现象。后面查了一下这个跟即时文件初始化(Instant
File Initialization
(IFI))有关。关于这个概念,可以参考官方文档数据库文件初始化
,摘抄部分内容如下所示:

 

 

 

数据库文件初始化

 

初始化数据和日志文件以覆盖之前删除的文件遗留在磁盘上的任何现有数据。 执行以下其中一项操作时,应首先通过零填充(用零填充)数据和日志文件来初始化这些文件:

 

·        
创建数据库。

·        
向现有数据库添加数据或日志文件。

·        
增大现有文件的大小(包括自动增长操作)。

·        
还原数据库或文件组。

 

文件初始化会导致这些操作花费更多时间。 但是,首次将数据写入文件后,操作系统就不必用零来填充文件

 

 

即时文件初始化 (IFI)

 

在SQL
Server中,可以在瞬间对数据文件进行初始化,以避免零填充操作。即时文件初始化可以快速执行上述文件操作。 即时文件初始化功能将回收使用的磁盘空间,而无需使用零填充空间。 相反,新数据写入文件时会覆盖磁盘内容。 日志文件不能立即初始化。

 

备注

只有在 Microsoft Windows
XP Professional 或 Windows
Server 2003 或更高版本中才可以使用即时文件初始化功能。

 

重要

只有在数据文件中才可以使用即时文件初始化功能。 创建日志文件或其大小增长时,将始终零填充该文件。

 

即时文件初始化功能仅在向SQL
Server服务启动帐户授予了 SE_MANAGE_VOLUME_NAME
之后才可用。 Windows
Administrator 组的成员拥有此权限,并可以通过将其他用户添加到 执行卷维护任务 安全策略中来为其授予此权限。

 

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图