Основной причиной использования транзакций является сокращение накладных расходов на запись на диск.
Таким образом, если вы не включите в транзакцию несколько изменений (вставок, удалений и обновлений), то каждое из них приведет к записи базы данных на диск и сопутствующим накладным расходам.
Если вы заключите их в транзакцию, а версия в памяти будет записана только после завершения транзакции (обратите внимание, что при использовании SQLiteDatabase beginTransaction / endTransaction Методы , которые вы должны в рамках завершения транзакции использовать метод setTransactionSuccessful , а затем использовать метод endTransaction ).
То есть метод SQLiteDatabase отличается от выполнения этого с помощью чистого SQL, когда вы начинаете транзакцию, а затем завершаете / фиксируете ее / их (т.е. методы SQLiteDatabase в противном случае автоматически откатывали бы транзакции).
Сказав это утверждение: -
если вы не заключите вызовы SQLite в явную транзакцию, это
создать неявную транзакцию для вас. Следствием этих
неявные транзакции - это потеря скорости
в основном повторяет: -
Любая команда, которая изменяет базу данных (в основном, любая команда SQL
кроме SELECT) автоматически начнет транзакцию, если
еще не в силе. Автоматически запущенные транзакции
фиксируется после завершения последнего запроса.
SQL как понял SQLite - НАЧАЛО СДЕЛКИ То есть он не специфичен для Android.
это звучит как эффективный способ сделать что-то или это будет
лучше обернуть каждую отдельную табличную операцию в свою собственную транзакцию?
Выполнение всех операций в одной транзакции будет более эффективным, поскольку выполняется только одна операция записи на диск.
мне не ясно, что происходит с моим ТАБЛИЦЕЙ DROP TABLE / CREATE TEMP
звонки. Если я в конечном итоге с временными таблицами h1 [h2], которые предварительно заполнены
данные из таблицы (n - 1) при работе с таблицей (n) затем
обновления в Таблице (n) пойдут совсем не так. Я предполагаю, что
DROP TABLE немного, я имею дело с этой проблемой. Я прав в
предполагая это?
Удаление таблиц обеспечит целостность данных (т. Е. Вы должны, по звуку этого, сделать это), вы также можете использовать: -
CREATE TEMP TABLE IF NOT EXISTS h1(v1 TEXT,v2 TEXT,v3 TEXT,v4 TEXT,v5 TEXT);
DELETE FROM h1;