不同数据规模下比较是没有意义的。
HammerDB测试结果和官方发布工具性能结果不能直接对比。
安装SQL SERVER,HammerDB工具。
HammerDB工具,官网下载:http://www.hammerdb.com/ ,直接安装WINDOWS版本即可。
使用Sql Server Configuration Manager启动数据库(PS:该工具和创建数据库所用工具在安装SQL SERVER时候就已经安装完毕)
打开Microsoft SQL Server Management Studio,如下图
点击链接后如下图:
右击如下图:
如下图:
C盘创建mp文件夹
运行如下脚本:rc6.bat
其中rc.bat如下:
PS:rc.bat和rc6.bat需要放在C盘方可。
其中bk放备份文件,fx固定大小的文件,gw放测试过程会成长的文件。
确定哪些磁盘用于备份,哪些磁盘用固定大小,哪些磁盘用于数据成长。
本次测试共
2个1.8T磁盘用于GW
2个750G磁盘用于FX
3个300G用于BK
1个3.2T用于LOG
其中SIZE大小是MB单位。
文件如下:Create.txt
执行:
#diskpart /s create.txt
后续SQL Server不支持裸盘,需要格式化一下
脚本如下:
双击运行即可。
执行LargepagesfORtEXT_SQL2012.reg
管理工具
本地安全策略
注销后重新登录,此更改才生效。
系统设置
设置性能“best performance”
设置DEP only for essential Windows programs and services
电源管理
选择High performance
StartSQL.bat
使用SMSS工具来连接数据库。
执行SQLconfig.sql文件。
sp_configure 'show advanced options',1
go
reconfigure with override
go
sp_configure 'max server memory',960320
go
reconfigure with override
go
sp_configure 'priority boost',1
go
reconfigure with override
go
sp_configure 'recovery interval',32767
go
reconfigure with override
go
sp_configure 'remote login timeout',0
go
reconfigure with override
go
sp_configure 'remote query timeout',0
go
reconfigure with override
go
sp_configure 'lightweight pooling',1
go
reconfigure with override
go
sp_configure 'max degree of parallelism',0
go
reconfigure with override
go
sp_configure 'default trace enabled',0
go
reconfigure with override
go
sp_configure 'Agent XPs',0
go
reconfigure with override
go
sp_configure 'awe enabled',0
go
reconfigure with override
go
sp_configure 'backup compression default', 0
go
reconfigure with override
go
查看create_database.sql文件,修改并执行。
然后执行change_database.sql文件,改变字符集。
3.2T盘,做两个卷,一个750G,E:用于放日志
另一个F:用于放TEMP文件。
查看tempdb.sql文件,修改并运行。
如要移除修改的temp文件,查看shrinktempdb.sql文件
或者修改路径和大小
分别执行:modify-tempfile.sql (重启数据库)和modify-tempfile-size.sql
打开TPC-H测试工具,如下图:
点击OK即可。
导入耗时取决于磁盘IO好坏。
导入300规模,花费14个小时。
执行shrinktmepdb.sql
备份数据库命令如下:
DOP取决于系统拥有的CPU数量。
100 规模,9008下:
DOP用16
并发用户 5个。
1000规模,RH5885HV3:
MAXDOP对TPC-H非常重要。
如果没有使用列式存储那么设置成16就可以了。如果使用了列存储则该值越高越好。
TPC-H有两个测试,一个是power测试使用1个用户,一个是吞吐量测试需要一个固定值,1000规模下需要至少7个用户并发。
运行stopSQL
参看文件remove_database.sql文件。
300 SCALE FACTOR规模需要3张SSD(2张INTEL卡,1张华为ES3000 V2)
INTEL卡的一般空间用于导入数据,另一半用户临时表空间。华为卡三分之一用于存放日志,三分之一用于系统自带临时表内容,三分之一用于系统自带临时表日志。
下载http://www.hammerdb.com/hammerdb_tpch_calculator.xlsx 得到
hammerdb_tpch_calculator.xlsx
先测试一个用户的压力得到POWER值
The refresh function checkbox corresponds to refresh on in the Driver Script. When this checkbox is enabled the first virtual user will run the refresh function as opposed to running a query set. Note that if you choose only one virtual user and select the refresh function checkbox then your virtual user will run a power test as detailed further in this document. The refresh function as the name implies inserts and deletes rows from the ORDERS and LINEITEM tables an the times of this function are required as input to calculating the QphH.
如下图,修改SF,并发用户数量,以及运行最长的时间,填入后自动生成结果如下图。
临时文件不为空,无法删除。Error:5042
答:
MS SQL Server中有本地临时表和全局临时表两种:
本地临时表仅在当前会话中可见,以符号#开头(如#tableName);
全局临时表在所有会话中都可见,以符号##开头(如##tableName)。
正确的临时表删除操作
if object_id('tempdb..#tempTable') is not null Begin
Drop table #tempTable
正解:
先查看表中内容如下:
SELECT DB_NAME() AS DbName, name AS FileName, size/128.0 AS CurrentSizeMB,
size/128.0 - CAST(FILEPROPERTY(name, 'SpaceUsed') AS INT)/128.0 AS FreeSpaceMB
FROM sys.database_files;
如下图:
在收缩前,需要确保此文件里不会有临时表等临时文件,因此需要将这些全部删除之后再进行收缩,收缩脚本:
USE tempdb
GO
DBCC SHRINKFILE (tempdev3, EMPTYFILE); -- to empty "tempdev3" data file
GO
收缩完毕之后,将该文件删除,脚本如下:
ALTER DATABASE tempdb
REMOVE FILE tempdev3; --to delete "tempdev3" data file
GO
还是不行就删除使用的数据库再创建
SELECT TOP 10
[Wait type] = wait_type, --等待状态
[Wait time (s)] = wait_time_ms / 1000, --等待时长
[% waiting] = CONVERT(DECIMAL(12,2), wait_time_ms * 100.0 / SUM(wait_time_ms) OVER())
FROM sys.dm_os_wait_stats WHERE wait_type NOT LIKE '%SLEEP%' --AND wait_type NOT LIKE 'CLR_%' ORDER BY wait_time_ms DESC;
USE master;
GO
ALTER DATABASE tempdb
MODIFY FILE (NAME = tempdev, FILENAME ='E:\SQLData\tempdb.mdf');
GO
ALTER DATABASE tempdb
MODIFY FILE (NAME = templog, FILENAME ='E:\SQLData\templog.ldf');
GO
验证文件更改。
SELECT name,physical_name
FROM sys.master_files
WHERE database_id = DB_ID('tempdb');
One or more files do not match the primary file of the database.
答:数据库损坏,卸掉SQL SERVER重装,然后恢复数据库。
SSMS允许我们查看一个图形化的执行计划(快捷键Ctrl+L)。注意当查看一个执行计划的时候,查询并没有运行。一些度量值只能在运行完之后才能得到(实际查询得到的行的数目)。
执行query_for_index.sql
执行create_column_index.sql
执行excution_pan_check.sql
#select count(*) from lineitem;
创建列式索引后如下:
最后走的索引发生了变化。
SSMS连接上,点击security,logins,邮件新增即可。
https://msdn.microsoft.com/zh-cn/library/ms190737.aspx
https://technet.microsoft.com/zh-cn/library/ms188396(v=sql.105).aspx