数据库如何在文件系统上物理存储数据?

Posted

技术标签:

【中文标题】数据库如何在文件系统上物理存储数据?【英文标题】:How do databases physically store data on a filesystem? 【发布时间】:2012-08-14 15:44:49 【问题描述】:

我需要知道数据库中的数据是如何存储在文件系统上的。我敢肯定,不同的数据库使用不同的数据存储方式,但我想知道一般规则是什么(如果有的话),以及在特定数据库的设置中可以更改什么。

    整个数据库是如何存储的?一个大文件还是一个表一个文件? 如果桌子很大怎么办?会被拆分成几个文件吗? 在这种情况下,文件的典型大小是多少?

【问题讨论】:

【参考方案1】:

这个问题的答案是依赖于数据库的依赖于实现的。以下是一些如何存储数据的示例:

作为每个数据库的单个文件。 (这是 SQL Server 的默认设置。) 使用单独的文件系统管理器,它可以是操作系统。 (mysql 有几个选项,名称类似于 InnoDB。) 为每个表使用单独的文件。 (如果我们认为 Access 是一个数据库。) 作为多个物理文件,分布在多个文件系统中,但表示为单个“文件”。 (例如,HIVE 使用并行文件系统来存储数据。)

但是,这些是默认配置。真实数据库通常允许您在多个物理设备之间拆分数据。 SQL Server 和 MySQL 称之为分区。 Oracle 称这个表空间。这些通常由了解系统性能要求的知识渊博的 DBA 设置。

不过,最后的问题很容易回答。大多数数据库都让您可以选择在需要空间时扩展数据库,或者为数据库提供固定(或固定的最大)大小。我还没有遇到会自动将基础数据拆分为多个文件的数据库引擎,尽管新的面向列的数据库(例如 Vertica)可能会做类似的事情。

【讨论】:

“为每个表使用单独的文件。(如果我们认为 Access 是一个数据库。)” Access 没有为每个表单独的文件,dBASE 有。 Access 不是,也从来不是数据库,它通常使用 ACE 或 Jet 数据库,这两者当然都是非常好的基于文件的数据库。 “一个文件”可以有多大? @GyuHyeonChoi 。 . .这取决于操作系统。 @GordonLinoff 请检查我的问题(***.com/questions/59478987/…)好吗?

以上是关于数据库如何在文件系统上物理存储数据?的主要内容,如果未能解决你的问题,请参考以下文章

oracle数据库的物理存储结构有那些,它们各自的作用?

pdm是啥文件

物理存储结构

sqlserver数据库的物理存储格式和逻辑存储格式

sqlserver表和库管理

Kafka数据存储