Database 数据库如何工作?

Database 数据库如何工作?,database,database-design,Database,Database Design,我有很多关于数据库如何工作的问题 有一个包含数据的文件吗 如果有类似的情况,记录是存储在一起还是单独存储?如表cars都在一个文件中,或者每行有一个文件 如果每个文件有多行,数据库如何并行更新同一表中的不同行?e、 g.来自不同来源的100个同步更新请求 我在这里读到过,数据库通常使用二叉树,它们是否会重新构建它们?为每个请求从硬盘加载数据,然后在修改后保存 谢谢。对数据库中文件的所有写入都会进行缓冲,并以同步方式每隔几秒钟(以定义的间隔)向文件写入一次 Oracle在提交更新或插入之前使用重做

我有很多关于数据库如何工作的问题

  • 有一个包含数据的文件吗

  • 如果有类似的情况,记录是存储在一起还是单独存储?如表
    cars
    都在一个文件中,或者每行有一个文件

  • 如果每个文件有多行,数据库如何并行更新同一表中的不同行?e、 g.来自不同来源的100个同步更新请求

  • 我在这里读到过,数据库通常使用二叉树,它们是否会重新构建它们?为每个请求从硬盘加载数据,然后在修改后保存


    谢谢。

    对数据库中文件的所有写入都会进行缓冲,并以同步方式每隔几秒钟(以定义的间隔)向文件写入一次


    Oracle在提交更新或插入之前使用重做日志跟踪更新或插入。内存中有一个重做日志缓冲区,其定义时间间隔为3秒,每3秒将作为单个进程写入文件。

    如前所述,所有这些问题的答案都是“视情况而定”。有许多实现,它们在重要细节上都有所不同

  • 一个或多个文件。这些文件的组织是与特定DBMS相关联的“魔力酱”的一部分

  • 数据的存储方式略有不同,但可以这样说,很少或没有数据库管理系统每行使用一个文件进行一般工作。除此之外,数十亿(万亿,…)记录的名称管理不值得考虑

  • 这也是特定DBMS的“魔力酱”的关键部分。他们都这样做;有很多不同的方法可以做到这一点。SQLite使用了与Informix、DB2、Oracle、Sybase、MS SQL Server、MySQL、PostgreSQL、Teradata等截然不同的技术。。。使用的技术很多;一些使用锁定,另一些使用基于时间戳或多版本并发控制。不同的DBMS有不同的序列化属性


  • 我不知道有哪个数据库管理系统使用纯二叉树。大多数DBMS提供多个不同的组织,但一个非常常见的是B+树(与二叉树相关,但不同);另一个是各种散列表组织。大多数DBMS的一个关键目标是避免经常从头开始重建,另一个目标是尽可能避免从磁盘读取—通过使用缓存等。同样,这是特定DBMS的“神奇酱汁”。

    作为一名对其工作原理知之甚少的开发人员,出于好奇,+1。所有这些问题的答案都是“视情况而定”。有很多类型的数据库,它们的实现方式都不同。您的问题取决于您所谈论的数据库。SQL、MySQL、MSAccess和列表继续。。。您是否考虑了特定的数据库?对于Informix使用的B+树,服务器在顺序扫描表时是否使用索引?BASIC的大多数实现都提供了以顺序或随机访问模式打开文件的功能。这取决于查询—条件和要检索的数据。有时,查询将扫描索引以进行第一次筛选,仅检索索引信息标识的少量记录的完整行(如果是仅索引的查询,甚至不涉及主数据)。有时,查询将扫描表(或者可能是表的范围分区片段)以获取数据。没有简单的规则规定哪一条最快;这取决于每个策略的成本统计数据和最佳估计。用户能否绕过优化器,定义自己的详细查询计划?这在某些情况下是有价值的,这取决于数据库管理系统。你可能永远都无法完全控制自己的行为;它们只会按照允许的行执行查询。您可以通过提示来影响但不一定控制查询的执行方式—DBMS之间的细节差别很大。不过,一般来说,您无法定义自己的详细查询计划。