草庐IT

TRANSACTIONS

全部标签

iphone - 我应该相信 SQLite 事务以避免文件损坏吗?

精简版如果我的进程在事务中间终止,或者在SQLite提交事务时终止,数据库文件损坏的可能性有多大?长版我的应用程序使用SQLite数据库进行存储(直接,而不是通过CoreData)。我正在开发一个新版本的应用程序,它需要更新数据库架构。启动时,该应用程序将检查数据库,如果需要更新,则执行一系列SQL语句来执行此操作。根据数据库中的数据量,更新可能会长时间运行(以秒为单位),因此我需要考虑在更新完成之前进程可能终止的可能性。(对于上下文,这是在iPhone上,处理器速度很慢,应用程序可能会因来电而终止。)当然,我会将升级SQL语句包装在一个事务中。这是否足以保证数据库不会损坏?我假设交易

iphone - 我应该相信 SQLite 事务以避免文件损坏吗?

精简版如果我的进程在事务中间终止,或者在SQLite提交事务时终止,数据库文件损坏的可能性有多大?长版我的应用程序使用SQLite数据库进行存储(直接,而不是通过CoreData)。我正在开发一个新版本的应用程序,它需要更新数据库架构。启动时,该应用程序将检查数据库,如果需要更新,则执行一系列SQL语句来执行此操作。根据数据库中的数据量,更新可能会长时间运行(以秒为单位),因此我需要考虑在更新完成之前进程可能终止的可能性。(对于上下文,这是在iPhone上,处理器速度很慢,应用程序可能会因来电而终止。)当然,我会将升级SQL语句包装在一个事务中。这是否足以保证数据库不会损坏?我假设交易

python - 为什么 SQLite3 不需要调用 commit() 来保存数据?

我在某处读到,要在Python中将数据保存到SQLite3数据库,应该调用连接对象的方法commit。然而我从来不需要这样做。为什么? 最佳答案 这意味着您的SQLite3数据库驱动程序以自动提交模式运行。提交模式一个databasetransaction是恢复单位。在交易中databaseengines,所有SQL语句都在一个数据库事务中执行。当SQL语句未包含在一对start-transaction(BEGIN或SAVEPOINT)和end-transaction(COMMIT、ROLLBACK或RELEASE)SQL语句,它在

python - 为什么 SQLite3 不需要调用 commit() 来保存数据?

我在某处读到,要在Python中将数据保存到SQLite3数据库,应该调用连接对象的方法commit。然而我从来不需要这样做。为什么? 最佳答案 这意味着您的SQLite3数据库驱动程序以自动提交模式运行。提交模式一个databasetransaction是恢复单位。在交易中databaseengines,所有SQL语句都在一个数据库事务中执行。当SQL语句未包含在一对start-transaction(BEGIN或SAVEPOINT)和end-transaction(COMMIT、ROLLBACK或RELEASE)SQL语句,它在

android - 如何在 Android 中使用 SQLite 获得最佳性能?

我注意到有多种方法可以执行SQLite操作(查询、插入、更新、删除),有些方法可能比其他方法更快。许多网站提供不同的提示,并且有些与其他网站冲突。似乎使用事务进行批量插入比在循环中这样做要快一些。怎么会?使用SQLite时获得最佳性能的最佳方法是什么?sqlite在Android上如何运行?混淆使用InserHelper对比ContentValues,如图here.如何InserHelper工作,它会永远比ContentValues快吗??将其与事务包装在一起会进一步加快速度吗?对其他SQL框架的混淆。我记得添加索引会提高与索引相关的查询的性能。Android也是如此吗?这是一种好的做

android - 如何在 Android 中使用 SQLite 获得最佳性能?

我注意到有多种方法可以执行SQLite操作(查询、插入、更新、删除),有些方法可能比其他方法更快。许多网站提供不同的提示,并且有些与其他网站冲突。似乎使用事务进行批量插入比在循环中这样做要快一些。怎么会?使用SQLite时获得最佳性能的最佳方法是什么?sqlite在Android上如何运行?混淆使用InserHelper对比ContentValues,如图here.如何InserHelper工作,它会永远比ContentValues快吗??将其与事务包装在一起会进一步加快速度吗?对其他SQL框架的混淆。我记得添加索引会提高与索引相关的查询的性能。Android也是如此吗?这是一种好的做

sqlite - 在 SQLite 的一个事务中可以完成多少次插入?

我正在尝试将大量记录(数百万)插入到SQLite数据库中。从文件流(C++)中读取数据。如果我开始单个事务,执行所有插入,然后提交该事务,我实际上只得到很小一部分记录插入到我的数据库中。插入的那些看起来是随机的——我真的看不出有什么模式可以插入,哪些被遗漏。但是,如果我提交并在大约2000次插入之后再次开始事务,我就没有这个问题并且所有的记录都被插入,即使这个过程慢得多。。所以……在一个事务中可以完成多少插入有严格的限制吗?有没有办法改变这个限制? 最佳答案 我能够毫无问题地在单个事务中插入1000万行。我的猜测:您在单个语句中插入

sqlite - 在 SQLite 的一个事务中可以完成多少次插入?

我正在尝试将大量记录(数百万)插入到SQLite数据库中。从文件流(C++)中读取数据。如果我开始单个事务,执行所有插入,然后提交该事务,我实际上只得到很小一部分记录插入到我的数据库中。插入的那些看起来是随机的——我真的看不出有什么模式可以插入,哪些被遗漏。但是,如果我提交并在大约2000次插入之后再次开始事务,我就没有这个问题并且所有的记录都被插入,即使这个过程慢得多。。所以……在一个事务中可以完成多少插入有严格的限制吗?有没有办法改变这个限制? 最佳答案 我能够毫无问题地在单个事务中插入1000万行。我的猜测:您在单个语句中插入

Android - 何时调用 db.setTransactionSuccessful()?

我见过的AndroidSQLite事务代码示例似乎会在db.endTransaction()之前自动调用db.setTransactionSuccessful()。我想知道这是否真的是最佳实践,或者在调用db.setTransactionSuccessful()之前是否应该进行一些条件检查。在我的例子中,我重写了ContentProvider的bulkInsert()方法,如果我使用描述的条件检查,我的方法将如下所示......@OverridepublicintbulkInsert(Uriuri,ContentValues[]valuesArray){//Openaread/writ

Android - 何时调用 db.setTransactionSuccessful()?

我见过的AndroidSQLite事务代码示例似乎会在db.endTransaction()之前自动调用db.setTransactionSuccessful()。我想知道这是否真的是最佳实践,或者在调用db.setTransactionSuccessful()之前是否应该进行一些条件检查。在我的例子中,我重写了ContentProvider的bulkInsert()方法,如果我使用描述的条件检查,我的方法将如下所示......@OverridepublicintbulkInsert(Uriuri,ContentValues[]valuesArray){//Openaread/writ