У меня есть Realm db, который записывается асинхронно, и размер файла, по-видимому, растет экспоненциально во время начальной загрузки из Rest API. Он продолжает расти после того, как я закончил писать на нем, превысив 1,5 ГБ.Минимизация Realm Размер файла: Практический подход
Использование базовых данных writeCopyToPath
составляет 1,5 Мб.
Ниже моя команда вставки:
dispatch_async(dispatch_queue_create("background", nil)) {
let realm = try! Realm()
let this_activity = DataManager().getExerciseById(activity_id)
if this_activity != nil {
for (_, subJson) in data_ball["mapPoints"] {
let map_point = MapPoint(this_activity:this_activity!, json: subJson)
try! realm.write {
realm.add(map_point)
}
}
}
Чтобы запросить у меня есть менеджер данных, который инстанцированный каждый ViewController (но не держался после того, как возвращается с данными). У Data Manager есть такие методы запроса:
func getSegments(activity_id:String) -> [Dictionary<String, AnyObject>]{
var intervals:[Dictionary<String, AnyObject>] = []
let realm = try! Realm()
let predicate = NSPredicate(format: "id == %@", activity_id)
let intervals = realm.objects(Segment).filter(predicate).sorted("startTime", ascending: true)
for interval in intervals {
intervals.append(interval.toDictionary())
}
return intervals
}
Эти запросы и операции вставки могут происходить в течение того же периода времени. Какие стратегии следует использовать, чтобы не допустить его роста?
Какие темы выполняются в ваших вставках? – bdash
Я начинаю новый поток, используя 'dispatch_async (dispatch_queue_create (" background ", nil)) {' должен ли я просто удалить это? – John
Можете ли вы попробовать добавить пул автозаполнения по всему коду в блоке, который вы передаете 'dispatch_async'? – bdash