
Я IT-консультант и берусь за проекты для своих клиентов по настройке полной IT-инфраструктуры. У меня есть клиент, который столкнулся с проблемой с БАЗОЙ ДАННЫХ, он розничный дистрибьютор продуктов питания и имеет размер базы данных 10 ГБ, сервер - IBM x3100 M4 Xeon Quad Core Processor 8 MB Cache, с 16 ГБ RAM и 300 ГБ SAS, ОС - Windows Server 2008 Enterprise, с SQL Server 2005 Standard. Клиент жалуется, что весь процесс выставления счетов и других действий в БАЗЕ ДАННЫХ слишком медленный. Когда я проверяю монитор ресурсов на сервере 2008, я вижу, что процесс sqlserver достигает 70-80% каждые несколько секунд, использование памяти составляет от 50 до 60%, а использование диска постоянно меняется от 1 до 10 Мбит/с.
Есть идеи, в чем может быть проблема?
решение1
Если база данных слишком медленно отвечает на запросы, то либо сервер базы данных недостаточно подготовлен (возможно, вам следует рассмотреть возможность создания кластера), либо запросы, отправляемые на него, плохо спроектированы и выполняются медленно. Очевидно, что это аддитивные проблемы.
Учитывая указанные вами цифры, неплохая идея — добавить дополнительные серверы баз данных или значительно обновить имеющиеся. Хотя я понятия не имею, какова пропускная способность вашего диска, вполне возможно, что она низкая из-за доступа к диску; есть вещи, которые вы можете сделать, чтобы повысить скорость, например, использовать SAN, подключенный по оптоволоконному каналу, или более качественные диски, или другой уровень RAID, но когда проблема в дисках, обычно неплохая идея — добавить дополнительные серверы баз данных (поддерживаемые другими дисками).
Если можете, рассмотрите возможность просмотра запросов, которые выполняются в базе данных, и оптимизации их так, чтобы они создавали меньше временных таблиц или меньшие временные таблицы. Например, выборки и проекции (операторы SELECT) должны практически всегда происходить до объединений и сортировок.