SQLite busy handler】的更多相关文章

SQLite doesn't support high concurrency. In case of a lot of concurrent access from multi-process or multi-thread, calling a SQLite r/w function is prone to hit the case that the database is locked by another process or thread. The default behavior i…
本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57b58022433221be01499480 作者:张三华 前言 随着微信iOS客户端业务的增长,在数据库上遇到的性能瓶颈也逐渐凸显.在微信的卡顿监控系统上,数据库相关的卡顿不断上升.而在用户侧也逐渐能感知到这种卡顿,尤其是有大量群聊.联系人和消息收发的重度用户. 我们在对SQLite进行优化的过程中发现,靠单纯地修改SQLite的参数配置,已经不能彻底解决问题.因此从6.3…
API 分为两大类 core API. 基本的SQL操作 extension API. 创建自定义的SQL操作. 基本数据结构 需要了解的组成部分有连接.statments.B树.pager. 为了写好SQLite代码,需要了解的基本概念,API.事务和锁. 连接和statments 这两种数据结构和查询语句的基础.一个连接表示对数据库的一个连接,也是一个事务上下文.statments由这些连接产生.statments在内部由VDBE字节码表示. B-tree and pager 每个数据库连接…
先从全局的角度把握SQLite内核各个模块的设计和功能.SQLite采用了层次化.模块化的设计,而这些使得它的可扩展性和可移植性非常强.而且SQLite的架构与通用DBMS的结构差别不是很大,所以它对于理解通用DBMS具有重要意义.SQLite的内核总的来说分为三个部分,虚拟机(Virtual Machine).Back-end(后端)和compiler(编译器). 1.虚拟机(Virtual Machine)VDBE是SQLite的核心,它的上层模块和下层模块本质上都是为它服务的.它的实现位于…
写在前面:本节是前一节内容的后续部分,这两节都是从全局的角度SQLite内核各个模块的设计和功能.只有从全局上把握SQLite,才会更容易的理解SQLite的实现.SQLite采用了层次化,模块化的设计,而这些使得它的可扩展性和可移植性非常强.而且SQLite的架构与通用DBMS的结构差别不是很大,所以它对于理解通用DBMS具有重要意义.好了,下面我们开始讨论SQLite剩余的两部分:Back-end(后端)和compiler(编译器). 2.B-tree和PagerB-Tree使得VDBE可以…
这两天在项目中用大强度大频率的方法测试时遇到sqlite报database is locked的问题,分析下来原因是sqlite对数据库做修改操作时会做(文件)锁使得其它进程同一时间使用时会报该错误(也就是SQLITE_BUSY),但如果仅是多进程或多线程查询sqlite是支持的.(也有可能是做sql开启事务查询等发生异常,数据库没有关闭,然后再去打开就锁定了)解决方法有:1.使用进程或线程间的同步机制以避免同时操作:如用信号量,互斥锁等(pthread_mutex_lock,pthread_m…
[原]FMDB源码阅读(一) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 说实话,之前的SDWebImage和AFNetworking这两个组件我还是使用过的,但是对于FMDB组件我是一点都没用过.好在FMDB源码中的main.m文件提供了大量的示例,况且网上也有很多最佳实践的例子,我就不在这献丑了.我们先从一个最简单的FMDB的例子开始: // 找到用户目录下的Documents文件夹位置 NSString* docsdir = [NSSearchPathFor…
上一篇博客讲述SQLite的使用,本篇将讲述FMDB源码,后面也会讲解SQLite在使用与FMDB的区别.本篇读下来大约20-30分钟,建议大家先收藏一下. FMDB是以OC方式封装SQLite中C语言的API,也是iOS中SQLite数据库的框架,在目前研发项目中使用的也是比较广泛的.下面直入正题 一.FMDB源码结构 首先我们来看一下FMDB的源码的结构与组成,如下图: 我们可以从结构上看出FMDB在共有5个文件组成,其中FMDB.h用于管理其他5个文件,下面分别讲述5个文件的用处 (1)F…
http://www.sqlite.org/c3ref/busy_handler.html留着自己看的. Register A Callback To Handle SQLITE_BUSY Errors 注册一个回调函数处理SQLITE_BUSY错误 int sqlite3_busy_handler(sqlite3*, int(*)(void*,int), void*); This routine sets a callback function that might be invoked wh…
API客户端异常错误的发生通常是由于不正确的方法参数,对象状态依赖,或网络条件. //*******推荐使用方法,按下Ctrl+F搜索错误代码,再查看与代码对应的解释.********// ArcGIS弹出错误 11000 Invalid attributes or geometry on the associated GeoElement. 11001 Null value is not allowed. 11002 Value is out of range. 11003 Value exc…
写在前面: 又到一年一度七夕虐狗节,看着大家忍受着各种朋友圈和QQ空间还有现实生活中的轮番轰炸,我实在不忍心再在这里给大家补刀,所以我觉得今天不虐狗,继续给大家分享有用的. 如果你比较关心android开发的最新动态的话,我想你一定知道android数据库新王者,没错,就是这个东西——Realm. 在安卓开发中,我们有sharedPreference和文件操作,当然还有一直为之自豪的轻量级数据库sqlite. SharedPreference其实是采用xml的方式,以键值对形式存储基本数据类型的…
前言 事务处理是DBMS中最关键的技术,对SQLite也一样,它涉及到并发控制,以及故障恢复等等.在数据库中使用事务可以保证数据的统一和完整性,同时也可以提高效率.假设需要在一张表内一次插入20个人的名字才算是操作成功,那么在不使用事务的情况下,如果插入过程中出现异常或者在插入过程中出现一些其他数据库操作的话,就很有可能影响了操作的完整性.所以事务可以很好地解决这样的情况,首先事务是可以把启动事务过程中的所有操作视为事务的过程.等到所有过程执行完毕后,我们可以根据操作是否成功来决定事务是否进行提…
About SQLite See Also... Features When to use SQLite Frequently Asked Questions Well-known Users Books About SQLite Getting Started SQL Syntax Pragmas SQL functions Date & time functions Aggregate functions C/C++ Interface Spec Introduction List of C…
传送门:Android+Sqlite 实现古诗阅读应用(一) Hi,又回来了,最近接到很多热情洋溢的小伙伴们的来信,吼开心哈,我会继续努力的=-=! 上回的东西我们做到了有个textview能随机选择诗来进行显示,这也是我做这个东西的初衷,我想找我到底有哪些古诗没有读过,更想感受一下风吹哪页看哪页的闲适(扯远了=-=!),所以功能现在差不多算是结束了, 不过一个古诗应用这么丑可不行,还有就是,我找到了我要的诗我也得能收藏啊,要是下次忘了可怎么办啊,所以这里面还有一些知识点,我们能从接下来的功能中…
1.通过官方的SQLite架构文档,理清大体的系统层次:Architecture of SQLite 2.阅读SQLite Documentation中Technical/Design Documentation章节(根据所在层次阅读代码,对应章节描述进行理解.) 应用层角度,从API(List Of SQLite Functions)角度切入,掌握API文档中所有参数的使用. 3.下载源码包sqlite-src-*.zip,在其src目录下包含了所有源码文件.注意若要编译SQLite库则下载单…
1.SQLite是一个完全独立的.不需要服务器.不要任何配置.支持SQL的.开源的文件数据库引擎.源代码和支持可以登录:http://www.sqlite.org/   1.1.下载sqlite3.dll和sqlite3.def文件,在下载页下载sqlite-dll-win32-x86-3080803文件 1.2.下载sqlite3.h,在下载页下载sqlite-amalgamation-201503091040文件. 2.代码编译,由于SQLite下载文件中只提供了def文件而没有提供lib文…
07-24 15:03:14.490 6291-6291/com.tongyan.nanjing.subway E/SQLiteDatabase: Failed to open database '/storage/emulated/0/TYSubway/structure/db/TYSubwayInspcetionNJ.db'. android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error(Sqlite code…
项目中有聊天模块,需要用到打开activity的时候初始化聊天记录的情况.大致情况如下: 辅助类:ChatSQLiteHelper   在第一次时会调用oncreate方法(判断的标准是schedule.db里面会存储是否已经新建过,若没有,则会调用onCreate,只会调用一次) package com.example.qurenwu.chat; import android.content.Context; import android.database.sqlite.SQLiteDatab…
1.索引简单的说,索引就像书本的目录,目录可以快速找到所在页数,数据库中索引可以帮助快速找到数据,而不用全表扫描,合适的索引可以大大提高数据库查询的效率.(1). 优点大大加快了数据库检索的速度,包括对单表查询.连表查询.分组查询.排序查询.经常是一到两个数量级的性能提升,且随着数据数量级增长. (2). 缺点索引的创建和维护存在消耗,索引会占用物理空间,且随着数据量的增加而增加.在对数据库进行增删改时需要维护索引,所以会对增删改的性能存在影响. (3). 分类a. 直接创建索引和间接创建索引直…
Version 3.3.6源代码文件结构                                                ——整理:hustcat 2009-2-19 文件名称 大小byte 备注 API部分 main.c 35414 SQLite Library的大部分接口 legacy.c 3734 sqlite3_exec的实现 table.c 5464 the sqlite3_get_table() and sqlite3_free_table()的实现,它们是sqlite…
揭开.NET消息循环的神秘面纱(-) http://hi.baidu.com/sakiwer/item/f17dc33274a04df2a9842866 曾经在Win32平台下奋战的程序员们想必记得,为了弄清楚“消息循环”的概念,度过多少不眠之夜.尽管如今在应用程序代码的编写过程中,我们已经不再需要它,但是深刻理解Windows平台内部的消息流转机制依然必要.. 在早年直接用Win32/Win16 API写程序的时代,消息循环是我们必须搞懂的第一个观念.现在,不管你用是Windows上面的哪一套…
在android系统中使用的是sqlite数据库,前面的简易登录系统已经讲述了数据库的应用.本例的重点是实现数据库与listview的绑定.demo的数据是将个人的信息绑定到listview中,并存在sqlite. 1.person类 public class PersonInfo { public PersonInfo() { } private String name; private int age; public void setNmae(String name) { this.name…
下面是在Android4.0上,利用Sqlite数据库的insert,query,update,delete函数以及execSql,rawQuery函数执行插入,查询,更新,删除操作花费时间的对比结果. 是在执行相同的动作,记录条数也一样的情况下的对比,多次验证的结果是: (1)如果批量执行的记录数在1000条,则Android SqliteDatabase提供的insert,query,update,delete函数和直接写SQL文的execSql,rawQuery的效率差不多,几乎一样.所以…
Android SQLite SQLite一款开源的, 轻量级的数据库. 以文本文件的形式存储数据. SQLite支持所有标准的关系型数据库特性. SQLite运行时占用内存非常少(约250 KByte). 使用简单, 无需安装配置. SQLite数据库存储类型支持TEXT(类似Java中的String), INTEGER(类似Java中的LONG), REAL(类似JAVA中的double).所有其他的类型都在存储前转换成上述类型. 实际上SQLite数据库是无类型检查的. More info…
1.创建SQLite数据库 需要自己创建一个类来继承SQLiteOpenHelper类 SQLiteOpenHelper类是一个创建SQLite数据库的辅助类 继承此类的时候需要重写三个方法 public dbHelper(Context context, String name, CursorFactory factory, int version) { super(context, name, factory, version); //此方法在实例化此辅助类的时候,传入相应的参数便可以自动创…
const int loops = 1000; public void DatabaseThreadSafetyTest() { var backgroundThread = new Thread(new System.Threading.ThreadStart(() => { for (int i = 1; i <= loops; i++) { Console.WriteLine("Background thread loop " + i); using (var db…
版权声明:未经博主允许不得转载 补充 补充上一节,使用ListView是用来显示列表项的,使用ListView需要两个xml文件,一个是列表布局,一个是单个列表项的布局.如我们要在要显示系统所有app列表项时,需要左边appimage视图和右边文本视图. 一个是列表布局 all_app_list.xml <ListView android:id="@android:id/app_list" android:layout_width="match_parent"…
写这篇文章主要是网上的对sqlite的操作太多且太杂,非常多时候都不能非常好的运用到自己的项目中,结构不清晰,我自己写了一篇适合刚刚接触的人看的操作方法. 近来用android时要将一些数据保存起来,一開始用的是preferences,后来要保存的东西多了.发现用preferences明显不能满足要求了,并且发现用这个的话代码就变得有点乱了.所以才開始学习使用sqlite数据库,一開始以为不就是个数据库么,和平时的mysql啊或者是sqlserver都一样.都非常easy的,但后来真正在用的时候…
Latest SQLite binary for January 2015 Well I went through quite a few threads to find an updated, decent sqlite binary. Didn't find any that met that criteria. So I compiled one. Here's SQLite 3.8.7.4 combined into a single source file (the amalgamat…
最近在用python tornado开发一个app的服务端.投产的系统肯定需要包含日志功能,这里就自然想到了用python自带的logging库.   logging中日志内容的输出都交由Handler来实现,但是logging中的自带的Handler都不能满足我们的需求. 我们希望能按时间段分割日志,如果使用FileHandler日志只能保存在一个文件,到后期日志文件会非常大,读写都成问题:而TimedRotatingFileHandler虽然可分割日志但是多进程时可能会造成日志文件被相互覆盖…