Я использовал SQLCipher для шифрования базы данных sqlite в своем приложении. Все в порядке, но мое приложение работает медленно во время извлечения базы данных. Я изменил PRAGMA kdf_iter до 4000, и он все еще медленный. Перед шифрованием у меня нет никаких проблем.Как оптимизировать производительность SQLcipher?
-(NSError *) openDatabase {
NSError *error = nil;
NSString *databasePath = [self getDatabasePath];
const char *dbpath = [databasePath UTF8String];
int result = sqlite3_open_v2 (dbpath, &db , SQLITE_OPEN_READWRITE , NULL);
if (result == SQLITE_OK) {
sqlite3_exec(db, [@"PRAGMA kdf_iter = '4000';" UTF8String], NULL, NULL, NULL);
sqlite3_exec(db, [@"PRAGMA key = 'password'" UTF8String], NULL, NULL, NULL);
NSLog(@"Password is correct , Database is Activated");
sqlite3_exec(db, [@"PRAGMA cipher = 'aes-256-cfb';" UTF8String], NULL, NULL, NULL);
}
else {
NSLog(@"Incorrect password!");
}
if (result != SQLITE_OK) {
const char *errorMsg = sqlite3_errmsg(db);
NSString *errorStr = [NSString stringWithFormat:@"The database could not be opened: %@",[NSString stringWithCString:errorMsg encoding:NSUTF8StringEncoding]];
error = [self createDBErrorWithDescription:errorStr andCode:kDBFailAtOpen];
}
return error;
}
Здравствуйте, zaph, я изменил режим только для проверки. Ты прав! но он все еще медленный, даже без режима CFB. – iSibDev
Является ли доступ db медленным без шифрования? Является ли db большим? – zaph
нет. db отлично поработал без какого-либо отставания до шифрования. Таблица моего db содержит строку около 2000. – iSibDev