Добрый день!
Может у кого была подобная проблема и есть решение?
У нас стала часто возникать проблема с зависанием БД Террасофт
Проблема описывается следующим образом.
Если встать на клиента у которого последнее описание (у нас менеджеры вносят информацию о контакте в описание) сохранилось не корректно то база зависает.
Некорректность сохранения описания выявили через журнал изменений и при открытии последнего файла описания он открывается с трудом с сообщениями что у файла слишком большой размер.
Если в описании удается сохранить новое изменение то зависания по этому клиенту уходят.
Но бывает что раздел описание не открывается. и внести изменения не получается.
Как устранять эту проблему?
Возможно есть реестр описаний где можно отфильтровать по размеру и удалить подозрительные?
PS Чистка КЭШа не помогает.
Нравится
Здравствуйте, Алексей!
Специального реестра описаний в базовой версии нет.
Дублирую свой ответ, который был предоставлен Вам в рамках обращения в службу поддержки.
Причины описанной Вами проблемы могут быть самые разные. Для генерации решения нужно определить её источник (база данных, аппаратное обеспечение сервера или клиентские места). В момент возникновения замедлений проверить у всех ли пользователей это происходит одновременно. Если «да», то обратить внимание на сервер, в частности, на загрузку ЦП и оперативной памяти. Если там всё в порядке, тогда нужно моделировать ситуацию и в это время с помощью утилиты «SQL Server Profiler» пробовать отследить проблемные запросы к базе для возможности их оптимизации. Следующий этап – это проанализировать зависит ли замедление от пользователя, админ\не админ (играют ли роль права доступа). На скорость работы (время отклика системы), также, может влиять количество колонок, которые отображаются в реестре записей (желательно лишние спрятать), наличие сортировки по каким-то из полей реестра (убрать сортировку можно зажав Ctrl и кликнув по полю).
Со временем может быть нарушена структура индексов базы данных (создаются для ускорения выборки данных). Их можно перестроить при помощи скрипта Reindex.rar (во вложении). Рекомендации по выполнению скрипта – во вложении. После выполнения скрипта создаётся хранимая процедура «sp_reindex_all_tables». Её нужно запустить на выполнение. В зависимости от количества индексов, размера базы данных и ресурсов сервера выполнение данной процедуры может занять достаточно продолжительное время при этом нагружая сервер. В связи с этим, если вы будете пересоздавать индексы, рекомендую запускать процесс, когда пользователи не работают с системой. Перед этим обязательно создайте резервную копию базы данных.
Если у вас есть проектные решения стоит обратить внимание и на этот момент. Возможно есть нюансы реализации дополнительной логики.
Здравствуйте, Алла!
Спасибо за ответ!
От пользователя не зависит и у админа и у менеджеров база зависает при попытке отобразить описание на конкретных клиентах, причем зависает безвозвратно.
Реиндексацию делали - не помогло, попробуем еще раз.
Появилась идея удалить последнюю запись обновления из Журнала изменений, но не знаем как это сделать.
"Пушкарев Алексей" написал:Реиндексацию делали
Реиндексация для оживления описания это забавный шаг :) поле blob как бы не индексируют, и смысла ускорять реиндексацией его чтение ноль
Просто sql запрос на сервере select * from tbl_Account where Name = 'Как_там_называется_проблемный_клиент' работает?
Если работает - как, время профайлером гляньте, долго-долго?
Сегодня сделали поиск проблемных клиентов с изменениями за последние 3 месяца. все клиенты одного менеджера причем последняя дата изменения у всех после перевода менеджера с Windows 7 на 8 версию. И ошибки лишь на 8 контрагентах, но так как они периодически становятся первыми в общем списке и у всех по умолчанию открыта деталь описание то страдают все.
Наверное пока не стоит связывать переход пользователя с Windows 7 на Windows 8.
Из Вашего сообщения сделал выводы, что на детали [Описание] хранится много информации, где размер поля может превышать более 10 мб. В таком случае рекомендую изменить логику работы приложения, а именно:
- Использовать FILESTREAM
- Использовать таблицы FileTable
- Создать новую деталь, где будет использоваться RTF файл, который размещается на файловой системе