как проверить таблицу использует сколько места в DB2 - PullRequest
4 голосов
/ 14 ноября 2011

Есть ли способ в DB2 определить, что таблица потребляет, сколько общего пространства выделено для базового табличного пространства. "

Спасибо

Ответы [ 3 ]

4 голосов
/ 16 ноября 2011

Ваш вопрос создает ложную дихотомию, поскольку табличное пространство может быть создано без выделения ему ограниченного пространства. Ограничением может быть диск или общий ресурс, на котором находится табличное пространство. Но если вам известно пространство, выделенное для табличного пространства, или вам нужен только процент текущего размера табличного пространства, который использует таблица, то да, есть способ узнать.

SELECT * FROM SYScat.tables where tabname='mytable';

скажет вам, сколько страниц использует таблица.

Затем в командной строке: LiST TABLESPACES SHOW DETAIL скажет вам, сколько всего страниц в табличном пространстве и размер страницы в байтах.

Select * from sysibmadm.tbsp_utilization where tbsp_name='MyTblSpace' 

даст вам максимальный размер табличного пространства, если оно есть.

3 голосов
/ 11 мая 2015

DB2 запрашивает, чтобы проверить размер таблицы

select 
   a.CARD*(sum(b.AVGCOLLEN)+10)/1024/1024 as Tablesize_in_MB 
from 
   syscat.tables as a, syscat.columns as b 
where 
   a.TABNAME = b.TABNAME and b.TABNAME = 'TABLE_NAME' group by a.CARD

размер данных

select 
  char(date(t.stats_time))||' '||char(time(t.stats_time)) as statstime 
  ,substr(t.tabschema,1,8)||'.'||substr(t.tabname,1,24) as tabname 
  ,card as rows_per_table 
  ,decimal(float(t.npages)/ ( 1024 / (b.pagesize/1024)),9,2) as used_mb 
  ,decimal(float(t.fpages)/ ( 1024 / (b.pagesize/1024)),9,2) as allocated_mb 
from 
  syscat.tables t , syscat.tablespaces b 
where t.tbspace=b.tbspace 
order by 5 desc with ur

размер индекса

select 
  rtrim(substr(i.tabschema,1,8))||'.'||rtrim(substr( i.tabname, 1,24)) as tabname 
 ,decimal(sum(i.nleaf)/( 1024 / (b.pagesize/1024)),12,2) as indx_used_per_table_mb 
from 
   syscat.indexes i, syscat.tables t , syscat.tablespaces b 
where 
   i.tabschema is not null and i.tabname=t.tabname 
   and i.tabschema=t.tabschema and t.tbspace=b.tbspace 
group by 
   i.tabname,i.tabschema, b.pagesize order by 2 desc with ur
2 голосов
/ 14 мая 2015

Вы можете получить базовую таблицу физического размера из таблицы SYSIBMADM.ADMINTABINFO .

Команда приведена ниже.

db2 "SELECT SUBSTR ( TABSCHEMA , 1,15) как SCHEMA, SUBSTR ( TABNAME , 1,20) как TABLENAME, DATA_OBJECT_P_SIZE , INDEX_OBJECT_P_SIZE , LONG_OBJECT_P_SIZE , LOB_OBJECT_P_SIZE , XML_OBJECT_P_SIZE , (DATA_OBJECT_P_SIZE + INDEX_OBJECT_P_SIZE + LONG_OBJECT_P_SIZE + LOB_OBJECT_P_SIZE + XML_OBJECT_P_SIZE) как TOTAL_P_SIZE из SYSIBMADM.ADMINTABINFO, где TABNAME = 'имя_таблицы'"

Общий физический размер представляет собой сумму всех физических размеров объектов DATA, INDEX, LONG, LOB и XML OBJECT (_P_SIZE указывает на физический размер).

Вы не можете получить имя табличного пространства (даже если вы можете получить идентификатор табличного пространства) из SYSIBMADM.ADMINTABINFO, для этого вам нужно присоединиться к вышеуказанному запросу с помощью SYSCAT.TABLES .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...