数据库简单优化

来源:互联网 发布:键盘钢琴软件 编辑:程序博客网 时间:2024/06/07 06:41

最近公司的服务器总挂掉,加大线程池以及虚拟机内存都只能控制一段时间,后来总结出是数据库的问题,但不知道到底是那一条查询语句导致的,后来看公司大神操作,可以用

SELECT  [Spid] = session_id ,
            ecid ,
            [Database] = DB_NAME(sp.dbid) ,
            [User] = nt_username ,
            [Status] = er.status ,
            [Wait] = wait_type ,
            [Individual Query] = SUBSTRING(qt.text,
                                           er.statement_start_offset / 2,
                                           ( CASE WHEN er.statement_end_offset = -1
                                                  THEN LEN(CONVERT(NVARCHAR(MAX), qt.text))
                                                       * 2
                                                  ELSE er.statement_end_offset
                                             END - er.statement_start_offset )
                                           / 2) ,
            [Parent Query] = qt.text ,
            Program = program_name ,
            hostname ,
            nt_domain ,
            start_time
    FROM    sys.dm_exec_requests er
            INNER JOIN sys.sysprocesses sp ON er.session_id = sp.spid
            CROSS APPLY sys.dm_exec_sql_text(er.sql_handle) AS qt
    WHERE   session_id > 50 -- Ignore system spids.
            AND session_id NOT IN ( @@SPID ) -- Ignore this current statement.
ORDER BY    1 ,
            2

查询出到底是那条语句占用大量的内存,数据库也设计不是特别合理,存了大约1年的数据,大约2000万条,索引设计也不是特别合理,我只好将数据拆分,3个月的数据存在一张表里,因为查询的时候时间是必须的,所以根据时间来判断是哪一张表就行了。

原创粉丝点击