PostgreSQL的9.1 2.0.12 Npgsql的插入大對象移植到PostgreSQL返回53200內存不足的錯誤
我有二進制數據,我想在PostgreSQL數據庫來存儲。大多數文件加載正常,但是,一個大的二進制文件(664 Mb)導致問題。當試圖通過Npgsql使用大對象支持將文件加載到postgresql時,postgresql服務器返回'內存不足'錯誤。
我正在使用4Gb RAM的工作站上運行此操作,其中2Gb免費,Postgresql在空閒狀態下運行。
這是我使用的代碼,改編自PG Foundry Npgsql User's Manual。
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的內存設置到值調整的所有方式:
- 的shared_buffers
- work_mem
- maintenance_work_mem
到目前爲止我發現postgresql是一個偉大的數據庫系統,但這是目前的展示瓶塞,我不能似乎將這個大小的文件放入數據庫中。我真的不想處理手動將文件分塊,並重新創建客戶端,如果我可以幫助它。
請幫忙!?
減少的max_connections = 4(postgresql不會以少於此數開始)。不用找了。增加shared_buffers = 1000MB(postgresql不會以比此更高的開始)。不用找了。這些數據存儲文件(二進制數據)。有一個特別大的文件,我試圖存儲。 – Jayden