2012年6月8日
摘要: Char,varchar,nvarchar字段是sql server数据库中的三种字段类型。好多人在选择存储的时候不知道如何抉择,我给大家讲下这个三个字段类型的区别。Char(n)是长度为n个字节的定长的非unicode的字符数据。N为一个介于1到8000之间的值。其存储大小为输入数据的实际字节长度,而不是n个字节。如果你输入的实际字节长度少于n,那么其他位置会被空格填充。在数据存储中英文字母和数字占一个字节,汉字占两个字节。那么char(n)最多可以存储n个英文字母或数字,或者n/2个汉字。Varchar(n)是长度为n 个字节的可变长度且非 Unicode 的字符数据。n 必须是一个介于1 阅读全文
posted @ 2012-06-08 14:00 xiaohuime 阅读(566) 评论(0) 推荐(0) 编辑
摘要: SQL Server数据库DBA工作内容详解在Microsoft SQL Server 2008系统中,数据库管理员(Database Administration,简称为DBA)是最重要的角色。DBA的工作目标就是确保Microsoft SQL Server 2008系统正常高效地运行。DBA的工作也是最繁忙的工作,无论是性能调整,还是灾难恢复,都离不开DBA的支持。一般地,作为一个DBA,至少应该做好以下12项任务:■任务一:安装和配置;■任务二:容量规划;■任务三:应用架构设计;■任务四:管理数据库对象;■任务五:存储空间管理;■任务六:安全管理;■任务七:备份和恢复;■任务八:性能监视 阅读全文
posted @ 2012-06-08 11:30 xiaohuime 阅读(484) 评论(0) 推荐(0) 编辑
  2011年12月31日
摘要: 今天下午程序部门开始在我们的数据服务器上跑如下sql:DECLARE @Tfccc6dc969d446b0b7b7f5bfc1865227 table( AcceptCode varchar(20) ,Status smallint ,ExpressCompanyID int)insert into @Tfccc6dc969d446b0b7b7f5bfc1865227( AcceptCode, Status, ExpressCompanyID) select '411123093727', '10', '353'union all select 阅读全文
posted @ 2011-12-31 17:12 xiaohuime 阅读(168) 评论(0) 推荐(0) 编辑
  2011年12月30日
摘要: 四、分析执行计划创建索引根据语句的执行计划来判断应该对什么表创建什么索引,是常用优化技巧。其实文章前面的例子已经告诉读者如何结合statistics profile 和statistics IO语句的输出来创建索引。这里分析一个稍微复杂一些的例子。SQL语句如下:SELECT CurrentseNo FROM v_ptdata_edss WHERE MRN = @P1Statistics IO的输出如下:Table 'ptseoutpat'. Scan count 2, logical reads 8, physical reads 0, read-ahead reads 0. 阅读全文
posted @ 2011-12-30 11:32 xiaohuime 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 一、前言很多数据库系统性能不理想是因为系统没有经过整体优化,存在大量性能低下的SQL 语句。这类SQL语句性能不好的首要原因是缺乏高效的索引。没有索引除了导致语句本身运行速度慢外,更是导致大量的磁盘读写操作,使得整个系统性能都受之影响而变差。解决这类系统的首要办法是优化这些没有索引或索引不够好的SQL语句。本文讨论和索引相关的有关内容,以及通过分析语句的执行计划来讲述如何应用索引技术来优化SQL 语句。通过分析执行计划,读者可以检查索引是否有用,以及如何创建高效的索引。本文对数据库管理人员以及数据库系统开发人员都有一定参考意义。如果读者不知道应该优化数据库系统的哪些SQL语句,那么建议读者参考 阅读全文
posted @ 2011-12-30 11:30 xiaohuime 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 三、优化SQL语句的系统设计原则仅仅简化还是不够。SQL语句的优化在系统的设计阶段就要通盘考虑。系统设计越合理,需要优化或后期返工的地方就越少。系统逻辑流程如果不合理,那么常会导致本来需要一个操作就可以解决的问题却要作好几个操作才能实现,反映在数据库上就是发出过多或过复杂的SQL语句。所以数据库系统设计是系统高性能运行的首要关键。很多系统开发者更关心功能的实现而不是数据库系统的整体运行性能。相当多的开发者对数据库性能优化技术不是很了解,写出来的SQL语句往往缺乏效率。下面让我们罗列一些在设计阶段就应该考虑的和性能密切相关的一些原则。1)限制结果集要尽量减少返回的结果行,包括行数和字段列数。返回 阅读全文
posted @ 2011-12-30 11:06 xiaohuime 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 一、引言一个凸现在很多开发者或数据库管理员面前的问题是数据库系统的性能问题。性能不理想的系统中除了一部分是因为应用程序的负载确实超过了服务器的实际处理能力外,更多的是因为系统存在大量的SQL语句需要优化。本文通过一个例子讲述如何应用简化技术来优化SQL 语句,也讨论在系统设计阶段应该考虑的和语句性能密切相关的一些问题。如果读者不知道应该优化数据库系统的哪些SQL语句,那么建议读者参考笔者的另外一篇文章,《应用Profiler优化SQL Server数据库系统》。本文不讨论索引,建议读者参考笔者的文章《应用索引技术优化SQL语句》,因为索引技术是优化SQL语句的重要部分。二、简化SQL语句1.简 阅读全文
posted @ 2011-12-30 10:59 xiaohuime 阅读(215) 评论(0) 推荐(0) 编辑
摘要: 概述当你的SQL Server数据库系统运行缓慢的时候,你或许多多少少知道可以使用SQL Server Profiler(中文叫SQL事件探查器)工具来进行跟踪和分析。是的,Profiler可以用来捕获发送到SQL Server的所有语句以及语句的执行性能相关数据(如语句的read/writes页面数目,CPU的使用量,以及语句的duration等)以供以后分析。但本文并不介绍如何使用Profiler 工具,而是将介绍如何使用read80trace(有关该工具见后面介绍)工具结合自定义的存储过程来提纲挈领地分析Profiler捕获的Trace文件,最终得出令人兴奋的数据分析报表,从而使你可以高 阅读全文
posted @ 2011-12-30 10:43 xiaohuime 阅读(214) 评论(0) 推荐(0) 编辑
  2011年12月29日
摘要: 很多DBA都希望能够得到某个存储过程的执行信息,比如:1) 执行了多少次2) 执行的执行计划如何3) 执行的平均读写如何4) 执行平均需要多少时间等等. 幸运的是SQL server 2008 提供了一个这样的DMV,使得我们比较容易就得到上面的信息。这个DMV是sys.dm_exec_procedure_stats,它输出了下面的信息(部分截图,具体的请参考联机丛书):列名 数据类型 说明 database_idint存储过程所在的数据库 ID。object_idint存储过程的对象标识号。cached_timedatetime存储过程添加到缓存的时间。cached_timedatetime 阅读全文
posted @ 2011-12-29 15:32 xiaohuime 阅读(463) 评论(0) 推荐(0) 编辑
摘要: 我在做SQL Server 7.0技术支持的时候有客户问我,“我的SQL Server buffer pool很大,有办法知道是哪些对象吃掉我的buffer Pool内存么?比方说,能否知道是哪个数据库,哪个表,哪个index占用了buffer Pool么?”当时我没有找到这个问题的答案,但是我一直记着这个问题。直到SQL server 2005 版本出现,这个问题迎刃而解。答案就是使用动态视图(DMV) sys.dm_os_buffer_descriptors。这个DMV非常强大。根据SQL Server 联机丛书,这个视图的作用是 “返回有关 SQL Server 缓冲池中当前所有数据页的 阅读全文
posted @ 2011-12-29 15:29 xiaohuime 阅读(159) 评论(0) 推荐(0) 编辑