加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-12 23:46:31 所属栏目:百科 来源:网络整理
导读:在我眼里,MySQL和Oracle是这样的 而SQLite在是这样的 所以这么萌的数据库,我真的应该多了解她的。 简介 1. Zero-Configuration 无需安装和管理配置。 2. Serverless 无需服务器支持。 3. Single Database File 数据文件存储在一个单一的磁盘文件。 4. Stab

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


而SQLite在是这样的

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


简介


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命令中指定:


DEFERRED

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

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

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

死锁
完整内容点此查看

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读