摘要: 以下是WCF常用的三种契约,服务契约:服务契约描述服务所实现的功能操作。服务契约将.NET类型中的元素映射到WSDL元素。服务契约中的操作契约描述了实现服务功能的方法。数据契约:数据契约描述了服务端与客户端通讯时使用的数据结构。数据契约将CLR数据类型映射到XML模式定义(XML Schema Definition,XSD),并定义如何对其进行序列化和反序列化。消息契约:消息契约将CLR类型映射成SOAP消息,描述SOAP消息的格式,并影响这些消息的WSDL和XSD定义。消息契约可以精确地控制SOAP信头和信体。下面以水果类为例,写一些简单的代码,来演示下契约服务契约:using System 阅读全文
posted @ 2011-04-08 08:14 秋无语 阅读(2093) 评论(3) 推荐(2) 编辑
摘要: 查询性能取决于优化器确定的执行计划的效率,高效的执行计划被缓存下来重复使用可以提高查询效率。但是一些非参数化查询生成的执行计划,重复使用率很低,在高并发的环境下,为了维护这些查询计划会消耗大量的服务器资源。本文使用AdventureWorks做为测试库,通过一些简单脚本来揭示SQL Server执行计划的一些有趣特征。SQL Server处理一个查询请求流程:T-SQL编写-->解析器(Parser)-->代数优化器(Algebrizer)-->查询优化器-->执行计划生成,缓冲和hash计划生成-->执行查询。可以通过访问动态管理视图sys.dm_exec_ca 阅读全文
posted @ 2011-04-06 09:20 秋无语 阅读(4261) 评论(3) 推荐(2) 编辑
摘要: SQL Server中一个页面包含8KB数据,连续的8个页面组成一个区(extent)。数据的insert和update可以引起页面分割产生碎片。如果分割后的两个页面在同一个区内,这种碎片称为内部碎片,如果分割后的两个页面处于不同的区内,这种碎片称为外部碎片。在索引的叶子页面内的数据总是有序的。假如一个页面内有键值为10,20,30,40四条记录而且此页面已经被装满了。现在要把键值为25的记录插进来,只能插入20和30之间。于是导致此页面分割,产生一个新页面,原页面的一部分数据将被移动到这个新页面内。如果产生的这个新页面和原来的页面在同一个区内,那么就是内部碎片,否则,产生的就是外部碎片。1、 阅读全文
posted @ 2011-04-06 08:41 秋无语 阅读(1866) 评论(0) 推荐(1) 编辑
摘要: 不说闲话了,直接hello了。创建服务1、 选择file-->new-->project-->empty project创建一空项目,把solution命名为wcfHello。2、 右击wcfHello项目,add-->new item添加接口IHello。在属性页把output type改为class library。3、 在接口中添加一方法,public interface IHelloService { string HelloWorld(); }4、 Add References添加对程序集System.ServiceModel的引用。using System. 阅读全文
posted @ 2011-04-06 08:17 秋无语 阅读(646) 评论(0) 推荐(0) 编辑
摘要: 索引对于一个查询请求的重要性不言而喻。但是优化器是如何选择有效的索引,这就需要对表内的数据分布情况进行统计,根据此统计信息让优化器做出正确的决策。在SQL Server中,这一信息是通过索引键上统计的形式维护的。通过统计信息,优化器可以估计出返回结果集或者中间结果集所花费的时间,从而确定出高效的操作。只要数据库的统计设置处于自动更新统计状态,优化器就能动态的确定出高效的处理策略。1、 索引列上的统计更新统计信息需要消耗CPU周期,当出现以下情况时,SQL Server将更新统计信息1)、当没有任何数据的表添加一行数据时2)、当少于500行的表增加500行或者更多行时3)、当多于500行的表增加 阅读全文
posted @ 2011-03-28 08:27 秋无语 阅读(3039) 评论(0) 推荐(2) 编辑
摘要: 本文的几种分页方法摘自《SQL Server2005性能调优》一书。用以下脚本生成测试数据:CREATE TABLE TRANS_TABLE( MYID INT IDENTITY(1,1) NOT NULL PRIMARY KEY, MYDESC VARCHAR(10), MYDATE DATETIME, MYGROUPID INT)DECLARE @I INTSET @I = 0WHILE @I < 1000000BEGIN INSERT INTO TRANS_TABLE SELECT CHAR(ASCII('A') - 2 + (2 * (1 + ABS(CHECKS 阅读全文
posted @ 2011-03-21 08:26 秋无语 阅读(2979) 评论(1) 推荐(5) 编辑
摘要: 当优化器所选择的非聚簇索引只包含查询请求的一部分字段时,就需要一个查找(lookup)来检索其他字段来满足请求。对一个有聚簇索引的表来说是一个键查找(key lookup),对一个堆表来说是一个RID查找(RID lookup)。这种查找即是——书签查找。书签查找根据索引的行定位器从表中读取数据。故此,除了索引页面的逻辑读取外,还需要数据页面的逻辑读取。如果查询的结果是大数据集,建议使用聚簇索引。聚簇索引不用书签查找,因为叶子页面和数据页相同。看下面的实例(AdventureWorks):select *from Sales.SalesOrderDetail as sod where sod. 阅读全文
posted @ 2011-03-21 08:19 秋无语 阅读(1478) 评论(5) 推荐(3) 编辑
摘要: SQL Server在没有聚簇索引的情况下查找数据,只能对表进行逐行遍历以返回满足条件的行,这一过程被称为扫描。在有索引的表可以进行查找数据而不用扫描整张表。没有聚簇索引的表被称为堆,数据无序存放。当表存在聚簇索引时,数据按序存放,非聚簇索引的行定位器指向聚簇索引键,若是堆表则行定位是指向行ID。样表:RowID(不是实际列) C1 C2 C31A1 A2 A32B1 B2 B3没有聚簇索引情况下的非聚簇索引页面:C1上有一非聚簇索引C1 行定位器A1 指向RID=1的指针B1 指向RID=2的指针在列C2上创建一个聚簇索引后,非聚簇索引的行定位器发生了变化:C1 行定位器A1 A2B1 B2 阅读全文
posted @ 2011-03-14 09:28 秋无语 阅读(2104) 评论(0) 推荐(0) 编辑
摘要: 正则表达式用到的元字符:( { [ \ ^ $ | ) * + .] }。如果表达式中用到以上字符需要用“\“进行转义。<script language="javascript" type="text/javascript"> var toMatch = "cat, "; var regex = /cat/; alert(regex.test(toMatch)); //true </script> 表达式“/cat/”表示匹配一个以c开头的字符,接着是一个字符a,接着是一个字符t的文本。<script l 阅读全文
posted @ 2011-02-28 09:06 秋无语 阅读(2721) 评论(1) 推荐(0) 编辑
摘要: 一、变量在javascript变量中可以存放两种类型的值:原始值和引用值。原始值存储在栈上的简单字段,也就是值直接存储在变量所标示的位置内。引用值存储在堆内的对象,栈内变量保存的是指向堆内对象的指针值。在javascript中有5种基本类型:Undefined,Null,Boolean,Number,String。引用类型其实就是对象,类似其他语言中类实例的概念。var b = true; // 存储在栈上var num = 20; //存储在栈上var b = new Boolen(true); //存储在堆内var num = new Number(20); // 存储在堆内通常生成对象的 阅读全文
posted @ 2011-02-21 08:47 秋无语 阅读(3251) 评论(0) 推荐(1) 编辑