AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 571
Accepted
ILX
ILX
Asked: 2011-01-12 23:54:43 +0800 CST2011-01-12 23:54:43 +0800 CST 2011-01-12 23:54:43 +0800 CST

z/OS 上 DB2 v9 上的 BLOB

  • 772

在 z/OS 上的 DB2 v9(或更高版本)上使用 BLOB 有什么优缺点?

澄清:是否有一些限制(如对重组、HA 的影响)?

我们想存储大量文件:在长达 6 个月的时间内存储 1000 万个文件。大多数文件应该在 20k 到 100k 之间,但也可能有例外(大于 1MB 的文件)。大多数文件应该是 XML,但其中一些可能包含数字签名或其他二进制数据。

db2
  • 1 1 个回答
  • 4321 Views

1 个回答

  • Voted
  1. Best Answer
    bhamby
    2011-12-23T08:09:05+08:002011-12-23T08:09:05+08:00

    LOB在 DB2 中使用大对象时需要记住几件事。

    首先,当你创建一个LOB列时,这个列只包含相关的信息LOB,而不是 的数据LOB。您在其中创建LOB列的表(基表)必须在其ROWID上创建一个列,该列将用于定位LOB数据。如果您没有显式创建ROWID列,DB2 将为您创建一个隐藏ROWID列。如果要向现有表添加列并且要使用显式ROWID列,则应ROWID在LOB. 否则,当你创建的时候LOB,DB2 会创建隐含的ROWID,然后你第二个ALTER添加的ROWID会创建第二个ROWID柱子。DB2 将确保这两列始终相同,但会占用空间。:-)

    其次,对于LOB您在表上创建的每一列,必须定义一个单独的LOB表空间(有时称为辅助表空间)。因此,如果您计划在LOB一张表上有 3 列,则必须创建 3 个LOB表空间来存储您的大对象。这些表空间必须与关联的基表位于同一数据库中。

    此外,如果您的基表是分区的,那么您必须为每个分区的每个 LOB列创建一个LOB表空间和一个辅助表。

    具有单个分区的单个LOB表空间最多可包含 16TB 的LOB数据。

    第三,每个辅助表都必须定义一个索引。

    这是一个创建辅助表的示例(任何以开头的YOUR_都应该替换为正确的值):

    CREATE LOB TABLESPACE YOUR_LOB_TABLESPACE
      IN YOUR_DATABASE
      LOG NO;
    COMMIT;
    CREATE AUXILIARY TABLE YOUR_AUX_TABLE
      IN YOUR_DATABASE.YOUR_LOB_TABLESPACE
      STORES YOUR_BASE_TABLE
      COLUMN YOUR_LOB;
    CREATE UNIQUE INDEX XYOUR_LOB
      ON YOUR_AUX_TABLE;
    COMMIT;
    

    最后,在加载数据时,如果LOB列和基表行的总长度小于 32KB,则可以使用该LOAD实用程序将数据放入。否则,您必须使用 SQL 语句,例如INSERTor MERGE。

    IBM 对 LOB 表空间中的页面大小有一些建议。 LOB 表空间中的每页只能LOB存储一个,因此您需要根据所存储文件的平均大小进行一些数学运算,以最大限度地减少丢失的磁盘空间。例如,如果您有一个平均大小为 17KB 的 LOB,您可能希望使用 4KB 的页面空间。您将使用 5 个页面(20KB),与 7KB 的 8KB 页面 (24 - 17) 或 15KB 的 16 或 32 KB 页面大小相比,这只会浪费 3KB 的磁盘空间。

    使用 LOB 的一个优点VARCHAR (FOR BIT DATA)是,由于数据存储在单独的表空间中,因此针对基表的表空间扫描会快得多。

    参考文献: 1 , 2


    说了这么多,如果您计划大部分数据是 XML,那么我可能会提到有一个实际的XML 数据类型(并内置 XML 解析引擎,称为pureXML)。

    您可以在线(和以 PDF 格式)查看有关在 DB2 中使用 XML 的完整指南。

    • 2

相关问题

  • 解释计划中的 HSJOIN 是什么意思?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    您如何显示在 Oracle 数据库上执行的 SQL?

    • 2 个回答
  • Marko Smith

    如何选择每组的第一行?

    • 6 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    我可以查看在 SQL Server 数据库上运行的历史查询吗?

    • 6 个回答
  • Marko Smith

    如何在 PostgreSQL 中使用 currval() 来获取最后插入的 id?

    • 10 个回答
  • Marko Smith

    如何在 Mac OS X 上运行 psql?

    • 11 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Marko Smith

    将数组参数传递给存储过程

    • 12 个回答
  • Martin Hope
    Manuel Leduc PostgreSQL 多列唯一约束和 NULL 值 2011-12-28 01:10:21 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Stuart Blackler 什么时候应该将主键声明为非聚集的? 2011-11-11 13:31:59 +0800 CST
  • Martin Hope
    pedrosanta 使用 psql 列出数据库权限 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST
  • Martin Hope
    BrunoLM Guid vs INT - 哪个更好作为主键? 2011-01-05 23:46:34 +0800 CST
  • Martin Hope
    bernd_k 什么时候应该使用唯一约束而不是唯一索引? 2011-01-05 02:32:27 +0800 CST
  • Martin Hope
    Patrick 如何优化大型数据库的 mysqldump? 2011-01-04 13:13:48 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve