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

时间:2012-08-18 12:29:54

标签: mysql sql-server database filesystems

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

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

2 个答案:

答案 0 :(得分:10)

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

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

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

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

答案 1 :(得分:4)

此链接可能有所帮助。

http://www.mkyong.com/mysql/where-does-mysql-stored-the-data-in-my-harddisk/

Stack中的其他人也为SQL Serve发布了以下答案:

How is data stored in SQL server?

希望有所帮助

Welshboy