SQLite这么娇小可爱,不多了解点都不行啊

来源:互联网 发布:台服网络加速器 编辑:程序博客网 时间:2024/04/29 11:17

在我眼里,MySQL和Oracle是这样的

SQLite,MySQL,Oracle


SQLite,MySQL,Oracle

而SQLite在是这样的

SQLite,MySQL,Oracle

所以这么萌的数据库,我真的应该多了解她的。


简介


1. Zero-Configuration 无需安装和管理配置。

2. Serverless 无需服务器支持。


3. Single Database File 数据文件存储在一个单一的磁盘文件。

4. Stable Cross-Platform Database File 数据库文件格式跨平台,无论是大小端,或者是32bit或64bit机器都没有关系


5. Compact 完整特性的SQLite编译出来在500KiB左右,裁剪特性甚至可以得到低于300KiB的库(当前版本3.8.11.1)。


6. Manifest typing 可以声明数据库字段类型,但是字段存储的类型实际的存储类型和实际值相关,单独的一个字段可能包含不同存储类的值。


7. Variable-length records 可变长度记录,例如你存储一个字符到VARCHAR(100) 的列,实际需要的存储空间一个字符加一个字节的存储空间。


8. SQL statements compile into virtual machine code SQL语句会被编译成虚拟机代码,这种虚拟机代码直白可读,便于调试。


9. Public domain 完全开源。


10. SQL language extensions


主要缺点


SQLite的事务和锁是很重要的概念。



SQLite有三种不同的事务


1. DEFERRED(推迟)


2. MMEDIATE(立即)


3. EXCLUSIVE(排它)


事务类型在BEGIN命令中指定:

SQLite,MySQL,Oracle


DEFERRED


由BEGIN开始的IMMEDIATE事务会尝试获取RESERVED锁。如果成功,BEGIN IMMEDIATE保证没有别的连接可以写数据库。但是,别的连接可以对数据库进行读操作;但是,RESERVED锁会阻止其它连接的BEGIN IMMEDIATE或者BEGIN EXCLUSIVE命令,当其它连接执行上述命令时,会返回SQLITE_BUSY错误。这时你就可以对数据库进行修改操作了,但是你还不能提交,当你COMMIT时,会返回SQLITE_BUSY错误,这意味着还有其它的读事务没有完成,得等它们执行完后才能提交事务。


EXCLUSIVE
<p style="color: rgb(46, 46, 46);" sans",="" open="">

EXCLUSIVE事务会试着获取对数据库的EXCLUSIVE锁。这与IMMEDIATE类似,但是一旦成功,EXCLUSIVE事务保证没有其它的连接,所以就可对数据库进行读写操作了。


死锁


完整内容点此查看
0 0
原创粉丝点击