DataSet ds = new DataSet(); SqlConnection MyConnection = new SqlConnection("server=localhost; uid=sa; pwd=; database=NorthWind"); SqlCommand myCommand = new SqlCommand(strSql,MyConnection); SqlDataAdapter myAdapter=new SqlDataAdapter(queryStr,connectionStr); for(int i=0;i<1000;i++) //for循环模拟取得数据前的商业逻辑操作 { Thread.Sleep(1000); } MyConnection.Open(); //打开连接 myAdapter.Fill(ds); MyConnection.Close(); //关闭连接 for(int i=0;i<1000;i++) ////for循环模拟取得数据后的商业逻辑操作 { Thread.Sleep(1000); }
显示II代码比I代码好的多,I中早早占着连接不放,如果用户很多的话,容易出现连接池满情况。严重时出现死机现象.
2.数据库查询
I. 直接生成SQL语句。 Sql Server每次都要对其进行编译,在性能方面不会有很大的提高。 另外也不够安全。容易被攻击.
II. 使用带参数的SQL命令。这种方式Sql Server只对其编译一次,对于不同的参数可以重复使用编译后的命令。提高了性能.
III.使用Sql Server存储过程. 编译一次. 具有独立性,便于修改和维护. 一次能完成用语句发送多次的功能.减少了网络的流量。 并不一定存储过程一定比语句效率要高,如果商业逻辑很复杂的话,有时候用语句比存储过程效率要高.
七、缓存优化
缓存分为两种:页面缓存和API缓存.
1.使用页面缓存和片段缓存:
<%@ OutputCache Duration="5" VaryByParam="None"%> <%@ OutputCache Duration=60 VaryByParam=”TextBox1,TextBox2” %>
说明: Duration是设置Cache的过期时间;
VarByParam是设置是否根据参数而变化,None是所有参数使用同一Cache,
设置TextBox1时则根据TextBox1的不同值分别缓存;当有多个参数时则要组合缓存;
2.API缓存。用于在应用程序中使用
I. 一个Cache使用的例子:
https://www.jb51.net/article/52399.htm
II.使用时注意Page.Cache和HttpContext.Current.Cache区别:
它们指的同一个对象,在Page里,用Page.Cache,如果在global.asax或自己的类里用:HttpContext.Current.Cache
在有些事件中,由于其没有HttpContext,就用HttpRuntime.Cache.
您可能感兴趣的文章: