Я пытаюсь сохранить файлы в базе данных сервера SQL, используя тип столбца filestream и nHibernate.
Кажется, что это работает, но это ОЧЕНЬ медленно, я попытался изменить это на обычный столбец varbinary (max), и это не имеет никакого эффекта.
Тестирование на локальном сайте с использованием локальной базы данных ... сохранение файла ~ 100 КБ занимает около 5-10 секунд, сохранение файла ~ 5 МБ занимает 20-30 минут.
Глядя на профилировщики SQL, кажется, что nHibernate так долго выталкивает оператор вставки, а не проблему с БД.
При попытке выполнить фиксацию он загружает около 80 МБ памяти, но процессор не загружается, он просто сидит там.
Кто-нибудь сталкивался с этим раньше или имеет какие-либо идеи, прежде чем я отлаживаю в исходный код nHibernate?
Вот моя конфигурация ...
public class ProgramDocument : IDocumentFile
{
public virtual int ProgramDocumentId { get; set; }
public virtual Program Program { get; set; }
public virtual byte[] DocumentData { get; set; }
public virtual ProgramDocumentationType DocumentType { get; set; }
public virtual string MimeType { get; set; }
public virtual string FileExtension { get; set; }
public virtual ProgramPresenter ProgramPresenter { get; set; }
public virtual DateTime CreateDate { get; set; }
}
public class ProgramDocumentOverride : IAutoMappingOverride<ProgramDocument>
{
public void Override(AutoMapping<ProgramDocument> mapping)
{
mapping.Map(_ => _.DocumentData).Length(int.MaxValue).LazyLoad();
}
}
* +1015 * Спасибо,
Брайан В.