【问题标题】:In DB2 Database, How to find out the actual storage size of data in varchar column?在 DB2 数据库中,如何找出 varchar 列中数据的实际存储大小?
【发布时间】:2013-04-25 09:46:07
【问题描述】:

我是 DB2 新手,我正在寻找一个类似 memory_size(COLUMN_NAME) 的函数来返回特定行的该列所占用的字节数。

示例:我有一个名为 'Address' 的列,属于 VARCHAR(50) 数据类型,数据存储为 ' Fountain Street, ZIP-12345',函数应该返回这 26 个字符占用的内存,不是总列大小也不是数据长度。

谢谢!

【问题讨论】:

  • length() 也可以处理多字节字符集(对于单字节字符集,长度的“内存占用”。见手册:pic.dhe.ibm.com/infocenter/db2luw/v9r7/…跨度>
  • 参数“OCTET”很有帮助。它给出字节数。还获得了 OCTET_LENGTH 功能。谢谢!

标签: db2


【解决方案1】:

您可以通过目录找到列的精度(长度将查询数据库目录)。但是,实际存储大小会有所不同。

你无法推断出类似的东西

cardinality * (leght(column1) + lenght(column2) + ...) = occupied storage

还有许多其他因素会影响存储。

此外,问题的标题是存储大小(似乎是表空间 -> 容器),但在正文中您正在谈论内存(缓冲池),而这些东西在数据库中是不同的。

“内存占用”是什么意思?列精度还是存储使用量?

【讨论】:

  • 我想找出用于存储数据的实际字节数。不是长度。请参阅问题中给出的示例。
  • 视情况而定。如果激活了压缩,那么您将无法知道您的数据占用了多少空间。此外,页面大小有很多开销,DB2 不会为单行分配空间,而是为扩展区分配空间。那么你想知道什么?
猜你喜欢
  • 2011-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-11
  • 2011-08-07
  • 1970-01-01
相关资源
最近更新 更多