摘要: 在.net中微软给我们提供高速缓存机制,很好的缓解了服务器的压力。.net中提供了aspx页面缓存,cache对象缓存,sql数据库缓存。这里我只对cache对象缓存使用和背景说下自己的观点。经常使用动软的代码生成器,在抽象工厂模式下的采用对象缓存创建DAL层实例。一直没有考虑这里的原理,今天翻阅《ASP.NET3.5高级编程》这本书中的高级缓存,突然明白了一个道理,这就是所谓的“学而不思则罔,思而不学则殆”。我们长期在工作的环境下,反而会不去学习思考一些事情,一些代码只知道复制过来,实现了某个功能就行,这样长期下去对自己的职业成长是有影响的。大家熟知在BS的开发模式下,并行用户是有很多的,而 阅读全文
posted @ 2013-01-24 13:25 life is a gift 阅读(2944) 评论(6) 推荐(0) 编辑
摘要: 如何优化大数据量表的查询,尤其是两个表关联查询。这里提供一种解决思路。采用临时表或临时表变量,把两个表或者其中一个表筛选出一部分数据放到临时表中,然后再进行连接查询。临时表存储于内存中,只用于做查询操作,避免了其他用户的增、删操作锁定表的性能消耗。在执行表查询操作的时候,要加s锁,被加了s锁的表,其他用户只能进行查询操作,而不能进行修改删除操作。也就是说:被加了s锁的表,还能被s锁,但不能加x锁。创建临时表就能及时释放s锁,以供后来用户使用。一定程度防止耗时的查询阻塞其他用户。基本的封锁类型有两种排它锁(X锁)和共享锁(S锁).所谓X锁,是事务T对数据A加上X锁时,只允许事务T读取和修改数据A 阅读全文
posted @ 2013-01-19 10:24 life is a gift 阅读(426) 评论(0) 推荐(0) 编辑
摘要: 做好备忘,sql 2005推出的row_number函数,使用分页查询更简单了。原来mssql中分页查询都是用top来做,有些繁琐。自有了row_number感觉简单了许多。但还是不如mysql中的limit,一条就ok。row_number函数分页也还是需要子查询。先用row_number把原记录按id排序查询,重新制定编号。然后再按新的编号查询指定范围。思路是不是很清晰了。select * from (select row_number() over(order by id asc) as numid,* from branch ) as twhere t.numid between 5 阅读全文
posted @ 2013-01-17 09:29 life is a gift 阅读(452) 评论(0) 推荐(0) 编辑
摘要: 1.在数据库中保存的存储过程都是编译过的,执行速度快。2.允许模块化编程,类型方法的复用。3.提高了性能的安全性,防止sql注入。4.调用时减少网络流通量,只传输存储过程名称。系统存储过程一般以sp_或xp_开头,用户存储过程一般以usp_开头。调用存储过程用关键字exec1.创建一个名为usp_helloworld存储过程create proc usp_helloworldasbegin print 'hello world!!!';endexec usp_helloworld2.创建一个带参数存储过程,并输出两个的和。--带参数存储过程create proc usp_add 阅读全文
posted @ 2013-01-14 15:35 life is a gift 阅读(243) 评论(0) 推荐(0) 编辑
摘要: 经常会用到的往数据库插入一条记录并获取该条记录的ID。千万不要去,先insert into一条记录,然后查询表格的最后一条记录是多少,这样会有问题的,如果同时有多个连接插入数据的话,你获取的可能不是你刚才的那条记录。这个是比较小儿科做法,一般人估计不会这么干。在sql2005以前很多人都是采用SELECT@@Identity来获取上一条记录的自动编号。在insert into之后紧接着执行@@Identity。C# ado.net中调用时,把两条语句作为一条sql,同时提交。用ExecuteScalar读取。insert into employees values('张三1', 阅读全文
posted @ 2013-01-14 14:04 life is a gift 阅读(822) 评论(0) 推荐(0) 编辑
摘要: 事务的用途这里就不赘述了。在一些大型项目安全性强项目用途还是比较广泛的。在执行银行转账操作的时候,A用户向B用户转账1000元。--begin transaction --打开一个事务,简写可以用begin tran--@@error范围错误码,如果没错误就返回0begin tran declare @sum int update employees set balance=balance-1000 where id=1 set @sum =@sum+@@error update employees set balance=balance+1000 where id=2... 阅读全文
posted @ 2013-01-14 14:03 life is a gift 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 虽然现在什么问题都能问百度、谷歌。但是有些基本的知识还是需要上手就有的。现在很多工具都是可视化操作,很多命令就淡忘了。重新复习下,面试题中出现的几率很高的。下面的操作是在microsoft sql server 2005中测试无误,其他版本请大家自行测试。1>简单创建数据库,数据表创建数据库mydb。注意用户名称要用中括号包裹,以区分系统关键词。我很多时候就不太习惯用。不过这样在程序中很容易出错而找不到问题在哪。create database mydb创建一个员工表。注意自增长的关键词identity;varchar和nvarchar的区别,两者都能存储中文字符,但varchar在英文操 阅读全文
posted @ 2013-01-14 14:03 life is a gift 阅读(195) 评论(0) 推荐(0) 编辑
摘要: 2013了过的好快啊。工作也快三年了。在sparke也快两年了。工作一直都是松松散散,可是自己也没闲着(都是瞎忙)。在这里也没提高太多开发知识。本事打算依靠这里的时间充分多做点额外收入,但计划赶不上变化。家里给垫了部分钱在济南买了套房子。买房前也没感到啥压力,买了房子了却发现吃力不小。月供+房租+生活费,现在还有小宝宝,开销大了不少,勉强够支撑生活,工资还是少了点,外块总是不稳定因素。决定2013走向新的征程,打算换工作了,也不能再这样混下去了。要不开发的经验真是都荒废了。博客园其实很早就注册了,个人也不太习惯写Blog,一直没写过。年前把技术整理整理,把知识点总结总结,记录在博客园,已被查询 阅读全文
posted @ 2013-01-14 10:14 life is a gift 阅读(125) 评论(0) 推荐(0) 编辑