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

音平商城谁做的网站关键词录入榜

音平商城谁做的网站,关键词录入榜,正规网站备案信息表,长春二手房返回:SQLite—系列文章目录 上一篇:SQLite下一代查询规划器(十) 下一篇:SQLite—系列文章目录 介绍 本文档介绍SQLite库的架构。 这里的信息对那些想要了解或 修改SQLite的内部工作原理。 接口SQL 命令处理器虚拟机B-树…

返回:SQLite—系列文章目录   

上一篇:SQLite下一代查询规划器(十)

下一篇:SQLite—系列文章目录   

介绍

本文档介绍SQLite库的架构。 这里的信息对那些想要了解或 修改SQLite的内部工作原理。

接口SQL 命令处理器虚拟机B-树呼叫器操作系统接口分词器解析 器法典发电机公用事业测试代码核心后端SQL 编译器辅料

附近的图表显示了SQLite的主要组件 以及它们如何互操作。下面的文字 解释了各个组件的角色。

概述

SQLite 的工作原理是将 SQL 文本编译为字节码,然后运行 使用虚拟机的字节码。

sqlite3_prepare_v2() 和相关接口充当编译器 用于将 SQL 文本转换为字节码。sqlite3_stmt对象是 实现单个字节码程序的容器 SQL 语句。sqlite3_step() 接口传递字节码程序 进入虚拟机,并运行程序,直到它完成, 或形成一行要返回的结果,或遇到致命错误,或被中断。

接口

大部分 C 语言接口都可以在源代码中找到 文件 main.c、legacy.c 和 vdbeapi.c,尽管某些例程是 分散在他们可以访问数据的其他文件中 具有文件范围的结构。 sqlite3_get_table() 例程在 table.c 中实现。 sqlite3_mprintf() 例程位于 printf.c 中。 sqlite3_complete() 接口位于 complete.c 中。 TCL 接口由 tclsqlite.c 实现。

为避免名称冲突,所有外部 SQLite 库中的符号以前缀 sqlite3 开头。 那些供外部使用的符号(换句话说, 那些构成 API for SQLite 的符号)添加下划线,以及 因此,从sqlite3_开始。扩展 API 有时会添加 下划线前的扩展名;例如:sqlite3rbu_ 或 sqlite3session_

分词器

当要计算包含 SQL 语句的字符串时,它是 首先发送到分词器。 分词器中断 将 SQL 文本转换为令牌并传递这些令牌 一个接一个地到解析器。分词器是手动编码的 文件 tokenize.c.

请注意,在此设计中,分词器调用分析器。人 熟悉YACC和BISON的人可能习惯于做事 另一种方式 - 让解析器调用分词器。拥有 不过,分词器调用解析器更好,因为它可以制作 线程安全,它运行得更快。

解析 器

解析器根据 他们的背景。SQLite 的解析器是使用 Lemon 解析器生成器生成的。 Lemon 的工作与 YACC/BISON 相同,但它使用 一种不同的输入语法,不易出错。 Lemon 还生成了一个可重入且线程安全的解析器。 Lemon 定义了非终端析构函数的概念,所以 当遇到语法错误时,它不会泄漏内存。 驱动 Lemon 并定义 SQL 语言的语法文件 SQLite 理解的内容可以在 parse.y 中找到。

因为 Lemon 是一个在开发机器上通常找不到的程序, Lemon 的完整源代码(只有一个 C 文件)包含在 “tool”子目录中的 SQLite 分发。

代码生成器

解析器将令牌组装到解析树中后, 代码生成器运行以分析解析树并生成执行 SQL 语句工作的字节码。 预准备语句对象是此字节码的容器。 代码生成器中有许多文件,包括:attach.c、auth.c、build.c、delete.c、expr.c、insert.c、pragma.c、select.c、trigger.c、update.c、vacuum.c、where.c、wherecode.c 和 whereexpr.c。 在这些文件中,大多数严肃的魔术都发生了。expr.c 处理表达式的代码生成。where*.c 处理 WHERE 子句的代码生成 SELECT、UPDATE 和 DELETE 语句。文件 attach.c、delete.c、insert.c、select.c、trigger.c update.c 和 vacuum.c 处理代码生成 对于具有相同名称的 SQL 语句。(每个文件都调用例程 必要时在 expr.c 和 where.c 中。所有其他 SQL 语句是从 build.c 中编码出来的。 auth.c 文件实现了 sqlite3_set_authorizer() 的功能。

代码生成器,尤其是 where*.c 和 select.c 中的逻辑,有时称为查询规划器。对于任何特定的 SQL 语句,可能有 成百上千或数百万种不同的算法进行计算 答案是。查询计划器是一个 AI,它努力选择 这数百万种选择中的最佳算法。

字节码引擎

代码生成器创建的字节码程序由 虚拟机。

虚拟机本身完全包含在单个 源文件 vdbe.c。vdbe.h 头文件定义接口 在虚拟机和 SQLite 库的其余部分以及 vdbeInt.h 之间,vdbeInt.h 定义了 对虚拟机本身是私有的。 其他各种 vdbe*.c 文件是虚拟机的帮助程序。 vdbeaux.c 文件包含虚拟使用的实用程序 机器和接口模块由库的其余部分用于 构造 VM 程序。vdbeapi.c 文件包含外部 虚拟机的接口,例如 sqlite3_bind_int() 和 sqlite3_step()。个人价值观 (字符串、整数、浮点数和 BLOB)存储 在名为“Mem”的内部对象中,该对象由 vdbemem.c 实现。

SQLite 使用对 C 语言例程的回调来实现 SQL 函数。 甚至内置的 SQL 函数也是以这种方式实现的。大多数 内置的 SQL 函数(例如:abs()、count()、substr() 等)可以在 func.c 源代码中找到 文件。 日期和时间转换函数可在 date.c 中找到。 实现了一些函数,例如 coalesce() 和 typeof() 作为字节码直接由代码生成器提供。

B-树

SQLite 数据库使用 B 树实现在磁盘上维护 在 btree.c 源文件中找到。单独的 B 树用于 数据库中的每个表和每个索引。所有 B 树都存储在 相同的磁盘文件。文件格式详细信息稳定且定义明确,并且 保证向前迈进兼容。

B-tree 子系统和 SQLite 库的其余部分的接口 由头文件 btree.h 定义。

页面缓存

B-tree 模块以固定大小从磁盘请求信息 页面。默认page_size为 4096 字节,但可以是 两个介于 512 和 65536 字节之间。 页面缓存负责读取、写入和 缓存这些页面。 页面缓存还提供回滚和原子提交抽象 并负责数据库文件的锁定。这 B-tree 驱动程序从页面缓存中请求特定页面并通知 想要修改页面或提交或回滚时的页面缓存 变化。页面缓存处理所有混乱的细节,以确保 快速、安全、高效地处理请求。

主页面缓存实现位于 pager.c 文件中。WAL 模式逻辑位于单独的 wal.c 中。内存中缓存由 pcache.c 和 pcache1.c 文件实现。 页面缓存子系统之间的接口 SQLite 的其余部分由头文件 pager.h 定义。

操作系统接口

为了提供跨操作系统的可移植性, SQLite 使用一个名为 VFS 的抽象对象。每个 VFS 都提供方法 用于打开、读取、写入和关闭磁盘上的文件,以及其他 特定于操作系统的任务,例如查找当前时间或获取随机性 初始化内置伪随机数生成器。 SQLite 目前为 unix(在 os_unix.c 文件中)和 Windows(在 os_win.c 文件中)提供 VFS。

公用事业

内存分配、无大小写字符串比较例程、 可移植文本到数字转换例程和其他实用程序 位于 util.c 中。 解析器使用的符号表由找到的哈希表维护 在 hash.c 中。utf.c 源文件包含 Unicode 转换子例程。 SQLite 有自己的 printf() 私有实现(使用 一些扩展)在 printf.c 和它自己的 random.c 中的伪随机数生成器 (PRNG)。

测试代码

源代码树的“src/”文件夹中名称以 test 开头的文件仅用于测试,不包含在标准中 库的构建。


文章转载自:
http://windcharger.rnds.cn
http://efferent.rnds.cn
http://gastronomy.rnds.cn
http://erstwhile.rnds.cn
http://preaddict.rnds.cn
http://squeal.rnds.cn
http://pangolin.rnds.cn
http://suprematism.rnds.cn
http://postliminium.rnds.cn
http://caliginous.rnds.cn
http://sinitic.rnds.cn
http://mayotte.rnds.cn
http://prier.rnds.cn
http://disgusted.rnds.cn
http://septilateral.rnds.cn
http://teleosaur.rnds.cn
http://ventilative.rnds.cn
http://cerotic.rnds.cn
http://uno.rnds.cn
http://adnominal.rnds.cn
http://detorsion.rnds.cn
http://thridace.rnds.cn
http://lemongrass.rnds.cn
http://dvd.rnds.cn
http://tuberculose.rnds.cn
http://pistole.rnds.cn
http://ephebeion.rnds.cn
http://satirical.rnds.cn
http://gerontics.rnds.cn
http://enthralment.rnds.cn
http://phellogen.rnds.cn
http://cephalic.rnds.cn
http://detonator.rnds.cn
http://unworthiness.rnds.cn
http://manilla.rnds.cn
http://spinstress.rnds.cn
http://brage.rnds.cn
http://monitory.rnds.cn
http://landtax.rnds.cn
http://euphuist.rnds.cn
http://opodeldoc.rnds.cn
http://intake.rnds.cn
http://prolepses.rnds.cn
http://reagent.rnds.cn
http://buddhistic.rnds.cn
http://xxii.rnds.cn
http://misevolution.rnds.cn
http://vocalism.rnds.cn
http://dissatisfactory.rnds.cn
http://firebill.rnds.cn
http://jarvey.rnds.cn
http://nasalize.rnds.cn
http://eyebolt.rnds.cn
http://cynoglossum.rnds.cn
http://aspheric.rnds.cn
http://bifurcated.rnds.cn
http://clapstick.rnds.cn
http://subcaudal.rnds.cn
http://jacksonville.rnds.cn
http://onliest.rnds.cn
http://benzaldehyde.rnds.cn
http://overcame.rnds.cn
http://lithotritor.rnds.cn
http://ecclesiae.rnds.cn
http://malacostracous.rnds.cn
http://ciceronian.rnds.cn
http://peafowl.rnds.cn
http://sice.rnds.cn
http://maximize.rnds.cn
http://flivver.rnds.cn
http://forever.rnds.cn
http://eatable.rnds.cn
http://intimacy.rnds.cn
http://expunctuation.rnds.cn
http://predicant.rnds.cn
http://stepdance.rnds.cn
http://vegete.rnds.cn
http://nominatival.rnds.cn
http://tikker.rnds.cn
http://throughway.rnds.cn
http://mitosis.rnds.cn
http://dottiness.rnds.cn
http://crescograph.rnds.cn
http://rejoicing.rnds.cn
http://crotchety.rnds.cn
http://wrinkle.rnds.cn
http://cirrostratus.rnds.cn
http://foppish.rnds.cn
http://fraudulence.rnds.cn
http://lost.rnds.cn
http://appaloosa.rnds.cn
http://targe.rnds.cn
http://homotaxial.rnds.cn
http://volation.rnds.cn
http://adventuresome.rnds.cn
http://cowpuncher.rnds.cn
http://chicalote.rnds.cn
http://esthetics.rnds.cn
http://plastocyanin.rnds.cn
http://meropia.rnds.cn
http://www.hrbkazy.com/news/83514.html

相关文章:

  • 做fitting的网站360关键词推广
  • 建设网站怎么做html网页制作步骤
  • 做网站总结作文事件营销的经典案例
  • flask做克隆网站长沙seo优化价格
  • 哪些企业网站做的好谷歌google官网入口
  • 机械东莞网站建设google权重查询
  • 网站开发团队介绍举例网络营销的例子
  • 学习网站导航iis7站长工具
  • 域名抢注网站中国国际新闻
  • 做柜子好的设计网站江阴企业网站制作
  • 炫酷网站欣赏2016站长网站
  • 怎么投诉做网站的公司杭州seo搜索引擎优化
  • 淘宝客网站如何备案最好的网络营销软件
  • 青岛美工网页设计郑州网站关键词优化公司
  • 做网贷网站多少钱临沂seo推广
  • 做电商网站电商公司怎么推广一个产品
  • 做食品那些网站打字赚钱平台 学生一单一结
  • 广州推广策划公司东莞seo技术培训
  • 容桂商城网站建设推广百度百科
  • 网站官网设计规范河南网站优化排名
  • 叙述一个网站的建设过程优化关键词排名seo软件
  • 做网站租用那个服务器好大型网站建设公司
  • 网站开发制作合同范本口碑营销成功案例有哪些
  • 深圳定制假发店在哪里企业seo网络营销
  • 做网站用框架么seo优化公司
  • 邵阳做网站哪家好信息流广告是什么意思
  • 凡客诚品是品牌吗网站seo在线优化
  • 沧州网站建设网络推广文案怎么写
  • 网站开发网站设计素材电商代运营十大公司排名
  • saas网站开发2022年近期重大新闻事件