PostgreSQL 9.1 NPGSQL 2.0.12
У меня есть двоичные данные, которые я хочу сохранить в базе данных postgresql. Большинство файлов загружаются нормально, однако большой двоичный файл (664 Мб) вызывает проблемы. При попытке загрузить файл в postgresql с использованием поддержки больших объектов через Npgsql сервер postgresql возвращает ошибку «недостаточно памяти».
В настоящее время я запускаю это на рабочей станции с 4 ГБ ОЗУ, из которых 2 ГБ свободно, а postgresql работает в режиме ожидания.
Это код, который я использую, адаптированный из Руководство пользователя PG Foundry Npgsql .
using (var transaction = connection.BeginTransaction())
{
try
{
var manager = new NpgsqlTypes.LargeObjectManager(connection);
var noid = manager.Create(NpgsqlTypes.LargeObjectManager.READWRITE);
var lo = manager.Open(noid, NpgsqlTypes.LargeObjectManager.READWRITE);
lo.Write(BinaryData);
lo.Close();
transaction.Commit();
return noid;
}
catch
{
transaction.Rollback();
throw;
}
}
Я попытался изменить настройки памяти postgresql со значений по умолчанию на всевозможные настройки значений:
- общие_буферы
- work_mem
- Maintenance_work_mem
До сих пор я находил postgresql отличной системой баз данных, но в настоящее время это не работает, и я не могу поместить файл такого размера в базу данных. Я действительно не хочу иметь дело с ручным разрезанием файла на куски и воссозданием клиентской части, если я могу помочь.
Пожалуйста помоги!?