데이터베이스의 데이터를 dataTable로 가져 오려고하고 있으며 레코드 수는 약 600 만입니다. 우리는 DataTable에 제한을 아시는 바와 같이 16777216DataTable은 메모리가 2.5M 만 남았습니다.
참조입니다 : http://msdn.microsoft.com/en-us/library/system.data.datatable.aspx
하지만 내 데이터 테이블은 250 만 기록에 메모리 부족 간다. 왜 그런지 몰라?
public DataTable Func(int totalRecords)
{
SqlDependency.Start(ConfigurationManager.AppSettings["ConnectionString"].ToString());
DataTable dt = new DataTable();
SqlDataAdapter sda = new SqlDataAdapter();
sda.SelectCommand = new SqlCommand();
sda.SelectCommand.CommandText = "SP_NAME";
sda.SelectCommand.Transaction = sqlTrans;
sda.SelectCommand.Connection = this.connection;
sda.SelectCommand.CommandType = CommandType.StoredProcedure;
SqlCacheDependency dependency = new SqlCacheDependency(sda.SelectCommand);
if (connection.State == ConnectionState.Closed)
connection.Open();
dt.Load(sda.SelectCommand.ExecuteReader(CommandBehavior.CloseConnection));
return dt;
}
그럼 그냥 이론적 인 최대는 반드시 테이블의 모든 데이터를 저장하기에 충분한 메모리가 의미하는 것은 아니다. 각 행에 무엇이 있습니까? 같은 시간에 모든 데이터를 메모리에로드해야합니까? (매우 작은 테이블을 처리하는 좋은 방법은 거의 없습니다.) –
각 행에는 7 개의 열이 있습니다. – Haider
그건 우리에게별로 알려주지 않습니다 ... 각 열은 단지 정수 또는 엄청난 양의 텍스트 일 수 있습니다 ... 다시 한 번 모든 데이터를로드하지 않아도되도록 노력할 것입니다. 와. –