2013-04-25 70 views
0

我是DB2的新手,我正在寻找像memory_size(COLUMN_NAME)这样的函数来返回特定行中该列占用的字节数。在DB2数据库中,如何找出varchar列中数据的实际存储大小?

实施例:我有一个名为“地址” VARCHAR(50)数据类型的 &数据被存储为列“喷泉街,ZIP-12345”,函数应该返回存储器占用由这26个字符组成,不是总列大小也不是数据的长度。

谢谢!

+0

'length()'还可以处理多字节字符集(对于单字节字符集,长度**是**“占用的内存”。请参见手册:http://pic.dhe.ibm.com /infocenter/db2luw/v9r7/index.jsp?topic=%2Fcom.ibm.db2.luw.sql.ref.doc%2Fdoc%2Fr0000818.html – 2013-04-25 09:54:57

+0

参数'OCTET'有帮助,它提供了字节计数,并且获得了OCTET_LENGTH函数。 – jaczjill 2013-04-25 10:21:30

回答

0

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

你不能推断出类似

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

存在影响存储许多其他的事实。

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

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

+0

我想知道用于存储数据的实际字节数,而不是长度,请参阅我在问题中给出的示例 – jaczjill 2013-04-26 07:06:31

+1

这取决于如果激活压缩,则无法知道数据的空间大小另外,页面大小有很多开销,DB2不会为单个行分配空间,而是为扩展分配空间,那么您想知道什么? – AngocA 2013-04-26 12:19:08

相关问题