SqlServer优化:当数据量查询不是特别多,但数据库服务器的CPU资源一直100%时,如何优化?
2017-08-06 15:01
806 查看
最近和同事处理一个小程序,数据量不是特别大,某表的的数据记录:7000W条记录左右,但是从改别执行一次查询时,却发现查询速度也不快,而且最明显的问题就是CPU100%。
sql语句:
发现问题,使用下边的语句查看数据库是否有锁存在:
当执行查看被琐表的时候,一下子就发现了近100条锁都是指向表:finger_lib_server表。
于是,通过sqlserver的查询优化发现表finger_lib_server表上并没有针对上边的查询创建对应的索引:
创建索引后,发现不仅CPU占用不到30%,而且查询速度也基本在0~60ms之间。
sql语句:
select gridid,lng,lat from finger_lib_server where lng>min_lng and lng<max_lng and lat>min_lat and lat<max_lat;
发现问题,使用下边的语句查看数据库是否有锁存在:
--查看被锁表: select request_session_id as spid,OBJECT_NAME(resource_associated_entity_id) as tableName from sys.dm_tran_locks where resource_type='OBJECT' --spid 锁表进程 --tableName 被锁表名 -- 解锁: declare @spid int Set @spid = 57 --锁表进程 declare @sql varchar(1000) set @sql='kill '+cast(@spid as varchar) exec(@sql)
当执行查看被琐表的时候,一下子就发现了近100条锁都是指向表:finger_lib_server表。
于是,通过sqlserver的查询优化发现表finger_lib_server表上并没有针对上边的查询创建对应的索引:
创建索引后,发现不仅CPU占用不到30%,而且查询速度也基本在0~60ms之间。
相关文章推荐
- Sqlserver 在查询分析器里如何访问远程的的数据库,进行数据查询更新等操作。
- sql中如何调用另一台服务器的数据库查询数据呢?
- 优化配置和索引查询--MySQL服务器进程CPU占用100%的解决方法
- SQL 大数据查询如何进行优化?sqlserver和oracle整理
- 如何优化数据库中数据的查询
- 如何优化数据库中数据的查询
- 如何优化数据库中数据的查询
- sql中如何调用另一台服务器的数据库查询数据呢?
- 如何优化数据库中数据的查询
- SQLSERVER跨数据服务器,跨数据库查询
- 两个不同数据库之间的两个表如何关联起来查询数据
- 当SqlServer数据量很大时,如何优化表格能加快处理速度
- SQLServer 海量查询的数据优化
- 如何规划和选择数据库服务器?(2、基于rPerf的推算,评估数据库服务器的CPU)
- (转)如何加快查询,优化数据库
- 如何把股票软件的数据导入到数据库(access,sqlserver,oracle)然后自行统计分析?
- 数据库查询优化方案(处理上百万级记录如何提高处理查询速度)
- 连接postgres特别消耗cpu资源而引发的PostgreSQL性能优化考虑
- 如何加快查询,优化数据库
- 如何诊断和解决CPU高度消耗(100%)的数据库问题