当前位置: 首页 > news >正文

SQLite 3.45.0 发布!

SQLite 开发团队于 2024 年 01 月 18 日发布了 SQLite 3.45.0 版本,带来了一些 JSON 和优化器增强,让我们一睹为快!

JSON 函数

SQLite 3.45.0 版本开始,所有的 JSON 函数将会使用全新的内部格式存储 JSON 数据,也就是二进制的 JSONB。这种新格式可以避免查询和更新时不必要的 JSON 数据解析,而且占用的磁盘空间更小。

新版本增加了大量处理 JSONB 参数的函数,它们和原有的 JSON 函数一一对应。例如:

select json_extract('{"Name":"SQLite", "Version":"3.45.0"}', '$.Name');
SQLiteselect jsonb_extract('{"Name":"SQLite", "Version":"3.45.0"}', '$.Name');
SQLite

json_valid(x, y) 函数增加了一个可选的参数 y,用于定义 JSON 格式校验的规则。该参数的取值范围如下:

  • 0x01,输入文本严格遵循 RFC-8259 JSON 规范;
  • 0x02,输入文本遵循 JSON5 扩展规范;
  • 0x04,输入文本为遵循 JSONB 外部格式的 BLOB;
  • 0x08,输入文本为严格遵循 JSONB 内部格式的 BLOB。

参数 y 的默认值为 1,也可以是以上状态掩码的组合:

  • 1,输入文本为 RFC-8259 JSON 文本;
  • 2,输入文本为 JSON5 文本;
  • 4,输入文本大概率为 JSONB;
  • 5,输入文本为 RFC-8259 JSON 文本或者 JSONB;
  • 6,输入文本为 JSON5 文本或者 JSONB;
  • 8,输入文本严格遵循 JSONB 规范;
  • 9,输入文本为 RFC-8259 JSON 文本或者严格遵循 JSONB 规范;
  • 10,输入文本为 JSON5 文本或者严格遵循 JSONB 规范。

查询优化

如果存在一个更好的等式约束(equality constraint),不允许使用传递性约束优化(transitive constraint optimization)引导查询优化器错误地使用范围约束(range constraint)。因为等式约束通常比范围约束更精确,能够更好地优化查询性能。

CREATE TABLE x(i INTEGER, j INTEGER, k INTEGER);
CREATE INDEX idx_x_ij ON x(i, j);EXPLAIN QUERY PLAN SELECT * FROM x a JOIN x b ON b.i = a.i AND b.j = a.k WHERE a.k > 0;-- 早期版本
QUERY PLAN
|--SCAN a
`--SEARCH b USING INDEX idx_x_ij (i=? AND j>?)-- SQLite 3.45.0
QUERY PLAN
|--SCAN a
`--SEARCH b USING INDEX idx_x_ij (i=? AND j=?)

查询优化器可以更好地忽略那些被 ANALYZE 工具识别为低质量的索引,以提高查询性能和效率。

其他改进

新版本为应用程序 SQL 函数增加了 SQLITE_RESULT_SUBTYPE 属性,所有调用 sqlite3_result_subtype() 的应用程序 SQL 函数必须注册该属性。

新版本可以为 FTS5 虚拟表指定 Tokendata 选项,可以控制 fts5 处理分词器返回的内容。

默认启用 SQLITE_DIRECT_OVERFLOW_READ 优化选项,可以提高 BLOB 和长字符串的读取性能。如果需要禁用该选项,可以在编译时指定 -DSQLITE_DIRECT_OVERFLOW_READ=0。

参数 SQLITE_MAX_PAGE_COUNT 的默认值从 1073741824 改为 4294967294,对于默认的 4 KB 数据页,单个数据库文件最大可以到达 17.5 TB。

对于命令行客户端,自动检测 .dump 脚本的执行并设置合适的参数,例如 .dbconfig defensive off 以及 .dbconfig dqs_dll on。同时命令行还改进了 Windows 平台对于 UTF-8 内容的显示。

相关文章:

SQLite 3.45.0 发布!

SQLite 开发团队于 2024 年 01 月 18 日发布了 SQLite 3.45.0 版本,带来了一些 JSON 和优化器增强,让我们一睹为快! JSON 函数 SQLite 3.45.0 版本开始,所有的 JSON 函数将会使用全新的内部格式存储 JSON 数据,也就是…...

MongoDB聚合:$set

聚合$set阶段可以为文档添加新的字段。$set输出的文档包含输入文档中的所有现有字段和新添加的字段。$set是$addFields的别名,从MongoDB4.2开始支持。$set和$addFields等价于$project阶段,这两个阶段都等同于 $project 阶段,后者明确指定输入…...

《Python数据分析技术栈》第01章 02 Jupyter入门(Getting started with Jupyter notebooks)

02 Jupyter入门(Getting started with Jupyter notebooks) 《Python数据分析技术栈》第01章 02 Jupyter入门(Getting started with Jupyter notebooks) Before we discuss the essentials of Jupyter notebooks, let us discuss…...

【征服redis5】redis的Redisson客户端

目录 1 Redisson介绍 2. 与其他Java Redis客户端的比较 3.基本的配置与连接池 3.1 依赖和SDK 3.2 配置内容解析 4 实战案例:优雅的让Hash的某个Field过期 5 Redisson的强大功能 1 Redisson介绍 Redisson 最初由 GitHub 用户 “mrniko” 创建,并在…...

React16源码: React中的beginWork的源码实现

beginWork 1 )概述 在 renderRoot 之后,要对我们的 Fiber 树每一个节点进行对应的更新更新节点的一个入口方法,就是 beginWork这个入口方法会有帮助我们去优化整棵树的更新过程 react 它的节点其实是非常多的,如果每一次子节点的…...

5-微信小程序语法参考

1. 数据绑定 官网传送门 WXML 中的动态数据均来自对应 Page 的 data。 数据绑定使用 Mustache 语法&#xff08;双大括号&#xff09;将变量包起来 ts Page({data: {info: hello wechart!,msgList: [{ msg: hello }, { msg: wechart }]}, })WXML <view class"vie…...

数组练习 Leetcode 566.重塑矩阵

在 MATLAB 中&#xff0c;有一个非常有用的函数 reshape &#xff0c;它可以将一个 m x n 矩阵重塑为另一个大小不同&#xff08;r x c&#xff09;的新矩阵&#xff0c;但保留其原始数据。 给你一个由二维数组 mat 表示的 m x n 矩阵&#xff0c;以及两个正整数 r 和 c &#…...

Linux centos中find命令的多种用途:按照具体应用来详细说明find的用法举例

目录 一、find命令 二、find命令的语法 &#xff08;一&#xff09;语法格式 &#xff08;二&#xff09;选项 1、选项(option)介绍 2、控制符号链接的option 3、调试选项debugopts 4、优化选项 &#xff08;三&#xff09;表达式expression 1、选项options 2、测试…...

服务器数据恢复—OceanStor存储raid5热备盘同步数据失败的数据恢复案例

服务器数据恢复环境&#xff1a; 华为OceanStor某型号存储&#xff0c;存储内有一组由24块硬盘组建的raid5阵列&#xff0c;配置1块热备盘。 服务器故障&#xff1a; 该存储raid5阵列中有一块硬盘离线&#xff0c;热备盘自动激活并开始同步数据&#xff0c;在热备盘同步数据的…...

Xline v0.6.1: 一个用于元数据管理的分布式KV存储

Xline是什么&#xff1f;我们为什么要做Xline&#xff1f; Xline是一个基于Curp协议的&#xff0c;用于管理元数据的分布式KV存储。现有的分布式KV存储大多采用Raft共识协议&#xff0c;需要两次RTT才能完成一次请求。当部署在单个数据中心时&#xff0c;节点之间的延迟较低&a…...

【CSS】解决height = line-height 文字不垂直居中(偏上、偏下)的问题

解决办法1&#xff1a; 查看 font-family 属性&#xff0c;确认是否是因为字体而导致的不垂直居中问题。 其他小知识&#xff1a; 基线就是小写x字母的下边缘(线) 就是我们常说的 基线。line-height 属性设置的行高也就是定义的两行文字基线之间的距离! 参考文章&#xff1a;…...

天津想转行学python培训班靠谱吗?

现在的职业如此繁多&#xff0c;很多人把高薪当成衡量工作好坏的重要标准&#xff0c;因此IT行业以超出其他行业几倍薪资水平成为不错的选择&#xff0c;而Python又以其简单易学好上手成为大家所青睐的学习目标。 Python发展前景如何 Python语言就业发展方向广泛&#xff1a;…...

(C语言)冒泡排序

一、运行结果&#xff1b; 二、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h>//实现buble_sort函数&#xff1b; void buble_sort(int arr[], int sz) {//初始化变量值&#xff1b;int i 0;//嵌套循环冒泡排序&#xff1b;//外层循环&…...

怎么样的布局是符合可制造性的PCB布局?

满足可制造性、可装配性、可维修性要求&#xff0c;方便调试的时候于检测和返修&#xff0c;能够方便的拆卸器件&#xff1a; 1&#xff09;极性器件的方向不要超过2种&#xff0c;最好都进行统一方向等要求&#xff0c;如图1-1所示&#xff1b; 图1-1 极性器件方向统一摆放 2…...

第28关 k8s监控实战之Prometheus(九)

------> 课程视频同步分享在今日头条和B站 大家好&#xff0c;我是博哥爱运维。早期我们经常用邮箱接收报警邮件&#xff0c;但是报警不及时&#xff0c;而且目前各云平台对邮件发送限制还比较严格&#xff0c;所以目前在生产中用得更为多的是基于webhook来转发报警内容到企…...

安全防御之可信计算技术

可信计算技术是一种计算机安全体系结构&#xff0c;旨在提高计算机系统在面临各种攻击和威胁时的安全性和保密性。它通过包括硬件加密、受限访问以及计算机系统本身的完整性验证等技术手段&#xff0c;确保计算机系统在各种攻击和威胁下保持高度安全和保密性。 一、可信计算基…...

FPGA引脚物理电平(内部资源,Select IO)-认知2

引脚电平 The SelectIO pins can be configured to various I/O standards, both single-ended and differential. • Single-ended I/O standards (e.g., LVCMOS, LVTTL, HSTL, PCI, and SSTL) • Differential I/O standards (e.g., LVDS, Mini_LVDS, RSDS, PPDS, BLVDS, and…...

PBR材质纹理下载

03:10 按照视频里的顺序 我们从第6个网站开始倒数 点击本行文字或下方链接 进入查看 6大网站地址 网址查看链接&#xff1a; http://www.uzing.net/community_show-1962-48-48-35.html 06 Tectures Wood Fence 001 | 3D TEXTURES 简介&#xff1a;最大的纹理网站之一&#x…...

mac PyCharm 使用conda环境

1 使用conda创建虚拟环境 conda create -n test6 python3.9 -y conda activate test62 选择conda环境 本地 选择已经存在的conda环境 右下角会显示现在的环境。...

10个常用的正则表达式

1 电话号码 let r1 /^1[3-9]\d{9}$/g console.log(r1.exec(18596932371)) 2 qq号 let r2 /^[1-9][0-9]{4,9}$/g console.log(r2.exec(123456)) 3 十六进制的方式表示颜色 let r3 /^#([0-9a-fA-F]{6}|[0-9a-fA-F]{3})$/g // # 可能可有可无&#xff0c;如果不需要#&a…...

【会议征稿通知 | E3S出版 | EI 、Scopus稳定检索】第十二届能源材料与环境工程国际学术会议(ICEMEE 2026)

第十二届能源材料与环境工程国际学术会议&#xff08;ICEMEE 2026&#xff09; 2026 12th International Conference on Energy Materials and Environment Engineering 2026年6月12-14日 | 线上会议 大会官网&#xff1a;www.icemee.net 截稿时间&#xff1a;见官网&#x…...

搞懂专业代剪辑,才能看懂好视频背后的逻辑

为什么你拍的素材总剪不出‘电影感’&#xff1f; 你是否也经历过这样的困扰&#xff1a;婚礼当天拍了上百G的高清素材&#xff0c;回家却剪不出那支朋友圈点赞破百的高光快剪&#xff1b;或是为新品拍摄了完整开箱视频&#xff0c;上传后播放量寥寥&#xff1f;问题往往不在拍…...

QR码扫描模块全解析:从原理到工程实践

1. 项目概述&#xff1a;不只是“扫一扫”那么简单如果你以为QR码扫描就是个“打开摄像头、对准、识别”的简单功能&#xff0c;那可能错过了它背后一整套精密的技术栈和丰富的应用场景。作为一个在移动应用和嵌入式设备领域折腾了十多年的老码农&#xff0c;我见过太多项目在集…...

YOLOv8模型家族全解析:P2、P6、标准版到底该选哪个?一张图帮你搞定选择困难症

YOLOv8模型家族全解析&#xff1a;P2、P6、标准版到底该选哪个&#xff1f; 在计算机视觉项目的初期&#xff0c;模型选型往往是最令人头疼的环节。面对GitHub仓库中琳琅满目的YAML配置文件&#xff0c;即便是经验丰富的工程师也难免陷入选择困难。YOLOv8作为当前最先进的目标检…...

嵌入式异步弱总线AWBus-lite:解耦模块通信的轻量级框架设计

1. 项目概述&#xff1a;为什么需要关注AWBus-lite&#xff1f;在嵌入式系统开发&#xff0c;尤其是资源受限的MCU&#xff08;微控制器&#xff09;项目中&#xff0c;模块间的通信与解耦一直是个核心痛点。传统的做法&#xff0c;要么是模块间直接函数调用&#xff0c;导致代…...

无参考视频质量评估:AI如何在没有标准答案时评判视频画质

1. 项目概述&#xff1a;当AI成为视频的“质检员”在视频内容爆炸式增长的今天&#xff0c;我们每天都会接触到海量的视频流——从手机随手拍的短视频&#xff0c;到专业制作的影视剧&#xff0c;再到监控摄像头24小时不间断的记录。你有没有想过&#xff0c;这些视频的“画质”…...

Microblaze软核处理器在SRAM型FPGA中的抗单粒子效应高可靠加固方案

1. 项目概述&#xff1a;为什么要在太空里“加固”一个软核处理器&#xff1f;在工业自动化、医疗影像或者汽车电子领域&#xff0c;你或许听说过Xilinx FPGA里的Microblaze软核处理器。它就像一个可以随心所欲“捏”出来的32位或64位CPU大脑&#xff0c;开发者能根据项目需求&…...

Go语言云原生开发:构建高可用微服务架构

Go语言云原生开发&#xff1a;构建高可用微服务架构 引言 云原生开发已成为现代应用开发的主流范式&#xff0c;Go语言凭借其轻量级、高性能和出色的并发支持&#xff0c;成为云原生开发的首选语言。本文将深入探讨Go语言在云原生环境中的应用&#xff0c;帮助您构建高可用的微…...

别再为Gurobi学术许可发愁了!手把手教你从申请到激活(附学信网报告攻略)

Gurobi学术许可全流程实战指南&#xff1a;从申请到Python集成 第一次接触Gurobi优化求解器时&#xff0c;我被它强大的性能所吸引&#xff0c;但随即陷入了学术许可申请的迷茫中。和许多研究生同学一样&#xff0c;我在学信网报告下载、邮件沟通、命令行激活等环节屡屡碰壁。本…...

避坑指南:为什么你的mqtt.fx连不上OneNET?Token生成与参数配置的3个关键细节

避坑指南&#xff1a;为什么你的mqtt.fx连不上OneNET&#xff1f;Token生成与参数配置的3个关键细节 当你深夜调试MQTT设备&#xff0c;反复检查代码却依然看到刺眼的"离线"状态时&#xff0c;那种挫败感我深有体会。OneNET作为国内主流物联网平台&#xff0c;其MQTT…...