我们网站前两天IP日一万左右。这两天流量特别大。但是自从卡了之后流量不大的时候也卡。
我的网站运行一段时间后变卡,前段几个月时间还好好的,就这两天运行一段时间大概十多二十分钟后卡了,去服务器看数据库很卡,甚至从界面上无法登录数据库,还必须以dos命令 net stop mssqlserver, 然后net start mssqlserver来重启数据库,我用的是2005, 很多个数据库,最大的数据库主要数据文件达到1.39G, 服务器2003。
当卡的时候,我用 exec sp_who_lock 命令无查看死锁和堵塞,一运行一大堆的死锁和堵塞,难道真是那些语句或者存储过程的原因吗?那么多,我怎么改啊,我觉得我的sql还算是比较优化的啊。而且为什么前两天还好好的,突然这样子呢?
请问这是什么原因啊,我程序里用到了数据缓存,这应该是减轻数据库压力的啊。 我真的很郁闷,请高手帮帮我,欲哭无泪。
我的qq454881823
我的网站运行一段时间后变卡,前段几个月时间还好好的,就这两天运行一段时间大概十多二十分钟后卡了,去服务器看数据库很卡,甚至从界面上无法登录数据库,还必须以dos命令 net stop mssqlserver, 然后net start mssqlserver来重启数据库,我用的是2005, 很多个数据库,最大的数据库主要数据文件达到1.39G, 服务器2003。
当卡的时候,我用 exec sp_who_lock 命令无查看死锁和堵塞,一运行一大堆的死锁和堵塞,难道真是那些语句或者存储过程的原因吗?那么多,我怎么改啊,我觉得我的sql还算是比较优化的啊。而且为什么前两天还好好的,突然这样子呢?
请问这是什么原因啊,我程序里用到了数据缓存,这应该是减轻数据库压力的啊。 我真的很郁闷,请高手帮帮我,欲哭无泪。
我的qq454881823
经常查询的表,都根据排序字段做好了索引的。
cup内存的情况 还可以。
用 exec sp_who_lock 命令查看死锁和堵塞 总是一大片的,为什么前两天速度还那么好呢。
我们网站操作行比较强,是不是用户平凡操作数据库,产生了什么的原因?
由于部分查询涉及到的表的索引未建立或存在大量碎片(需要重建索引),导致在查询此表时出现较长的执行周期,从而引起其他SQL执行的排除现象。
看到的死锁的SQL,事实上并不一定是其引起的,很可能是其他SQL造成等待,导致后续一大堆的排队现象。
此外,也有可能是由于部分查询语句,在数据量少的时候不影响,但数量量大了以后,执行周期过长从而造成排队现象。
解决办法:
1.把某时刻的锁对应的SQL取出来。
2.数据库在本地重新建立一个,并且重现正在使用数据库的全部数据。
3.运行上述SQL,争取有重点的查找出耗时最长的SQL并加以改造。