数据库性能优化主要包括以下几个方面:
1、sql语句的执行计划是否正常;
2、减少应用和数据库的交互次数、同一个sql语句的执行次数;
3、数据库实体的碎片的整理;
4、减少表之间的关联,特别对于批量数据处理,尽量单表查询数据,统一在内存中进行逻辑处理,减少数据库压力;
5、对访问频繁的数据,充分利用数据库cache和应用的缓存;
6、数据量比较大的,在设计过程中,为了减少其他表的关联,增加一些冗余字段,提高查询性能。
在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出SQL语句各种写法的性能优劣,但是如果将应用系统提交实际应用后,随着数据库中数据的增加,系统的响应速度就成为目前系统需要解决的最主要的问题之一。
系统优化中一个很重要的方面就是SQL语句的优化。对于海量数据,劣质SQL语句和优质SQL语句之间的速度差别可以达到上百倍,可见对于一个系统不是简单地能实现其功能就可,而是要写出高质量的SQL语句,提高系统的可用性。
dataloader释放缓存方法如下:可以进行高速数据交换的存储器,它先于内存与CPU交换数据,因此速率很快。缓存只是内存中少部分数据的复制品,所以CPU到缓存中寻找数据时,也会出现找不到的情况(因为这些数据没有从内存复制到缓存中去)。
相信几乎所有学过asp.net的朋友都遇到过这个问题:未将对象引用设置到对象的实例。百分网我整理了未将对象引用设置到对象的实例的原因和解决方法,希望大家有所收获!
未将对象引用设置到对象的实例的原因一、数据库方面
1、ViewState 对象为Null。
2、DateSet 空。
3、sql语句或Datebase的原因导致DataReader空。
4、声明字符串变量时未赋空值就应用变量。
5、未用new初始化对象。
6、Session对象为空。
7、对控件赋文本值时,值不存在。
8、使用Request.QueryString()时,所获取的对象不存在,或在值为空时未赋初始值。
9、使用FindControl时,控件不存在却没有做预处理。
10、重复定义造成未将对象引用设置到对象的实例错误.
二、应用程序方面
(1)所设置的变量为空值或没有取到值,一般出现在传递参数的时候出现这个问题,也会在使用DataGrid或gridview或datalist等数据控件时出现.
(2)控件名称与codebehind里面的没有对应
(3)未用new初始化对象
(4)在程序中所引用的控件不存在
解决方法:
(1)使用try..catch...finally捕捉错误,或直接用response.write()输出所取的'变量值
(2)查看代码中是否存在未初始化的变量
三、数据库连接
SqlConnection.Open 未将对象引用设置到对象的实例
在使用VS2003开发 ASP.NET程序时候 有时候 *** 作 SqlConnection对象的Open()方法时候会出现
未将对象引用设置到对象的实例。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息:System.NullReferenceException: 未将对象引用设置到对象的实例。
源错误:
。。。。
conn.Open()
......
跟踪调试也肯定可以确定 对conn进行new *** 作 但是程序经常在这个地方报错,但是有时候重启服务器或者重启IIS有能正常使用了。 怎么调试也找不到问题 那么这个时候可能是你本机上安装的.NET FRAMEEWORK 框架有问题,可能没有没有安装SP1.1补丁
需要打NETFRAMEEWORK1.1 SP1的补丁,到微软官方网站下载安装后就好了。
四、一般出现NullReferenceException异常的情况
1、对象所在的命名空间没有引用
2、对象没有实例化
3、出现异常,实例化失败对象为 null
五、IIS
当应用程序的用户访问量超过它能承受的范围之后,就会出错。
改善你的程序,使用缓存,尽量减少与数据库交互的次数。
六、查看是否重置了DataSet引用
请大家好好查查自己的代码,是不是在其他地方重新引用了,在DataSet被设置成全局对象也会出现这种错误提示。
七、最后
甚至,仅仅因为网站里面DAL的dll文件失效,业务层实例化不了IDAL里面的对象也会出错。
当你发现所有的方法不行时,打上.netframework的补丁
未将对象引用设置到对象的实例的解决方法为每个可疑的地方添加监视,起初以为是sql语句写错了,查了几遍,换用sql语句还是报同样的错误。根据google出来的结果,提到对象重定义会引起这样的结果。根据这一提示,替换掉页面级全局对象,总算搞定了。
class DBOper{
/*构造函数没有函数体
*
*c#写的 一系列对数据库 *** 作方法
*
*
}
最初为了省事,尽量少声明对象,只在全局声明了一个private DBOper db=new DBOper(),在不同方法里面调用该对象的方法,以避免为其定义而造成内存浪费。后来代码重构,在编译的时候并未报错。但是当运行的时候,就出现” NullReferenceException: 未将对象引用设置到对象的实例“。结果就因它而搞了几个小时。后来根据google的结果,将不同方法中使用到的DBOper对象一一重定义为局部变量(一个方法里面只定义一个DBOper对象,多次调用其方法均正常),去掉全局的private变量。再运行的时候就正常了。
至于为什么将自定义的对象提成为class为private在不同的方法里面使用后而出现这样的问题,现在还不是很清楚.........................
猜你感兴趣:
↓↓↓ 下页更多"C#未将对象引用设置到对象的实例解决办法" ↓↓↓
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)