菜单

SQL Server on Linux 理由浅析

2019年1月11日 - MySQL

在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% 越来越不重要
小说来源:http://www.cnbeta.com/articles/481555.htm
微软将SQL Server带到Linux
著作来源:http://www.solidot.org/story?sid=47405

 

按照地点的篇章,总计了四个原因

理由一
先是篇作品中有协议:云总结机会比 Windows
还大,Windows占微软的营收越来越少
,那么自然微软也平素不必要让SQL
Server捆绑Windows,这是让SQL Server跨平台的说辞之一

 

理由二
其次篇小说有商榷:依据探讨公司U.S.高德纳公Gartner的数码,二零一一年到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

 

好了,我们目的在于二〇一七年年中 SQL Server on Linux的来到,也指望SQL
Server会有更好的发展前景

 

上述为团结的愚见,希望各位读者多多发表自己的理念

 

PS

1、微软发表Linux版SQL Server 缩写为  SQL Server on Linux
2、db-engines是一个数据库受欢迎程度的每月统计网站:http://db-engines.com/en/ranking
3、United States高德纳公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 组的成员具有此权限,并可以通过将其他用户添加到 举办卷维护任务 安全策略中来为其予以此权限。

 

重要

好几职能利用(如透明数据加密
(TDE))可以阻碍即时文件初步化。

 

 

 因为这一个案例中,启动SQL
Server的服务启动账号为NT
Service(Service)\MSSQLSERVER,所以并未权限即时文件先河化的,假使将开行SQL
Server的劳动启动账号改为所有管理员权限的域账号,就不会油可是生这种情景。其余,如若一定要以NT
瑟维斯(Service)(Service)\MSSQLSERVER为启动账号,可以按如下步骤操作:

 

要向一个帐户授予 Perform
volume maintenance tasks 权限:

 

 

  1. 在将要创造备份文件的电脑上开辟当地安全策略行使程序 (secpol.msc)。

 

  1. 在左手窗格中,展开“本地策略”
    ,然后单击“用户权限指派”

 

  1. 在右手窗格中,双击“执行卷维护任务”。

 

  1. 单击“添加用户或组”
    ,添加用于备份的其余用户帐户。

 

  1. 单击“应用”
    ,然后关门所有“本地安全策略”
    对话框。

 

图片 4

 

 

设置后,重启SQL
Server服务,然后还原数据库就会健康,此时的守候事件为BACKUPTHREAD,而不是ASYNC_IO_COMPLETION,
如若版本是SQL Server 2012
SP4或上述版本,可以透过下边SQL查看识别是否启用了登时文件先河化

 

 

SELECT  servicename ,

        startup_type ,

        instant_file_initialization_enabled

FROM    sys.dm_server_services; 

 

 

图片 5

 

其它,从SQL
Server 2016 (13.x) 开首,可在装置期间给予服务帐户此权限。 如若选择命令提示符安装,请添加
/SQLSVCINSTANTFILEINIT 参数,或选中安装向导中“授予
SQL Server 数据库引擎服务实施卷维护任务权限”复选框。

 

 

参考资料:

 

https://docs.microsoft.com/zh-cn/sql/relational-databases/databases/database-instant-file-initialization?view=sql-server-2017

相关文章

发表评论

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

网站地图xml地图