如何降低存储成本并提高大表的性能?

时间:2019-06-17 20:46:51

标签: oracle object amazon-s3 nosql rdbms

概述: 我们在数据库(Oracle)中有一个表,该表几乎占据了分配给数据库的总空间的80%。该特定表以JSON blob格式存储数据,并包含跟踪信息,主要与中央引擎在应用程序中的工作方式有关。

问题: 对于某些客户端,此跟踪信息的增长很快,以至于该表现在几乎包含了TB的跟踪信息。这引起了与存储成本高以及查询性能下降有关的担忧。

问题: 解决这种情况的最佳选择是什么:

  1. 使用NoSQL存储JSON blob数据吗?不确定是否可以解决费用。
  2. 将JSON blob数据存储在便宜的对象存储中,并使用Lucene / Elastic搜索等进行索引和搜索?我们确实有一个内部EMC对象存储设备(ECS),可以通过S3 API进行通信。 ECS比SAN存储便宜,但是我不确定性能。
  3. 使用Oracle分区将JSOB Blob存储在单独的表空间中吗?有时是DBA提出的建议,但是我不确定它是要解决问题的成本还是性能。
  4. 还有其他建议吗?

1 个答案:

答案 0 :(得分:0)

数据库压缩可能是快速减少存储量的最简单方法:

  1. LOB压缩。。如果您拥有“高级压缩”许可证,则可以为列启用压缩。这可能与建议3有关,除了更改表空间无关紧要。 (也许DBA指的是为压缩设置的表空间。但是我不认为表空间压缩会自动压缩LOB。)

    --These commands may take a long time to complete.
    alter table table_name modify column_name(a) (compress);
    alter table table_name move;
    
  2. UTL_COMPRESS.LZ_COMPRESS。。如果您没有高级压缩许可证,则可以使用软件包UTL_COMPRESS来压缩和解压缩数据。尽管这可能会大大改变表格的使用方式。