十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
首先应该确定是谁慢的,往往是程序处理方面的问题而不是数据库的问题。
创新互联主营秀洲网站建设的网络公司,主营网站建设方案,手机APP定制开发,秀洲h5重庆小程序开发搭建,秀洲网站营销推广欢迎秀洲等地区企业咨询
程序方面应该尽可能的减少数据查询返回的内容,减少IO压力,磁盘IO和网络IO是非常非常慢的。比如可以查询返回ID,然后再根据ID一条一条的查询具体内容,看似慢了,在数据量大的时候快很多
对于数据可以参照下面几点
1、优化SQL语句,SQL语句对查询速度影响最大的
2、对于经常查询的字段作索引。但是这样会增加修改时的压力
4、优化SQLServer,比如给其分配固定的内存,预先分配查询内存,调整CPU使用率等。SQL Server 可以占用几乎所有Windows的内存,但是申请内存开销很大。因此可以设定其使用固定大小内存,比如启动就分配1G以上内存。
5、优化硬件资源,比如使用更高的服务器或者硬盘,独立安排数据库的数据文件和索引文件,将数据文件分布于不同的物理硬盘上等等
6、考虑使用分布数据库或者对大表进行拆分
慢的三个原因,IOPS,CPU,内存,锁。
数据库默认是占满内存做缓存的,如果你有2个不同的数据库,内存不分配好,就出现争用内存的情况。
CPU一般建议80%左右,索引、大逻辑查询,count等统计信息都是走CPU,CPU高肯定慢。
IOPS,就是写入速度,如果经常批量写数据,批量查数据,或者直接全部数据读取后给前端处理,IOPS不足就会影响数据吞吐形成等待。
锁,也就是事务,大量事务会出现枪锁情况,这个情况也会等待,甚至死锁。
没有用到索引或者就是内存小了,因为没有备份运行时有的sql丢失了。
看看数据库内存设置是否比较小,数据库表是否建立合理的索引。
因为主机长期在工作.数据会一上在增多..对于内存还有CPU来说不是所有数据都可以一次性的完全处理好。就会有一些"尾数"包括记录,然而越来越多,会让主机运行速度变慢。如果用好点的专用的服务器硬盘,内存会让主机更长时间的不用重启。所以SQL还是要用高一点的配置。
可以换个方式重写这些代码。这样循环相信你也快不到哪去。
另外,把你的SQL语句response出来,放到分析器执行一下,看一下时间。
If Rs.Eof and Rs.Bof Then
Do While Not Rs.EOF这个也不用了,不是和前面判断重复了。
对sqlserver的影响应该不是很大,可能对access影响就比较大了,而access又没有什么存储过程方面的分页,建议使用asp.net中的DateSet分页,速度虽然不是很快,但不至于对access或sqlserver分别太大。
public static System.Data.DataTable GetPage(string SqlString, int PageIndex, int PageSize)
{
int FirstPage = PageIndex * PageSize;//当前的开始位置,其它PageIndex是当前页,PageSize是页面大小
SqlConnection conn = new SqlConnection("连接字符串");
SqlCommand cmd = new SqlCommand(SqlString, conn);
SqlDataAdapter oda = new SqlDataAdapter(cmd);
System.Data.DataSet ds = new System.Data.DataSet();
try
oda.Fill(ds, FirstPage, PageSize, "表名");
}
catch { }
finally
{
Close();
}
return ds;
}
通过这个分页,你看看,是不是access与sqlserver速度相差不大呢!
SQL Server has encountered 233 occurrence(s) of I/O
requests taking longer than 15 seconds to complete on file
[S:\Data\dbE2EComb2_Data_redirect.MDF] in database [dbE2EComb2] (5).
The OS file handle is 0x0000089C. The offset of the latest long I/O is:
0x00000a40680000
SQL Server has encountered 501 occurrence(s) of I/O
requests taking longer than 15 seconds to complete on file
[S:\Data\dbE2EComb2_Data_redirect.MDF] in database [dbE2EComb2] (5).
The OS file handle is 0x0000089C. The offset of the latest long I/O is:
0x00000bfe9ac000
SQL Server has encountered 752 occurrence(s) of I/O
requests taking longer than 15 seconds to complete on file
[S:\Data\dbE2EComb2_Data_redirect.MDF] in database [dbE2EComb2] (5).
The OS file handle is 0x0000089C. The offset of the latest long I/O is:
0x00001c7ee40000