技术博客 技术博客
  • JAVA
  • 仓颉
  • 设计模式
  • 人工智能
  • Spring
  • Mybatis
  • Maven
  • Git
  • Kafka
  • RabbitMQ
  • RocketMQ
  • Redis
  • Zookeeper
  • Nginx
  • 数据库套件
  • MySQL
  • Elasticsearch
  • MongoDB
  • Hadoop
  • ClickHouse
  • Hbase
  • Hive
  • Flink
  • Flume
  • SQLite
  • linux
  • Docker
  • Jenkins
  • Kubernetes
  • 工具
  • 前端
  • AI
GitHub (opens new window)
  • JAVA
  • 仓颉
  • 设计模式
  • 人工智能
  • Spring
  • Mybatis
  • Maven
  • Git
  • Kafka
  • RabbitMQ
  • RocketMQ
  • Redis
  • Zookeeper
  • Nginx
  • 数据库套件
  • MySQL
  • Elasticsearch
  • MongoDB
  • Hadoop
  • ClickHouse
  • Hbase
  • Hive
  • Flink
  • Flume
  • SQLite
  • linux
  • Docker
  • Jenkins
  • Kubernetes
  • 工具
  • 前端
  • AI
GitHub (opens new window)
  • mysql

    • MySQL 问题汇总
    • MySQL 索引介绍
    • MySQL 锁介绍
    • MySQL 索引优化工具 explain
    • MySQL 主从复制(GTID)
    • MySQL 8安装
    • MySQL 8.x新特性总结
    • MySQL UDF以及新类型JSON
    • MySQL 高可用MGR(一) 理论
    • MySQL 高可用MGR(二) 搭建
    • MySQL 高可用MGR(三) 测试
  • Elasticsearch

    • ES 7.8.0(一) 入门介绍
    • ES 7.8.0(二) 读、写和写索引流程以及文档分析过程
    • ES 7.8.0(三) 文档冲突
  • mongodb

    • mongodb
  • hadoop

    • Hadoop 伪分布式及集群
    • Hadoop 指令
    • Hadoop 读写流程详解
    • Hadoop SpringBoot集成
    • Hadoop MapReduce机制
    • Hadoop YARN
    • Hadoop MapReduce配置和编写job及数据倾斜的解决
    • Hadoop MapReduce自定义格式输入输出
  • clickhouse

    • ClickHouse 介绍及安装
    • ClickHouse 数据类型
    • ClickHouse 表引擎
    • ClickHouse SQL操作
    • ClickHouse 副本配置
    • ClickHouse 分片与集群部署
    • ClickHouse Explain及建表优化
    • ClickHouse 语法优化规则
    • ClickHouse 查询优化
    • ClickHouse 数据一致性
    • ClickHouse 物化视图
    • ClickHouse MaterializeMySQL引擎
    • ClickHouse 监控及备份
  • hbase

    • Hbase 介绍及安装
    • Hbase 优化
    • Hbase phoenix安装及使用
    • Hbase LSM-TREE
  • hive

    • Hive 介绍及安装
    • Hive 内外部表、分区表、分桶表概念及hiveSQL命令
    • Hive 数据类型
    • Hive 函数 MySQL联合
    • Hive 数据倾斜和优化
    • Hive Sqoop安装及指令
  • flink

    • Flink 介绍及安装
    • Flink 配置介绍及Demo
    • Flink API讲解
    • Flink 运行架构
    • Flink 时间语义及Watermark
    • Flink 状态管理
    • Flink 容错,检查点,保存点
    • Flink 状态一致性
    • Flink Table API 和 Flink SQL
    • Flink CEP编程
    • Flink Joining编程
    • Flink CDC
  • flume

    • Flume 日志收集系统介绍及安装
    • Flume Source支持的类型
    • Flume Sink支持的类型
    • Flume Channel支持的类型
    • Flume Selector
    • Flume Interceptor拦截器类型
    • Flume Process
  • sqlite

    • SQLite介绍
      • 简介
      • 场景
        • 适用
        • 不适用
      • 安装
      • 其他
        • 系统表
        • 限制
        • 日志模式
        • 事务日志机制
        • 字段类型
目录

SQLite介绍

# 简介

C 语言编写的开源、轻量级、快速、独立且高可靠性的 SQL 数据库引擎,它提供了功能齐全的数据库解决方案,QLite 几乎可以在所有的手机和计算机上运行,它被嵌入到无数人每天都在使用的众多应用程序中,SQLite 还具有稳定的文件格式、跨平台能力和向后兼容性等特点。SQLite 通常用于为个人应用程序和设备提供本地数据存储,它强调的是经济、高效、可靠、独立和简单

# 场景

# 适用

  • 嵌入式设备和物联网 SQLite 不需要额外的管理或服务启动,非常适合用在手机、电视、机顶盒、游戏机、相机、手表等智能设备上
  • 缓存 SQLite 可以作为应用服务的缓存,减轻对中心数据库的压力
  • 内存或者临时数据库得益于 SQLite 的简单快速,非常使用程序演示或者日常测试

# 不适用

  • 存储大量数据,SQLite 的数据库文件大小限制在 2GB 左右,如果数据量过大,需要使用其他数据库
  • 存储结构复杂的数据,SQLite 的数据类型比较单一,需要使用其他数据库
  • 写入操作高并发时,SQLite 在任何时刻只允许一个写入操作执行,其他写入操作需要排队

# 安装

百度,很简单

# 其他

# 系统表

系统表是 sqlite 会自动生成的表

  • sqlite_master: 是一个存储数据库元信息的特殊表,包含了数据库中所有其他表、索引、触发器和视图的描述信息
    • type: 记录项目的类型,如 table、index、view、trigger。
    • name: 记录项目的名称,如表名、索引名等。
    • tbl_name: 记录所从属的表名,对于表来说,该列就是表名本身。
    • rootpage: 记录项目在数据库页中存储的编号。对于视图和触发器,该列值为 0 或者 NULL。
    • sql: 记录创建该项目的 SQL 语句。
  • sqlite_sequence:保存其他表的 RowID 的最大值
    • name:表名
    • seq:当前表最大的 RowID

# 限制

SQLite3 对数据库或单个表的限制主要包括以下几个方面:

  • 数据库文件大小:SQLite 的数据库文件大小最大可以达到 140TB ,但实际使用中受限于操作系统对文件大小的限制。
  • 单个表的行数:单个表理论上可以存储的最大行数为 2^64(18,446,744,073,709,551,616) 行,但在实际应用中很少会达到这个数量级。
  • 单行数据大小:单行数据的最大长度大约是 1GB(953MB 或 1,000,000,000 字节) 。这意味着一行数据不能超过这个大小。
  • 单个字段的大小:单个字段的最大长度取决于其类型。对于文本和 BLOB 类型的数据,最大长度为 1GB(2^31 - 1 字节) 。
  • 列的数量:每行数据的列数默认最大为 2000 列,可以通过编译时参数 SQLITE_MAX_COLUMN 修改,默认值通常足够满足大多数需求。
  • 表达式深度:SQL 表达式的嵌套深度默认最大为 1000 层,可通过编译时参数 SQLITE_MAX_EXPR_DEPTH 修改。
  • 事务大小:单个事务中可以包含的更改量没有明确的限制,但过大的事务可能会导致性能问题或内存不足错误。
  • 并发访问:SQLite 是一个无服务器的嵌入式数据库,不支持高并发写操作。多个读取操作可以同时进行,但写操作需要独占锁。

这些限制在大多数应用场景下是足够的,但在特定情况下可能需要考虑其他数据库系统。

# 日志模式

设置方式,执行 PRAGMA journal_mode=? ,而当前支持的日志模式有如下几种:

  • DELETE:删除模式,这是默认的日志模式,它将删除 journal 文件,并直接将更改写入数据库文件。
  • TRUNCATE:截断模式,它将截断 journal 文件,而不是删除它。
  • PERSIST:持久模式,它将 journal 文件标记为持久的,即使系统崩溃,它也不会被删除。
  • MEMORY:内存模式,它将 journal 文件保存在内存中,而不是写入磁盘。
  • WAL:Write-Ahead Logging 模式,它将更改写入一个名为 wal 的日志文件中,而不是直接写入数据库文件。
  • OFF:关闭模式,它将关闭日志功能,将更改直接写入数据库文件。

除去 MEMORY 与 OFF 两种不常用的模式,其余四种实际上可以分为两个大类:WAL (预写日志) 与 Rollback (回滚日志) 模式。

# 事务日志机制

  • WAL:SQLite 的事务日志机制,也称为 Write-Ahead Logging,会将所有更改(包括插入、更新和删除操作)先写入一个名为 wal 的日志文件中。这个日志文件保存了事务的变更记录。
    • 提高读取性能,因为多个读者可以同时读取数据库而不会被写操作阻塞
    • 更好的崩溃恢复能力,因为即使系统崩溃,也可以通过 WAL 文件恢复未完成的事务
  • Rollback Journal:这是 SQLite 的默认模式。每次事务开始时会创建一个临时的 journal 文件,用于记录事务前的数据状态。如果事务成功提交,journal 文件会被删除;如果事务失败或系统崩溃,journal 文件将用于回滚未完成的更改。
    • 简单且可靠,适用于大多数应用场景。

# 字段类型

  • integer:带符号的整数
  • real:浮点值
  • text:文本字符串,使用数据库编码(UTF-8、UTF-16BE 或 UTF-16LE)存储
  • blob:二进制大对象,存储原始数据,如图片、音频、视频等
  • smallint:16 位的整数
  • integer:32 位的整数
  • decimal (p,s):p 精确值和 s 大小的十进位整数,精确值 p 是指全部有几个数 (digits) 大小值,s 是指小数点後有几位数。如果没有特别指定,则系统会设为 p=5; s=0
  • float:32 位的实数
  • double:64 位的实数
  • char (n):n 长度的字串,n 不能超过 254
  • varchar (n):长度不固定且其最大长度为 n 的字串,n 不能超过 4000
  • graphic (n):和 char (n) 一样,不过其单位是两个字元 double-bytes, n 不能超过 127。这个形态是为了支援两个字元长度的字体,例如中文字
  • vargraphic (n):可变长度且其最大长度为 n 的双字元字串,n 不能超过 2000
  • date:包含了 年份、月份、日期
  • time:包含了 小时、分钟、秒
  • timestamp:包含了 年、月、日、时、分、秒、千分之一秒
  • datetime:包含日期时间格式,必须写成 '2010-08-05' 不能写为 '2010-8-5',否则在读取时会产生错误
上次更新: 6/11/2025, 4:10:30 PM
Flume Process

← Flume Process

Theme by Vdoing | Copyright © 2023-2025
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式