繁体   English   中英

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

[英]How do databases physically store data on a filesystem?

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

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

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

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

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

不过,最后的问题很容易回答。 大多数数据库都为您提供了根据需要增加数据库或为数据库提供固定(或固定最大)大小的选项。 我还没有遇到过将底层数据自动拆分为多个文件的数据库引擎,尽管较新的面向列的数据库(例如 Vertica)可能会做类似的事情。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM