标签归档:tempdb

mssql sqlserver tempdb 配置注意事项


摘要:
下文讲述在sqlserver运维时候,tempdb设置合适大小的方法,如下所示:
实验环境:sql server 2008 R2


tempdb 数据库具有以下特性:
1.每次sql服务重启后,将会重建此数据库
2.tempdb数据库用于缓存数据库运行时的一些对象
3.如果在数据库中高频使用临时对象,那么tempdb将会是一个对IO要求比较高
4.我们应该根据CPU的个数合理的配置tempdb文件的个数
5.设置合理的tempdb文件大小,避免运行中,出现增加此数据库大小的操作

mssq1 sqlserver 查询tempdb数据库所涉及的sql信息


摘要:
tempdb数据库过大,通常是由于创建大量的临时对象,导致tempdb缓存大量数据,
下文将讲述通过系统对象获取tempdb数据库过大所涉及的sql脚本信息,如下所示:

--获取前50条占用 
use tempdb  
go  

SELECT top 10 t1.session_id,                                                      
t1.internal_objects_alloc_page_count,  t1.user_objects_alloc_page_count,  
t1.internal_objects_dealloc_page_count , t1.user_objects_dealloc_page_count,  
t3.login_name,t3.status,t3.total_elapsed_time  
from sys.dm_db_session_space_usage  t1   
inner join sys.dm_exec_sessions as t3   
on t1.session_id = t3.session_id   
where (t1.internal_objects_alloc_page_count>0   
or t1.user_objects_alloc_page_count >0  
or t1.internal_objects_dealloc_page_count>0   
or t1.user_objects_dealloc_page_count>0)  
order by t1.internal_objects_alloc_page_count desc  

--根据sessionId获取相应的sql脚本信息
select s.text,p.*
from master.dbo.sysprocesses p   
cross apply sys.dm_exec_sql_text(p.sql_handle) s  
where spid = 63  

mssql sqlserver tempdb优化误区


摘要:
下文讲述tempdb创建文件个数的建议。



需要创建多个数据文件的检测方法

当tempdb出现大量的分配页竞争时,此时我们需创建多个数据文件,
如果我们使用系统视图 sys.dm_os_wait_stats ,查看系统等待类型,出现大量的PAGELATCH时,代表出现分配页竞争,此时我们需关注tempdb数据库的各项性能

tempdb数据文件增加个数

在sqlserver 2000中,我们可以调整tempdb数据文件的个数同CPU内核数的个数一致,来达到最优的IO效果
在sqlserver 2005及以后的版本中,sql引擎进行了相关优化,此时数据文件和CPU内核数为1:4 或 1:2

tempdb数据文件一定可以解决pageLAtch等待吗?

由于增加的数据文件都存放在磁盘上,所以我们每次临时对象的申请操作,都会涉及磁盘操作,当我们创建一个超大对象时,此时并不能通过数据文件的个数来解决此竞争,
我们还需加大sql引擎的内存,使大量的临时对象操作基于内存上,可一定程度上减少pageLATCH的等待时间