❝
开头还是介绍一下群,如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, OceanBase, Sql Server等有问题,有需求都可以加群群内有各大数据库行业大咖,可以解决你的问题。加群请联系 liuaustin3 ,(共3400人左右 1 + 2 + 3 + 4 +5 + 6 + 7 + 8 +9)(1 2 3 4 5 6 7 8群已经爆满 9群 300+,开10群PolarDB专业学习群110+ 针对 SQLite 我们将建立一个新的群sqlite的群,如果需要请加群的时候单独告知)
去年SQLlite的几个文章爆火,我都没有想到几万的阅读量。今年我们也新开一个系列叫SQLite知多少,我们继续深入到SQLite的使用问题的探究中,这是一个长期的系列,目前已经写到 4 期,我们将从,安装,版本,使用,SQL,运维,压力测试,使用中程序的编制注意事项等等,深入SQLite 希望这个系列能帮助你
SQLite 开发中的数据库开发规范 --如何提升业务系统性能避免基础BUG
SQLite3 打败了 PostgreSQL 终究还是没能挽回--世界最大装机量是真的
我们此次选择的版本是3.45.3,这个版本在适应的系统的广泛性都要比新的版本要好,并且一些我们需要的核心技术的更新也都做了,BUG的FIX也做了。所以这个版本将作为我们的研究和使用的核心版本。
这里我们再次重申这个版本的特点
1 引入了JSONB的格式,通过JOSN预处理成树状存储结构,避免了重复解析,读取和处理JSON的速度比以前快了数倍。
2 优化了索引的选择,让数据库可以选择更高效的索引而不是因为优化的时间的原因,选择一个低效的索引。
3 修复了 upsert的语法错误
4 修复了sum() 函数计算时的数据错误问题
5 修改了默认的页数,支持windows控制台 UTF-8的字符显示,对中文更加友好。
5 使用后,由于一些更先进的语句处理方案,导致内存的使用变大。
从下本集开始我们对这个版本的SQL语句开始进行研究。
SQLite语法
本集我们来回顾一下,基本的操作为我们后续的研究和使用做铺垫。
1 如何打开sqlite
直接运行sqlite 并且后面带有要打开或初始化的数据库的文件名字即可。
go
anaconda-ks.cfg sqldiff sqlite3_analyzer sqlite-tools-win-x64-3450300.zip
net_database3453.sql sqlite3 sqlite-tools-linux-x64-3450300.zip
[root@sqllite ~]# sqlite3 net_database3453.sql
SQLite version 3.26.0 2018-12-01 12:34:55
Enter ".help"for usage hints.
sqlite>
sqlite>
sqlite>
sqlite> PR
PRAGMA PRECEDING PRIMARY
sqlite> PRAGMA journal_mode;
wal
sqlite> PRAGMA synchronous;
2
sqlite> PRAGMA busy_timeout;
0
sqlite> PRAGMA cache_size;
-2000
sqlite> PRAGMA foreign_keys;
0
sqlite>
如果不清楚这块内容可以翻看去年的文章的内容,这里我们需要在执行的时候初始化这些参数
初始化参数
这里我们将参数写入到 init.sql 然后通过 -init 的初始化命令来将这些信息打入到数据库中,每次启动我们就能获得对应的初始化参数要的效果。
今天我们学习一个新的知识点,如何获取当前有多少链接连入到数据库中,因为SQLITE本身不是一个数据库的模型,他是一个文件的模型,这里就不要想着直接通过类似 session的查询来看数据库有多少链接了。这里只能通过外部的文件模式来看如下面在LINUX中运行如下命令。
lsof -r 2 /root/net_database3453.sql
数据库查看连接情况
在Window中可以通过
使用 Windows 资源监视器 (最直观) 如果你想看哪些进程正在占用你的 .db 文件:
按下 Win + R,输入 resmon 并回车。
点击 "CPU" 选项卡。
在右侧的 "关联的句柄" 搜索框中,输入你的数据库文件名(例如 my_database.db)。
系统会列出所有当前正在打开该文件的进程(PID)和程序名
image
另外如果进入数据库可以通过 PRAGMA lock_status; 来查看当前是否有访问在对文件进行锁定
