如何确定在表空间中保存数据所需的大小?

时间:2015-09-02 10:19:32

标签: database oracle-sqldeveloper

我对表空间有些困惑,有哪些要求决定了它保存数据所需的大小。

我已经阅读了文档和许多文章,包括有关表空间的stackoverflow中的答案,但我仍然没有得到它。

假设我要创建3个表:

  
      
  • 客户
  •   
  • 产品
  •   
  • 销售
  •   

上述架构是否会影响您为表空间选择的大小?还是完全无关紧要?如果它不相关,那么在这种情况下相关的是什么?

有人可以用简单的语言解释对这项研究不熟悉的人。

1 个答案:

答案 0 :(得分:1)

分配给表空间的数据文件的大小(和数量)取决于您将要存储在表中的数据量。在大多数组织中,它还取决于存储管理员更喜欢使用的块大小,获取额外存储空间所需的时间以及其他组织特定的信息位。

估计表格的大小可能会有点复杂,具体取决于您想要获得的距离以及您对数据的了解程度。但是,为了估计要分配给表空间的数据文件的大小,通常可以获得非常基本的估计,然后只监视实际利用率。

我们假设您的customer表格中有一个customer_id列是一个数字标识符,它有一个name列,其平均值为30个字符,以及create_date告诉您何时创建它。粗略地说,这意味着每行需要7个字节用于create_date,30个字节用于name,假设customer_id平均需要5个字节,总共42个字节。如果我们期望在前6个月拥有1,000,000个客户(我们是一群乐观的客户),我们预计我们的桌面大小将达到42 MB。如果我们重复表空间中其他表的过程并将结果相加,那么我们就可以猜测我们需要分配多大的数据来覆盖前6个月的操作。

当然,实际上有很多并发症。您不能只添加列的大小来获取行的大小。您必须弄清楚块中有多少行,这可能取决于数据如何随时间变化的模式。我忽略了pctfree之类的东西,为将来的行更新保留了空间。再加上你估计你将要拥有多少行以及各种字符串的大小很少是特别准确的。因此,您提出的估计值非常粗糙。但是,在这种情况下,即使你以2倍的比例退出,一般来说也不是那么大的交易。完成初始分配后,您将要监控实际使用的空间大小。因此,如果您使用的空间超出了猜测的范围,您可以随时进入并添加文件,增加文件大小等。