Database 数据库如何工作?
我有很多关于数据库如何工作的问题Database 数据库如何工作?,database,database-design,Database,Database Design,我有很多关于数据库如何工作的问题 有一个包含数据的文件吗 如果有类似的情况,记录是存储在一起还是单独存储?如表cars都在一个文件中,或者每行有一个文件 如果每个文件有多行,数据库如何并行更新同一表中的不同行?e、 g.来自不同来源的100个同步更新请求 我在这里读到过,数据库通常使用二叉树,它们是否会重新构建它们?为每个请求从硬盘加载数据,然后在修改后保存 谢谢。对数据库中文件的所有写入都会进行缓冲,并以同步方式每隔几秒钟(以定义的间隔)向文件写入一次 Oracle在提交更新或插入之前使用重做
cars
都在一个文件中,或者每行有一个文件谢谢。对数据库中文件的所有写入都会进行缓冲,并以同步方式每隔几秒钟(以定义的间隔)向文件写入一次
Oracle在提交更新或插入之前使用重做日志跟踪更新或插入。内存中有一个重做日志缓冲区,其定义时间间隔为3秒,每3秒将作为单个进程写入文件。如前所述,所有这些问题的答案都是“视情况而定”。有许多实现,它们在重要细节上都有所不同
我不知道有哪个数据库管理系统使用纯二叉树。大多数DBMS提供多个不同的组织,但一个非常常见的是B+树(与二叉树相关,但不同);另一个是各种散列表组织。大多数DBMS的一个关键目标是避免经常从头开始重建,另一个目标是尽可能避免从磁盘读取—通过使用缓存等。同样,这是特定DBMS的“神奇酱汁”。作为一名对其工作原理知之甚少的开发人员,出于好奇,+1。所有这些问题的答案都是“视情况而定”。有很多类型的数据库,它们的实现方式都不同。您的问题取决于您所谈论的数据库。SQL、MySQL、MSAccess和列表继续。。。您是否考虑了特定的数据库?对于Informix使用的B+树,服务器在顺序扫描表时是否使用索引?BASIC的大多数实现都提供了以顺序或随机访问模式打开文件的功能。这取决于查询—条件和要检索的数据。有时,查询将扫描索引以进行第一次筛选,仅检索索引信息标识的少量记录的完整行(如果是仅索引的查询,甚至不涉及主数据)。有时,查询将扫描表(或者可能是表的范围分区片段)以获取数据。没有简单的规则规定哪一条最快;这取决于每个策略的成本统计数据和最佳估计。用户能否绕过优化器,定义自己的详细查询计划?这在某些情况下是有价值的,这取决于数据库管理系统。你可能永远都无法完全控制自己的行为;它们只会按照允许的行执行查询。您可以通过提示来影响但不一定控制查询的执行方式—DBMS之间的细节差别很大。不过,一般来说,您无法定义自己的详细查询计划。