SqlServer 有张表,被频繁访问,导致服务器cpu 比较高,有没有什么好的办法解决呢 SqlServer 有张表,被频繁访问,导致服务器cpu 比较高,有没有什么好的办法解决呢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用profiler看看你的语句的reads和duration是多少,duration的单位是毫秒 看看如下的情况是否对你有帮助?CPU占用率高的九种可能 1、防杀毒软件造成故障 由于新版的KV、金山、瑞星都加入了对网页、插件、邮件的随机监控,无疑增大了系统负担。处理方式:基本上没有合理的处理方式,尽量使用最少的监控服务吧,者,升级你的硬件配备。 2、驱动没有经过认证,造成CPU资源占用100% 大量的测试版的驱动在网上泛滥,造成了难以发现的故障原因。 处理方式:尤其是显卡驱动特别要注意,建议使用微软认证的或由官方发布的驱动,并且严格核对型号、版本。 3、病毒、木马造成 大量的蠕虫病毒在系统内部迅速复制,造成CPU占用资源率据高不下。解决办法:用可靠的杀毒软件彻底清理系统内存和本地硬盘,并且打开系统设置软件,察看有无异常启动的程序。经常性更新升级杀毒软件和防火墙,加强防毒意识,掌握正确的防杀毒知识。 4、控制面板—管理工具—服务—RISING REALTIME MONITOR SERVICE点鼠标右键,改为手动。 5、开始->;运行->;msconfig->;启动,关闭不必要的启动项,重启。 6、查看“svchost”进程。 svchost.exe是Windows XP系统的一个核心进程。svchost.exe不单单只出现在Windows XP中,在使用NT内核的Windows系统中都会有svchost.exe的存在。一般在Windows 2000中svchost.exe进程的数目为2个,而在Windows XP中svchost.exe进程的数目就上升到了4个及4个以上。 7、查看网络连接。主要是网卡。 8、查看网络连接 当安装了Windows XP的计算机做服务器的时候,收到端口 445 上的连接请求时,它将分配内存和少量地调配 CPU资源来为这些连接提供服务。当负荷过重的时候,CPU占用率可能过高,这是因为在工作项的数目和响应能力之间存在固有的权衡关系。你要确定合适的 MaxWorkItems 设置以提高系统响应能力。如果设置的值不正确,服务器的响应能力可能会受到影响,或者某个用户独占太多系统资源。 要解决此问题,我们可以通过修改注册表来解决:在注册表编辑器中依次展开[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServiceslanmanserver ]分支,在右侧窗口中新建一个名为“maxworkitems”的DWORD值。然后双击该值,在打开的窗口中键入下列数值并保存退出: 9、看看是不是Windows XP使用鼠标右键引起CPU占用100% 在资源管理器里面,当你右键点击一个目录或一个文件,你将有可能出现下面所列问题: 任何文件的拷贝操作在那个时间将有可能停止相应 网络连接速度将显著性的降低 所有的流输入/输出操作例如使用Windows Media Player听音乐将有可能是音乐失真成因: 当你在资源管理器里面右键点击一个文件或目录的时候,当快捷菜单显示的时候,CPU占用率将增加到100%,当你关闭快捷菜单的时候才返回正常水平。 执行很快的, duration 最多 50 SqlServer 有张表,被频繁访问,导致服务器cpu 比较高,有没有什么好的办法解决呢-->>看看这张表的字段是不是比较多,如果比较多的话,建议把表拆分成几个小表;如果字段比较少的话,好像不好办 字段是比较少的, 只有3个字段, 一个是 IPName MinIP MaxIP 能不能贴出你的语句,你的reads太高,最好控制在500一下 CPU比较高?应该是你的SQL中含有复杂的计算吧,分组?帖出表结构&SQL比较好分析一点。 是有计算的, string[] IPs = strIP.Split('.'); long lIP = ck.ObjToInt64(IPs[0]) * 256 * 256 * 256 + ck.ObjToInt64(IPs[1]) * 256 * 256 + ck.ObjToInt64(IPs[2]) * 256 + ck.ObjToInt64(IPs[3]);算出当前 ip 得值, 然后进数据库匹配 楼上的,很明确的告诉你,between and 不如>= 和<=不信自己试一试。自己造2千万的数据测试。 貌似没写出sql语句,这是最关键的部分 Sql 是这样的 string strSql = "Select IPName from TB_IPS where MinIP<=" + lIP + " and MaxIP>=" + lIP + ""; 建议用存储过程来查询,你的sql,如果满足条件的记录比较多,比如 10万左右,那你这条sql要花不少的时间,因为它要返回10万条记录,这是很花费性能的,用存储过程分页读取你要显示的数据就可以了 1.在minip,maxip上面建立联合索引;2.看看你这条语句的执行计划;3.在查询分析器里执行这条语句看看返回多少条记录 LZ我怀疑你找错地方了。按你说的情况看,就算这个表访问的再频繁,也不会导至cpu大量占用(你的duration才50)是不是还有其它什么地方有问题? string strSql = "Select top 1 IPName from TB_IPS where MinIP <=" + lIP + " and MaxIP>=" + lIP + ""; C# code先多拿点数据到内存Dataset中,然后再对dataset 进行筛选 表里面有多少条记录? 然后经常用到的查询条件字段有没有建索引? 注意 like '%abc' 这样的写法是无法使用索引的。如果只要一条的话,用top 1 会快很多。 得先确定下是否是这个表的问题,如果是的话用跟踪看下对这个表的操作(其实开始就需要跟踪所有的查询查找损耗cpu、时间的语句)。确定后再分析。就SQL简单而言,索引应用不当,或索引没有维护至于硬件问题也有可能,可能性虽然不高,但更致命. xml如何导入sqlserveer 关于复合索引的一点疑问? 如何根据日期得到1至月份数的连续数? 类型转换问题 有一列字段是姓名,但两个字的姓名中间有个空格,这空格怎么清除啊? 自定义函数内不能使用try带来的问题!急! WinForm sqlserver2005 事务 如何用SELECT语句把表的列当成行(记录)来使用 如何查出一个数据库中无记录(或有记录的)表有哪些 关于数据库保存图片和视频文件的问题 怎么查看SQL执行的命令? 各位大虾,还有没休息的吗?请教一条语句
1、防杀毒软件造成故障
由于新版的KV、金山、瑞星都加入了对网页、插件、邮件的随机监控,无疑增大了系统负担。处理方式:基本上没有合理的处理方式,尽量使用最少的监控服务吧,者,升级你的硬件配备。
2、驱动没有经过认证,造成CPU资源占用100%
大量的测试版的驱动在网上泛滥,造成了难以发现的故障原因。 处理方式:尤其是显卡驱动特别要注意,建议使用微软认证的或由官方发布的驱动,并且严格核对型号、版本。
3、病毒、木马造成
大量的蠕虫病毒在系统内部迅速复制,造成CPU占用资源率据高不下。解决办法:用可靠的杀毒软件彻底清理系统内存和本地硬盘,并且打开系统设置软件,察看有无异常启动的程序。经常性更新升级杀毒软件和防火墙,加强防毒意识,掌握正确的防杀毒知识。
4、控制面板—管理工具—服务—RISING REALTIME MONITOR SERVICE点鼠标右键,改为手动。
5、开始->;运行->;msconfig->;启动,关闭不必要的启动项,重启。
6、查看“svchost”进程。
svchost.exe是Windows XP系统的一个核心进程。svchost.exe不单单只出现在Windows XP中,在使用NT内核的Windows系统中都会有svchost.exe的存在。一般在Windows 2000中svchost.exe进程的数目为2个,而在Windows XP中svchost.exe进程的数目就上升到了4个及4个以上。
7、查看网络连接。主要是网卡。
8、查看网络连接
当安装了Windows XP的计算机做服务器的时候,收到端口 445 上的连接请求时,它将分配内存和少量地调配 CPU资源来为这些连接提供服务。当负荷过重的时候,CPU占用率可能过高,这是因为在工作项的数目和响应能力之间存在固有的权衡关系。你要确定合适的 MaxWorkItems 设置以提高系统响应能力。如果设置的值不正确,服务器的响应能力可能会受到影响,或者某个用户独占太多系统资源。
要解决此问题,我们可以通过修改注册表来解决:在注册表编辑器中依次展开[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServiceslanmanserver ]分支,在右侧窗口中新建一个名为“maxworkitems”的DWORD值。然后双击该值,在打开的窗口中键入下列数值并保存退出:
9、看看是不是Windows XP使用鼠标右键引起CPU占用100%
在资源管理器里面,当你右键点击一个目录或一个文件,你将有可能出现下面所列问题:
任何文件的拷贝操作在那个时间将有可能停止相应
网络连接速度将显著性的降低
所有的流输入/输出操作例如使用Windows Media Player听音乐将有可能是音乐失真成因:
当你在资源管理器里面右键点击一个文件或目录的时候,当快捷菜单显示的时候,CPU占用率将增加到100%,当你关闭快捷菜单的时候才返回正常水平。
-->>看看这张表的字段是不是比较多,如果比较多的话,建议把表拆分成几个小表;如果字段比较少的话,好像不好办
CPU比较高?应该是你的SQL中含有复杂的计算吧,分组?帖出表结构&SQL比较好分析一点。
string[] IPs = strIP.Split('.');
long lIP = ck.ObjToInt64(IPs[0]) * 256 * 256 * 256 + ck.ObjToInt64(IPs[1]) * 256 * 256 + ck.ObjToInt64(IPs[2]) * 256 + ck.ObjToInt64(IPs[3]);
算出当前 ip 得值, 然后进数据库匹配
楼上的,很明确的告诉你,between and
不如>= 和<=不信自己试一试。自己造2千万的数据测试。
建议用存储过程来查询,你的sql,如果满足条件的记录比较多,比如 10万左右,那你这条sql要花不少的时间,因为它要返回10万条记录,这是很花费性能的,用存储过程分页读取你要显示的数据就可以了
2.看看你这条语句的执行计划;
3.在查询分析器里执行这条语句看看返回多少条记录