0
我正在使用ADO(C++)连接到数据库,我正在读取一个大约5m记录的表,并且我想限制客户端上的内存使用情况。目前,遍历记录会导致进程内存增加1GB,并且我希望显着减少这些内存。限制ADO记录集的内存使用情况
的代码是非常标准的C++ ADO(编辑的可读性):
ADODB::_ConnectionPtr m_pConnection;
m_pConnection.CreateInstance(__uuidof(ADODB::Connection));
m_pConnection->Open(_bstr_t(strConnect), m_strDBUserName, m_strDBPassword, -1);
ADODB::_RecordsetPtr pRecordSet;
pRecordSet.CreateInstance(__uuidof(ADODB::Recordset));
pRecordSet->putref_ActiveConnection(pConnection);
pRecordSet->Open(_variant_t(bstrQuery), vNull, ADODB::adOpenForwardOnly, ADODB::adLockOptimistic, ADODB::adCmdText);
pRecordSet->MoveFirst();
while(!pRecordSet->EOF)
{
CString cardNum = (LPCWSTR)(pRecordSet->Fields->GetItem("CARD_NUM")->Value.bstrVal);
int nSeqNum = pRecordSet->Fields->GetItem("SEQ_NUM")->Value.intVal;
// process data
pRecordSet->MoveNext();
}
我观察的是,因为它通过记录遍历线,内存使用量的增加,每百万条记录约200MB。
我想要做的是:while,处理,告诉记录集以释放已处理记录的内存,以便内存使用率保持较低。有没有这样做的功能?
如果不是,我可以采取手动的方法来分区数据与多个记录集,释放他们,因为我去?