Итак - у нас есть внутренняя база данных компании, обычные вещи: управление клиентами, телефонные звонки, сделки купли-продажи и клиентские соглашения / схемы.
Это клиентская часть Access 2000 и серверная часть SQL Server 2000 Standard. Одиночный сервер, двойной Xeon 3,2 ГГц, 2 ГБ ОЗУ, Windows Server 2003, получает около 40% загрузки ЦП в течение всего дня, распределяясь по 4 ядрам, видимым для ОС (HT).
Внутренняя база данных плохо спроектирована и за 10 с лишним лет органически выросла, обслуживается менее квалифицированными специалистами. Он плохо нормализован, и некоторые из очевидных проблем включают таблицы с десятками тысяч строк без первичного ключа или индекса, которые также интенсивно используются в соединениях с несколькими таблицами для некоторых наиболее интенсивно используемых частей системы (например, приложение менеджера вызовов, которое сидит на втором мониторе каждого в течение 8 часов в день и выполняет большой неэффективный запрос каждые несколько секунд).
Внешний интерфейс не намного лучше, это типичная путаница из сотен форм, вложенных сохраненных запросов, плохо написанного встроенного SQL-кода в коде VBA, десятков «причуд» и т. Д., И всякий раз, когда вносятся изменения, что-то не связанное, кажется, ломается. Мы остановились на одном MDB, который работает «достаточно хорошо», и теперь у нас есть политика без изменений, поскольку у нас нет собственных тяжеловесов Access (и нет планов по их найму).
В настоящее время компания медленно растет, растет число клиентов, звонков и т. Д., А также незначительное увеличение числа одновременных пользователей, и производительность в последнее время заметно ухудшается (ожидание перехода между формами, ожидание заполнения списков и т. Д.). )
Perfmon говорит:
- Передачи дисков в секунду: от 0 до 30, в среднем 4.
- Текущая длина очереди диска: колеблется около 1
Профилировщик SQL Server видит сотни тысяч запросов каждую минуту. Загрузка ЦП на клиентах практически равна нулю, что указывает на ожидание выполнения запросов на стороне сервера. Я перенес эту рабочую нагрузку с помощью помощника по настройке ядра БД, применил ее рекомендации к тестовой резервной копии, но на самом деле это не имело большого значения.
Кстати, у нас есть соединение 100 МБ и гигабитного Ethernet, все в одной подсети, 40 пользователей в двух этажах.
На вопрос.
На мой взгляд, у нас есть два варианта решения / улучшения этой ситуации.
- Мы можем отказаться от него и заменить его на совершенно новую систему CRM, сделанную на заказ или на заказ
- Мы можем продлить срок службы этой системы, забрав на нее аппаратное обеспечение.
Мы можем построить систему Intel i7 с безумными показателями производительности на порядок дешевле, чем замена программного обеспечения.
Когда новая система в конечном итоге разрабатывается, она может быть размещена на этом блоке, так что нет ненужного оборудования. Новая CRM система продолжает откладываться, выключаться и выключаться - я не вижу, чтобы это происходило, по крайней мере, в течение года.
Любые мысли по поводу этой ситуации, особенно если вы были здесь сами, будут очень признательны.
Благодарность