我在C++窗口中使用sqlite,并且我有一个大约60M的db大小,当我打开sqlite数据库时,大约需要13秒。SQLite DB的开放时间真的很长
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的开放过程。
尝试用SQLite的命令行工具(sqlite3.exe)打开数据库,看看它是否也需要这么长时间。 – Unknown 2010-06-12 12:35:33