我在 c++ windows 中使用 sqlite,我的数据库大小约为 60M,当我打开 sqlite 数据库时,大约需要 13 秒。
sqlite3* mpDB;
nRet = sqlite3_open16(szFile, &mpDB);
如果我关闭了我的应用程序并重新打开它。它只用了不到 1 秒。
首先,我认为是因为磁盘缓存。所以我在sqlite打开前预加载了60M的db文件,使用CFile读取文件,但是预加载后,第一次还是很慢。
BOOL CQFilePro::PreLoad(const CString& strPath)
{
boost::shared_array<BYTE> temp = boost::shared_array<BYTE>(new BYTE[PRE_LOAD_BUFFER_LENGTH]);
int nReadLength;
try
{
CFile file;
if (file.Open(strPath, CFile::modeRead) == FALSE)
{
return FALSE;
}
do
{
nReadLength = file.Read(temp.get(), PRE_LOAD_BUFFER_LENGTH);
} while (nReadLength == PRE_LOAD_BUFFER_LENGTH);
file.Close();
}
catch(...)
{
}
return TRUE;
}
我的问题是第一次打开和第二次打开有什么区别。如何加速 sqlite 开放进程。