SQLite数据库模型介绍_youngters的博客-程序员宅基地

技术标签: cache  sqlite  服务器  collation  api  数据库  

    sqlite是一种单文档的数据库,不需要服务器的支持,可以嵌入到程序中。sqlite提供基本的C API,支持多种语言扩展Perl、Python和Java等,支持多平台Windows、Mac、POSIX接口的平台。此外,sqlite是开源、自由和免费,可自由地用于商业用途。




    sqlite支持最大数据库大小2TB,但是,其更适用于几十GB;其中,100G大小的数据库在进行事务操作时,需要月25MB的内存;

    sqlite默认是多线程安全的;

    sqlite默认是只增大,不减小的;这是为了减低page cache的碎片化;需要主动运行"vacuum",在创建数据库时,可以设定自动清空模式"pragma auto_cacuum=1";

    sqlite配置:默认的page size = 1KB, max size=2000;对于windows系统,可以"pragma page_size=4096,提高大数据存取性能;而且,每个connection对应一个b-tree和page cache;

    c core api:基本API,sqlite3_prepare(编译),sqlite3_step(执行),sqlite3_finalize(清空),还有一些辅助函数sqlite3_bind_xxx,sqlite3_collumn_xxx;封装的API,sqlite3_exec,进一步封装sqlite3_get_table;




    c extent api:各种用户自定义函数,sqlite3_create_function,sqlite3_create_aggregate,sqlite3_create_collation;

    sqlite每个connection对应一种状态: unlocked -> pending -> shared -> reserved -> pending -> exclusive;其中,每个数据库只能对应一个pending、reserved和exclusive状态,它们对应写入操作;而shared对应读取操作;

    用户需要处理多个线程、多个连接之间的存取,导致数据库锁死和忙的问题(sqlite_busy);相应的事务注册函数,sqlite3_busy_handler,sqlite3_busy_timeout;sqlite3_commit_hook,sqlite3_update_hook,sqlite3_set_authorize,log_sql;




    sqlite数据库有两种模式: shared cache mode和isolation mode;其中,shared cache mode 对应多个客户线程与一个服务器线程交互,服务器线程可以对不同的表同时进行读写操作;而isolation mode则是标准的事务模式。



版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/youngters/article/details/7364888

智能推荐

java并发编程实践学习(四)对象的发布和逸出之this逃逸_likaistart的博客-程序员宅基地

原文来源: https://blog.csdn.net/aitangyong/article/details/25122741《java并发编程实践》的第三章,对象的发布和逸出,作者提到了2种常见的对象逸出情况:在构造函数中注册事件监听,在构造函数中启动新线程。示例代码如下:public class ThisEscape { public ThisEscape(EventSourc...

UITextView,UIWebView 直接显示html代码_weixin_30606461的博客-程序员宅基地

////获取html到NSStringNSURL *url = [NSURLURLWithString:@"http://www.xtox.net/product/detail.action?product.id=11"];NSString *strHtml = [NSStringstringWithContentsOfURL:url encoding:NSUT...

用bios中断在屏幕上显示字符串_fxnfk的博客-程序员宅基地

bximage //bochs的工具,用于生成软盘影像

React Native的Navigator详解_barnett_y的博客-程序员宅基地

前言除了极少数特殊设计的App,导航都是一个App重要组成的部分。导航栏能够维护一个导航堆栈,能够让用户清楚的知道自己当前所处的页面和返回的页面。在React Native中,官方推荐使用Navigator,因为这个能够在iOS和安卓中通用,不过在现在(2016年5月18日),Navigator 性能较差。所以,对iOS应用,往往可以使用NavigatorIOS,你将获得系

IceGrid 服务初次搭建【Java】_骑在木马上的黑客的博客-程序员宅基地

1.编写ice接口 module Demo { interface Printer { void printString(string s); }; }; 2.实现接口类 package Demo; import org.apache.log4j.Logger...

q_weixin_30606669的博客-程序员宅基地

Q小明现在有一个\(N\)个点的树, 每条边的长度有一个边权, 现在定义\(dis(i,j)\)代表第\(i\)个点到第\(j\)个点的距离模\(2\)之后的结果。 问有多少\((i,j,k)\)满足\(dis(i,j)=dis(i,k)=dis(j,k)\)先搞一搞\(dfs\)求出每一个点到达其他点的距离,然后统计从点\(u\)出发到达其他点的路径中长度为\(0\)的有多少,长度为\...

随便推点

bootstrap bs_pagination_我们都一样w的博客-程序员宅基地

Options$("#element_id").bs_pagination({ currentPage: 1, rowsPerPage: 10, maxRowsPerPage: 100, totalPages: 100, totalRows: 0, visiblePageLinks: 5, showGoToPage: true, showRowsPerPage: true,

android 自动更新(适配6.0-9.0)_wangluoyang的博客-程序员宅基地_android6.0自动更新

使用GitHub开源的项目AppUpdate使用文档也写的非常清楚1.设置Gradle 依赖dependencies { compile 'com.qianwen:update-app:3.5.2'}2.设置get方式请求服务器获取是否更新的JSON数据,返回的数据格式参加开源项目的使用文档3.在需要app调用更新的时候引用下面代码并且更新下载new Upda...

shell>关于参数和变量的使用,调用其他文件(shell脚本、.ini文件)中的变量_arize的博客-程序员宅基地

调用其他shell中的变量../other.sh #第一种方法source ./subscript.sh #第二种方法调用.ini文件中的变量参考【CSDN—从ini文件中读取参数】【Shell中要如何调用别的shell脚本,或别的脚本中的变量,函数】...

汉字截取类_diangeng8874的博客-程序员宅基地

现在决定在博客园安家了,所以把CSDN上以前写的一些代码和相关的感想搬到这里。这个类是在一个项目中要用的一个功能,就是把活跃的100个博主的博客名称按照英文A-Z排列。因为不用用户注册的博客名有汉字有英文,所以写了这么一个类。该功能类的代码如下:1usingSystem;2usingSystem.Collections.Generic;3usingSys...

Linux目录结构_JasonYoung的博客-程序员宅基地_linux 目录行意思

本文内容整理自网络,以作参考。/:根目录,位于linux文件系统目录结构的顶层,一般根目录下只存放目录,不要存放文件,/etc、/bin、/dev、/lib、/sbin应该和根目录放置在一个分区中。/bin,/usr/bin:该目录为命令文件目录,也称为二进制目录。包含了供系统管理员及普通用户使用的重要的linux命令和二进制(可执行)文件,包含shell解释器等。

jQuery中的post()方法_信徒。。。的博客-程序员宅基地_jq post

jQuery中的post()方法开发工具与关键技术:Microsoft Visual Studio,jQuery知识作者:张智鹏撰写时间:2020 年 8 月 17 日在 jQuery 中,get() 方法和 post() 方法都是通过 HTTP GET 或 POST 请求从服务器请求数据的,但两者又有很多的不同之处,例如:1、Post 是用于向服务器上传递数据的2、Post 是将表单中的数据放在 form 中,按照键值对的方式传递到 action 所指向 URL 中3、Post 的所有操作对

推荐文章

热门文章

相关标签