对于我目前正在进行的基准测试项目,需要在 SQL Server 上创建多个数据库。我在具有 8GB RAM 和 4 核处理器的 VM 上使用企业版实例。我想创建虚拟数据库,其中没有数据。我有以下脚本来生成创建数据库脚本。
create table createdb
(
dbname varchar(100),
createdbscript varchar(max)
)
DECLARE
@query as varchar(max), @NUM AS INT
SET @NUM = 1
CREATE TABLE #db_names(dbname varchar(250))
WHILE(@NUM <1001)
BEGIN
INSERT INTO #db_names values('NUM'+cast(@NUM as varchar))
SET @NUM = @NUM+1
END
SET @query = ''
insert into createdb
SELECT dbname, @query + 'CREATE DATABASE [' + dbname + ']
CONTAINMENT = NONE
ON PRIMARY
( NAME = N''' + dbname + ''',
FILENAME = N''c:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\' + dbname +'.mdf'' ,
SIZE = 10240KB ,
FILEGROWTH = 1024KB )
LOG ON
( NAME = N''' + dbname + '_log''' +',
FILENAME = N''c:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\' + dbname + '_log' +'.ldf'' ,
SIZE = 512KB ,
FILEGROWTH = 256KB )
' FROM #db_names
select * from createdb
drop table #db_names
我开始批量运行 100 个创建数据库命令。它淹没了我服务器的内存。一段时间后,一批 2 个创建数据库命令变得困难。
我想了解这种操作的内存分配是如何发生的?创建多个数据库的最佳方法是什么?哪些硬件更改会影响此性能?