摘要:
Tempdb 系统数据库是一个全局资源,供连接到 SQL Server 实例的所有用户使用。在现在的SQL Server里,其使用频率可能会超过用户的想象。如果Tempdb空间耗尽,许多操作将不能完成。作为一个支持工程师,会被经常问到象“我的Tempdb为什么这么大?”“是谁把我的Tempdb空间用完的?”在SQL 2000的时候,这个问题很难回答。好在SQL 2005以后,引入了一张新的管理视图:sys.dm_db_file_space_usage。通过查询这张视图,能了解tempdb的空间使用情况,能知道tempdb的空间是被哪一块对象使用掉的,是用户对象(user_object_rese 阅读全文
摘要:
随着硬件能力的升级,以及软件应用的扩展,现在的数据库是越来越大了。回想10年前,一个上百GB的数据库就会把支持工程师吓得要命。而现在,上TB的数据库真是比比皆是。DBA遇到的一个常见问题,就是如何监视数据空间的增长情况,或者在数据库用满的时候,能够迅速定位谁是罪魁祸首。了解一个数据库空间使用的最简单方法,就是在Management Studio里,右键点击数据库名字,选择”Reports” – “Standard Reports”,缺省就有4个Disk Usage的报表。它们能很好地统计出了从不同角度分析的数据库空间使用情况。但是在一个非常繁忙的生产环境里,随随便便地跑UI的报表总是有点头皮发 阅读全文
摘要:
我曾经遇到过这样一个性能问题。一个客户反映,他的SQL Server会在某一段时间里,突然变得非常慢。最后他不得不重启SQL Server服务。而重启以后,问题就消失了。客户在出现问题的那段时间里,收集了主要的系统动态管理视图,以及性能监视器里和SQL Server有关的那些计数器。顺便说一句,这台服务器有16颗CPU。Sys.dm_exec_requests是检查SQL Server性能瓶颈的有力工具。在处理SQL Server性能问题的时候,它是第二个检查的对象。(第一个当然是SQL Server的日志文件,要确认Server当时没有异常。)从Sys.dm_exec_requests的结果 阅读全文
摘要:
最近较忙,很少出炉技术文章了。但最近听得很多的一句话就是update操作实际上就是先delete后insert的操作。对于这种提法,网上也比较普遍,但本人确不敢苟同。我们现在通过下面的几个case来看看究竟是不是那样的。我们会分3种情形来测试:1、更改非聚集索引键列字段,更改前后的长度一样;2、更改非聚集索引键列字段,更改后的长度比之前的大;3、更改聚集索引键列。下面先来创建两个表:create table t1(id int,col varchar(10))create unique clustered index IXCU_T1_ID on t1(id)gocreate table t2( 阅读全文