Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在SQL Server 2012群集上创建尽可能快的数据库,从而牺牲任何耐久性_Sql_Sql Server_Performance_Testing_Durability - Fatal编程技术网

如何在SQL Server 2012群集上创建尽可能快的数据库,从而牺牲任何耐久性

如何在SQL Server 2012群集上创建尽可能快的数据库,从而牺牲任何耐久性,sql,sql-server,performance,testing,durability,Sql,Sql Server,Performance,Testing,Durability,我有一个针对SQL Server 2012集群中的数据库运行的测试套件。我希望这个测试套件运行得尽可能快。我愿意牺牲每一个耐久性和可用性保证来提高性能。数据库在每次测试运行期间都会重新创建,因此它甚至不必在服务器重新启动后继续运行 使用ALTER DATABASE[dbname]SET recovery SIMPLE更改恢复模型没有明显的区别 一个不错的选择似乎延迟了耐久性,但这是2014年的新选择,因此我无法使用 我该怎么做才能在这个集群上创建一个速度极快的数据库?我尝试查找内存中的数据库,但

我有一个针对SQL Server 2012集群中的数据库运行的测试套件。我希望这个测试套件运行得尽可能快。我愿意牺牲每一个耐久性和可用性保证来提高性能。数据库在每次测试运行期间都会重新创建,因此它甚至不必在服务器重新启动后继续运行

使用
ALTER DATABASE[dbname]SET recovery SIMPLE
更改恢复模型没有明显的区别

一个不错的选择似乎延迟了耐久性,但这是2014年的新选择,因此我无法使用

我该怎么做才能在这个集群上创建一个速度极快的数据库?我尝试查找内存中的数据库,但找不到任何选项。集群不允许我在本地磁盘上创建数据库,坚持数据库必须位于集群磁盘上

更新:
该应用程序使用高级SQL Server功能,因此我很可能被MS SQL Server卡住了。数据库本身非常小,因为它用于测试(8MB mdf、1MB ldf)。集群节点是网络中速度最快的服务器,因此如果我可以将其中一个节点误用为内存中的数据库,那么肯定会是最快的。但是如何创建呢?

如果要在本地磁盘上创建数据库,可以通过在共享上创建来绕过群集限制


您必须创建一个共享文件夹,放置在集群的本地磁盘上;然后使用UNC修补程序创建数据库(例如:\\share\DATA\DATA.mdf);2012年不应该有限制,2008年必须使用跟踪标志1807

如果由于某种原因,您被困在一个群集sql server实例上,但不希望持久性,那么您可以在tempdb上运行应用程序。Tempdb可以放在本地存储上,以避免集群开销

还请注意,存储在tempdb上的数据最初将保留在缓冲池(即RAM内存)中,只有在sql服务器引擎更好地利用该内存空间时,才会异步溢出到磁盘

通过编写所有数据库对象的脚本,并使用文本编辑器将数据库名称替换为“tempdb”,可以实现此解决方案。然后执行此脚本在tempdb上创建所有对象。还可以将运行应用程序的用户的初始目录设置为tempdb和/或编辑所需的连接字符串。 请记住,每次重新启动实例时都会重新生成tempdb。因此,您将丢失所有数据和ddl更改


这无疑是“牺牲每一个耐久性和可用性保证”的最佳努力。

像这样的工作可以吗()


其中,
R:
是一个

使用一种称为“连续连接分离”的技术来快速创建几乎是动态的数据库:

我打赌您知道如何访问数据库,但作为提醒,请运行以下内容:

执行sp_分离_数据库

在此阶段,SQL server假定您已删除它。 现在,请使用以下类似的方法查看已存在的文件: EXEC sp_attach_db@dbname=N'myD',@filename1=N'myCurrentPath',@filename2=N'pathToNewFile'

嗯。这很简单,但是如何创建我附加到数据库的这些新文件? 通过一个非常小且非常简单的.NET CSharp控制台应用程序,该应用程序已将.mdf和.ldf的内容一次性读取到内存中,并将其写入您选择的文件:

整个局势是如何触发的?如中所述,使用附加数据库触发器


关键点是附加到已经存在的文件,该文件已被读取(一次)-写入[多次]内存[使用您选择的程序,例如CSharp],这样您就可以附加数据库而无需额外的开销。

在单独的服务器上安装SQL Server Express?我使用了LocalDB,我相信它是SQL Server Express。因为运行测试的服务器速度较慢,所以测试套件实际上需要(稍微)更多的时间。SQL server 2014是唯一允许延迟和非持久性的SQL server版本。但是如果你不关心持久性和可用性,为什么要使用集群呢?我使用集群是因为它可用,而且节点速度很快。它主要用于其他需要群集的(非测试)目的。我相信您可以在Windows故障转移群集节点上创建新的SQL Server非群集命名实例。这将允许您使用本地磁盘,而不是较慢的共享存储。最快的本地存储将是基于PCI的SSD,如果这是一个选项的话。
CREATE DATABASE Sales
ON 
( NAME = Sales_dat,
    FILENAME = 'R:\saledat.mdf',
    SIZE = 10,
    MAXSIZE = 50,
    FILEGROWTH = 5 )