私はc++ウィンドウでsqliteを使用していますが、dbサイズは約60Mです。sqlitedbを開くと、約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のオープンプロセスを加速できますか。