btree是如何存储在光盘上的?

2024-03-25

我知道如何在内存中实现b树,但不清楚如何在光盘中存储trie。我认为主要有两点区别:

  1. 内存指针和磁盘地址之间的转换,看这个.
  2. 插入新的k/v项时如何拆分页面?在内存中很容易实现。

Thanks


这完全取决于您使用的 DBMS。如果您想知道它是如何在 MS SQL Server 中实现的,需要阅读以下内容:

  • 页面(我猜它们几乎存在于所有现代 DBMS 中) - 在 SQL Server 中它们是 8Kb。数据库文件由页面组成。
  • 范围 - 8 个连续页面的逻辑组
  • (S)GAM -(共享)全球分配图。包含有关空闲和占用范围信息的位图。这是数据库文件的第一页。
  • IAM - 索引分配图。您可以找出哪个索引/堆存储在哪些盘区中。有了这些信息,您就可以在存储索引/堆的文件中找到位置。

使用 IAM 和 GAM(或 SGAM),您可以拆分页面 - 只需将页面的一部分(应该是溢出的)移动到文件上的另一个页面。

IAM 和 GAM 也是您第一个问题的答案。

这些名称大部分取自 MS SQL Server,但我很确定,在其他 DBMS 中,它的解决方式非常相似。

希望能帮助到你。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

btree是如何存储在光盘上的? 的相关文章

  • 是否有一种算法可以在线性时间内计算数组反转?

    我知道有多少倒转 en wikipedia org wiki Inversion 28discrete mathematics 29 in an n 元素数组可以在 O n log n 操作使用增强型归并排序 http www geeksf
  • 什么是“朴素”算法,什么是“封闭式”解决方案?

    我有一些关于描述算法时使用的术语语义的问题 首先 朴素 算法是什么意思 这与给定问题的其他解决方案有何不同 解决方案还可以采取哪些其他形式 其次 我听到很多人提到 封闭式 解决方案 我也不知道这意味着什么 但在尝试解决递归关系时经常会出现
  • Scrapy - 持续从数据库中获取要爬取的url

    我想不断地从数据库中获取要爬行的网址 到目前为止 我成功地从基地获取了 url 但我希望我的蜘蛛继续从该基地读取 因为该表将由另一个线程填充 我有一个管道 一旦爬行 工作 就会从表中删除 url 换句话说 我想使用我的数据库作为队列 我尝试
  • 这个函数(for循环)空间复杂度是O(1)还是O(n)?

    public void check 10 for string i list Integer a hashtable get i if a gt 10 hashtable remove i 这是 O 1 还是 O n 我猜测 O n 但不是
  • 将古吉拉特语文本插入 MySQL 表会产生垃圾字符和不可读的文本

    我有三个 MySQL 表 我正在向其中插入古吉拉特语内容 当我插入两个表时 它们插入得很好并且可读 但在一个表中 它显示垃圾字符 不可读的文本 我怎样才能解决这个问题 MySQL 有每个表的字符集设置 http dev mysql com
  • 贝尔曼福特算法可以有任意的边顺序吗?

    我刚刚开始学习新算法 但当我阅读 极客为极客而写的贝尔曼福特算法 时 我陷入了困境 http www geeksforgeeks org dynamic programming set 23 bellman ford algorithm h
  • 在树结构的 Big-O 表示法中:为什么有些来源引用 O(logN),有些来源引用 O(h)?

    在研究遍历二叉搜索树的任何算法的复杂性时 我看到两种不同的方式来表达同一件事 版本 1 最坏情况下的遍历算法对树的每个高度进行一次比较 因此复杂度是O h 版本 2 最坏情况下的遍历算法对树的每个高度进行一次比较 因此复杂度是O logN
  • 使用什么算法来确定使系统达到“零”状态所需的最小操作数?

    这是一种更通用的问题 不是特定于语言的 有关要使用的想法和算法的更多信息 系统如下 它登记朋友群体之间的小额贷款 Alice and Bill要去吃午饭 比尔的卡坏了 所以爱丽丝支付了他的餐费 10 美元 第二天Bill and Charl
  • JavaScript 中的埃拉托斯特尼筛法对大量数据无限运行

    我一直在尝试写埃拉托斯特尼筛法 http en wikipedia org wiki Sieve of EratosthenesJavaScript 中的算法 基本上我只是按照以下步骤操作 创建从 2 到 n 1 的连续整数列表 令第一个素
  • 测试 python Counter 是否包含在另一个 Counter 中

    如何测试是否是pythonCounter https docs python org 2 library collections html collections Counter is 包含在另一个中使用以下定义 柜台a包含在计数器中b当且
  • 在触发期间更新 oracle 中的同一行?

    简短的问题 因为我不知道如何搜索这个 我可以 重新更新 同一行吗 例如 我有一个存储付款小计的字段 并且考虑到我的业务限制 我可以更新该值 我可以仅用触发器更新同一行的总计吗 预先谢谢您 顺便说一句 我正在使用 Oracle 和 PL SQ
  • 使用Python将文本文件导入Access 2003数据库

    我正在尝试使用我正在开发的 Python 3 4 应用程序将管道分隔的文本文件导入到具有现有表的 Access 数据库中 但遇到了一些麻烦 该应用程序将用于导入不同的文本文件 因此我使用条目小部件来写入文件名 并且我希望将输入的文件的内容加
  • 用于捕获审计跟踪的数据库设计的想法[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 如何维护数据库中的数据日志 我必须维护对每一行所做的每次更改的日志 这意味着我不能允许DELETE and UPDATE待执行 我怎样才能保留这
  • 如何在首次运行时填充大型 SQLite 数据库

    我正在开发一个基于 SQLite 数据库的字典应用程序 该数据库包含超过 300 000 行 问题在于 最终形式的数据库文件由全文索引表组成 并且重量远远超过150Mb 我通过创建无内容的 fts4 表设法将 db 文件大小降至最低 数据库
  • 计算序列而无法存储值?

    问题陈述 here http www spoj com problems EC SER 令 S 为无限整数序列 S0 a S1 b Si Si 2 Si 1 对于所有 i gt 2 你有两个整数 a 和 b 您必须回答有关序列中第 n 个元
  • 有没有办法阻止 SQL Express 2008 空闲?

    我使用 SQL Express 2008 作为 Web 应用程序的后端 问题是 Web 应用程序是在工作时间使用的 因此有时在午餐或休息时间 如果 20 分钟内没有用户登录 SQL Express 将进入空闲状态模式并释放其缓存 我知道这一
  • Java 中查看 ArrayList 是否包含对象的最有效方法

    我有一个 Java 对象的 ArrayList 这些对象有四个字段 我用其中两个字段来将对象视为与另一个对象相等 我正在寻找最有效的方法 给定这两个字段 以查看数组是否包含该对象 问题在于这些类是基于 XSD 对象生成的 因此我无法修改类本
  • 对 Java 中 *any* 类的所有实例进行全排序

    我不确定以下代码是否能确保 Comparator 的 Javadoc 中给出的所有条件 class TotalOrder
  • 从二叉堆中查找第 k 个最小元素的 O(klogk) 时间算法

    我们有一个 n 节点二叉堆 其中包含n不同的项目 根部的最小项目 为一个k lt n 发现O klogk 时间算法选择kth堆中的最小元素 O klogn 很明显 但无法找出O klogk 一 也许我们可以使用第二个堆 但不确定 好吧 你的
  • 实现软删除的最佳方法是什么?

    目前在做一个项目 我们要对大部分用户 用户角色 实现软删除 我们决定添加一个is deleted 0 数据库中每个表的字段并将其设置为 1 如果特定用户角色点击特定记录上的删除按钮 现在为了将来的维护 每个SELECT查询需要确保它们不包含

随机推荐

  • 当我更新顶点缓冲区对象时,应该如何更新它使用的顶点数组对象?

    通过 glBufferData 更新 VBO 尤其是其大小 可能会更改其物理内存地址 但不会更改 glGenBuffers 设置的缓冲区对象名称 VBO 通过调用 glVertexAttribPointer 链接到 VAO 其中有关 VBO
  • 在 Atom-shell 中禁用退格键

    我一直在搜索 interwebz 和 Atom shell 文档 试图找出如何禁用back 的功能backspace浏览器窗口中的键 我不想求助于 javascriptonkeydown监听器 有效 而是使用更本机的东西 更多地在应用程序级
  • 将值从文本框传递到控制器

    如何从文本框 电子邮件列表 获取值并将其发送到控制器 我一直在使用webforms 这是我第一次接触mvc View Html TextBox EmailList Html Action SendEmails 控制器 public Acti
  • 是否有用于 jasmine 角度控制器测试的生成器?

    我正在寻找能为角度控制器生成样板茉莉花测试的东西 看来您可以将控制器的依赖项拉出来并将它们放入规范中并节省一些输入 如果我是第一个有这个想法的人 我会感到震惊 但我找不到任何可以做到这一点的东西 除了一个似乎不起作用的自耕农项目 我最近在
  • ViewPager2 notificationItemChanged 的​​ FragmentStateAdapter 未按预期工作

    我正在将 ViewPager2 与 FragmentStateAdapter 一起使用 并且正在调用 notificationItemChanged position 但正如预期的那样 createFragment 方法不会再次调用 这是预
  • TinyMCE客户端验证问题

    我在使用 TinyMCE 编辑器时遇到问题 我的表单带有很少的文本字段和文本区域 tinymce 并启用了客户端验证 当我单击 保存 按钮时 所有文本字段都会进行验证 但需要单击两次才能验证tinymce内容 此外 验证仅在字段为空或条件不
  • 异步 ServiceController.WaitForStatus 如何执行?

    So ServiceController WaitForStatus https msdn microsoft com en us library system serviceprocess servicecontroller waitfo
  • 如何将javascript变量值分配给php变量[重复]

    这个问题在这里已经有答案了 我已经宣布了JavaScript 变量 var myJavascriptVar 12345 并且无法将该值分配给php多变的 myPhpVar myJavascriptVar 我知道 Ajax 可能可以解决我的问
  • 从现有 CXF Rest 服务生成 wadl

    我有使用 CXF 实现的工作 JAX RS 服务 如何生成 wadl 或者有类似球衣的东西吗http path to your restapp application wadl http path to your restapp appli
  • Facebook“无法从 URL 检索数据”

    当尝试对 facebook 进行图形 api 调用时 我收到以下错误 我知道我的回调 url 很好 因为当我在 facebook 调试器中测试它时 它可以很好地查看页面 我也在使用 Google App Engine 我真的认为这个错误可能
  • C++ 匿名变量

    为什么这不起作用 0 define CONCAT x y x y 1 2 define VAR LINE x 3 int CONCAT anonymous LINE x 4 5 define VAR LINE2 x 6 int anonym
  • 如何向图表添加适当的噪声

    我有一个 matlab 图表 类似轨迹的东西 我想向图表添加噪音 我尝试添加正态分布噪声 使用兰特 例如 x1 x a rand size x 对于 y 也是如此 结果附在下面 这不是我想要的 这给了我一个散点图 或者完全嘈杂的图 如下图所
  • 2D RPG 中的 XML、YAML 和 JSON [重复]

    这个问题在这里已经有答案了 我不知道对于 C 2D RPG 是否使用 XML YAML 或 JSON 这是我的想法 我需要一些简单的东西 不仅可以保存玩家数据 还可以保存环境数据 例如对象 x y 坐标 加载时间 日期 图形配置等 我需要一
  • 为什么 setLastModified(time) 对此文件不起作用?

    为什么下面代码中的文件日期没有改变 fLocal location C 中的现有文件 fLocal date 以长整型设置的日期 boolean x new File fLocal location setLastModified Long
  • 在 Ubuntu 中从 CSV 复制到 Postgres

    我的问题与此类似one https stackoverflow com q 14083311 1777654但在 Linux Mint 15 Ubuntu 中 我已经尝试过标准COPY http www postgresql org doc
  • Laravel:字符串数据,右截断:1406 数据对于列来说太长

    我有一张桌子 上面有一列 酒店 该项目是在 Laravel 5 4 中创建的 因此我使用了 Migrations table gt string hotel 50 这是 MYSQL VARCHAR 50 它运作良好 因为当我开发时 我使用了
  • Android 操作系统认为应用程序在调试期间处于断点时没有响应

    我不确定这是否是 Android studio 2 0 的问题 还是因为我正在开发的这个新应用程序中存在一些奇怪的项目设置 当我在调试期间停在断点处时 操作系统会向我显示一个对话框 指出应用程序没有响应 并让我选择等待或终止应用程序 然后过
  • 安全方法为无安全性,但不允许页面提取和文档组装

    我有一个非常奇怪的问题 我不确定问题出在哪里 我正在创建 PDF 但未设置任何安全限制或密码 当我在 Adob e Reader DC 中打开 PDF 并获取属性时 它确实将安全方法显示为 无安全 但是 文档组装和页面提取设置为不允许 PD
  • 即席查询和存储过程哪个更好? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • btree是如何存储在光盘上的?

    我知道如何在内存中实现b树 但不清楚如何在光盘中存储trie 我认为主要有两点区别 内存指针和磁盘地址之间的转换 看这个 插入新的k v项时如何拆分页面 在内存中很容易实现 Thanks 这完全取决于您使用的 DBMS 如果您想知道它是如何