База данных работает на 100% - PullRequest
2 голосов
/ 05 марта 2010

Мой сервер баз данных внезапно использует 100% обработки, и, похоже, у меня больше нет трафика на моих сайтах.Что я могу сделать, чтобы посмотреть, откуда увеличенный трафик поступает из среды SQL Server Management Studio?

Ответы [ 4 ]

1 голос
/ 05 марта 2010

Типичная причина высокой загрузки процессора - неоптимизированные запросы из хранимых процедур или иным образом. Я хотел бы взглянуть на то, какие хранимые процедуры вы часто используете, и убедиться, что они работают эффективно и правильно проиндексированы.

Некоторые примеры этого и ресурсы: http://msmvps.com/blogs/omar/archive/2006/08/15/100-cpu-100-io-a-near-death-experience-for-sql-server-2005-and-us.aspx

http://www.aneef.net/2009/04/11/100-cpu-sql-server-2005-servers-crashes/

Статья по настройке производительности: http://207.46.16.252/en-us/magazine/2007.10.sqlcpu.aspx

1 голос
/ 05 марта 2010

, хотя я использую этот запрос для быстрой проверки блокировки (с низкими издержками), вы можете использовать его, чтобы увидеть, сколько процессов у вас запущено, время процессора каждого процесса , чтение, запись и логические_четы:

;with Blockers AS
(   SELECT

        r.session_id AS spid
            ,r.blocking_session_id AS BlockingSPID
            ,LEFT(OBJECT_NAME(st.objectid, st.dbid),50) AS ShortObjectName
            ,LEFT(DB_NAME(r.database_id),50) AS DatabaseName
            ,s.program_name
            ,s.login_name
            ,r.cpu_time,r.reads,r.writes,r.logical_reads 
            ,OBJECT_NAME(st.objectid, st.dbid) AS ObjectName
            ,SUBSTRING(st.text, (r.statement_start_offset/2)+1,( (CASE r.statement_end_offset
                                                                      WHEN -1 THEN DATALENGTH(st.text)
                                                                      ELSE r.statement_end_offset
                                                                  END - r.statement_start_offset
                                                                 )/2
                                                               ) + 1
                      ) AS SQLText
        FROM sys.dm_exec_requests                          r
            JOIN sys.dm_exec_sessions                      s ON r.session_id = s.session_id
            CROSS APPLY sys.dm_exec_sql_text (sql_handle) st
    --WHERE r.session_id > 50
)
SELECT Blockers.* FROM Blockers WHERE spid!=@@SPID
0 голосов
/ 05 марта 2010

Посмотрите на монитор активности сервера sql, в частности на столбец cpu. возможно, у вас один или несколько запросов, выполняющихся в режиме wild.

0 голосов
/ 05 марта 2010

Попробуйте проверить количество свободного места в ваших файлах. Вполне возможно, что SQL отключен, увеличив размер вашего mdf / ldf

Если у вас мало свободного места, можно увеличить фиксированный размер, а не%

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...