none
SQL Server 2008 R2 загружает процессор на 100% RRS feed

  • Вопрос

  • Здравствуйте.

    Есть база данных размером около 120 гигобайт. В ней порядка 50 таблиц, из которых одна содержит 135 миллионов записей и весит 35 гигов, и есть таблица, которая весит 70 гигов и содержит всего 700 тыс. записей. Остальные таблицы не велики.

    После небольших изменений в схеме БД, через час, может через 4 часа, может через 10 минут SQL Server загружает процессор на 100%, если быть точным, на 98%. Изменения в схеме были сделаны следующие: создание пустой таблицы, прочем заполнять ее даже не начинали. Год назад просто добавил колонку в таблицу, в котором около 2 милионов записей было. В первом случае помогло удаление таблицы и перезапуст SQL Server, но потом когда еще раз создал эту таблицу, то через 2 часа опять проц на 98%, удаление таблицы не помогло. Пришлось запустить полное обновление статистик и Rebuild всех индексов и помогло. Во втором случае, когда просто добавил колонку, рухнуло все и ничего не помогало, в результате полная переустановка системы на которой установлен SQL Server.

    На сервере 2 проца по 6 ядер каждый и 16 гигов оперативки. Так же ежедневно делаются бекапы логов, их сжатие и каждую неделю обновляются статистики и делается rebuild всех индексов. Сама база данных используется для хранения данных поиска туров. Основная часть таблиц это обычные справочники, а остальные 5 таблиц используются для хранения сгенерированных туров. Туры обновляются очень часто, что приводит к быстрому росту файла логов и как следствие требуется его сжатие. Ну и что хотелось бы еще отметить, это то, что запросы поиска работают быстро только за счет ручной оптимизации БД, то есть создания статистик и индексов. Собственно поэтому приходится каждую неделю обновлять все статистики и пересобирать индексы.

    Если ктонибудь сталкивался с такими проблемами, то пожалуйста расскажите как вы решали такие проблемы? Может нужно как то по особенному вносить изменения в схему?

    Спасибо.


    Диман

    22 марта 2012 г. 6:33

Все ответы

  • Очень много сумбура и мало конкретики.

    В чем именно заключается "главная" проблема? Загрузка CPU на 100%??


    www.sqlCMD.ru - all around MS SQL Server

    22 марта 2012 г. 6:48
  • Я добавил таблицу:

    CREATE TABLE [dbo].[ToursExportData]
    (
    	[id] UNIQUEIDENTIFIER NOT NULL PRIMARY KEY DEFAULT newid(), 
    	[created_date] DATETIME NOT NULL DEFAULT getdate(), 
    	[created_by] UNIQUEIDENTIFIER NULL, 
    	[changed_date] DATETIME NOT NULL DEFAULT getdate(), 
    	[changed_by] UNIQUEIDENTIFIER NULL, 
    	[tour_id] INT NOT NULL,
    	[xml] XML NOT NULL, 
    	[version] VARCHAR(10) NOT NULL, 
    	CONSTRAINT [FK_ToursExportData_ToTours] FOREIGN KEY ([tour_id]) REFERENCES [dbo].[Tours]([id])
    )
    

    После чего проц загрузился на 98%.

    В последний раз помогло только ее удаление и основление всех статистик и пересборка всех индексов. Перезапуск сервера SQL не помогал, через 30 секунд, после перезапуска, загрузка так же выростала до 98%.


    Диман

    22 марта 2012 г. 8:04
  • Как-то тяжело сходу что-то сказать. Ситуация очень странная.

    Сомневаюсь, что поможет, но вы пробовали посмотреть, какой процесс на MSSQL в момент такой нагрузки кушает больше всего CPU?

    Пробовали поднять базу на другом сервере и внести такие же изменения, ситуация с нагрузкой повторяется?

    5 апреля 2012 г. 7:18