2013-04-25 47 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

相關問題