Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / IBM DB2, WebSphere, IMS, U2, etc Новый топик    Ответить
 Данные в snaptab  [new]
Andron
Member

Откуда: Cherepovets
Сообщений: 1816
Смотрю данные по активности использования таблиц и не понимаю: через get snapshot for tables данные по таблицам вижу, а в административном вью snaptab некоторых таблиц нет. Даже эксперимент провел - деактивировал базу, потом снова запустил и прочитал неск. таблиц - get snapshot данные по прочитанным таблицам выводит, а в snaptab их нету. Почему так может быть?
16 мар 11, 10:21    [10377452]     Ответить | Цитировать Сообщить модератору
 Re: Данные в snaptab  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4946
Andron,

1. Какая версия DB2?
2. Что выдают:
db2 get monitor switches | grep TABLE
db2 get dbm cfg | grep TABLE
3. Я правильно понял, что, выполнив:
select * from MY_SCHEMA.MY_TABLE fetch first 1 row only
вы не видите результатов в:
select * from sysibmadm.snaptab where tabschema='MY_SCHEMA' and tabname='MY_TABLE'
?
16 мар 11, 11:29    [10378079]     Ответить | Цитировать Сообщить модератору
 Re: Данные в snaptab  [new]
Andron
Member

Откуда: Cherepovets
Сообщений: 1816
1. Версия db2 v9.7.0.2

2. Переключатель для базы (включен для текущей сессии из которой и выполняю все запросы) Table Activity Information (TABLE) = ON 16.03.2011 10:09:26.339657
для инстанса выключен Table (DFT_MON_TABLE) = OFF

3. Да, результатов после того как таблица прочитана в snaptab нету, то же самое если смотреть через функцию snap_get_tab. Но в snaptab есть данные для других таблиц. Причем если например сделать удаление данных из тестовой таблицы то она появляется в snaptab, rows_written не 0, зато значение rows_reads у нее 0 несмотря на то что перед удалением данные выбирались из нее.
16 мар 11, 11:42    [10378198]     Ответить | Цитировать Сообщить модератору
 Re: Данные в snaptab  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4946
Andron
1. Версия db2 v9.7.0.2

2. Переключатель для базы (включен для текущей сессии из которой и выполняю все запросы) Table Activity Information (TABLE) = ON 16.03.2011 10:09:26.339657
для инстанса выключен Table (DFT_MON_TABLE) = OFF

3. Да, результатов после того как таблица прочитана в snaptab нету, то же самое если смотреть через функцию snap_get_tab. Но в snaptab есть данные для других таблиц. Причем если например сделать удаление данных из тестовой таблицы то она появляется в snaptab, rows_written не 0, зато значение rows_reads у нее 0 несмотря на то что перед удалением данные выбирались из нее.
Все эти sysibmadm.snap* и sysproc.snap* реагируют на соответствующие DFT_MON_* параметры инстанса.
Если параметр выключен, информация для показателей, от него зависящих, не собирается.
get snapshot реагирует на переключатели монитора, установленные в сессии.
Эти сессионные переключатели получают первоначальные значения от соотв. параметров инстанса и потом могут быть изменены командами update monitor switches, а не update dbm cfg.

Сделайте:
update dbm cfg using DFT_MON_TABLE ON immediate
и будет у вас эта таблица в выводе.
16 мар 11, 18:12    [10381747]     Ответить | Цитировать Сообщить модератору
 Re: Данные в snaptab  [new]
Andron
Member

Откуда: Cherepovets
Сообщений: 1816
[quot Mark Barinstein]
Andron
...
Сделайте:
update dbm cfg using DFT_MON_TABLE ON immediate
и будет у вас эта таблица в выводе.


Я уже так делал, включал DFT_MON_TABLE, потом включал в базе - не показывает данные по ROWS_READ все равно. Данные появляются только если сделан update или delete и только в столбце rows_written, rows_read остается равным 0 после нескольких выборок из таблицы.
18 мар 11, 08:39    [10389588]     Ответить | Цитировать Сообщить модератору
 Re: Данные в snaptab  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4946
[quot Andron]
Mark Barinstein
пропущено...


Я уже так делал, включал DFT_MON_TABLE, потом включал в базе - не показывает данные по ROWS_READ все равно. Данные появляются только если сделан update или delete и только в столбце rows_written, rows_read остается равным 0 после нескольких выборок из таблицы.
И после переустановки соединения с базой тоже?
В 9.7 можно также (и это более предпочтительно):
select rows_read from table(mon_get_table('MY_SCHEMA', 'MY_TABLE', -1))
18 мар 11, 11:13    [10390335]     Ответить | Цитировать Сообщить модератору
 Re: Данные в snaptab  [new]
Andron
Member

Откуда: Cherepovets
Сообщений: 1816
Mark Barinstein,

если использовать mon_get_table то row_reads показывает :)

И все же получается что имеет место баг с view snaptab?
18 мар 11, 14:09    [10391974]     Ответить | Цитировать Сообщить модератору
 Re: Данные в snaptab  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4946
Andron
И все же получается что имеет место баг с view snaptab?
У меня на 9.7.3 это не воспроизводится.
Что это за 9.7.0.2 версия у вас?
Что db2level выдаёт?
18 мар 11, 14:41    [10392208]     Ответить | Цитировать Сообщить модератору
 Re: Данные в snaptab  [new]
Andron
Member

Откуда: Cherepovets
Сообщений: 1816
DB21085I Instance "db2inst1" uses "32" bits and DB2 code release "SQL09072"
with level identifier "08030107".
Informational tokens are "DB2 v9.7.0.2", "s100514", "IP23088", and Fix Pack
"2".
Product is installed at "/opt/ibm/db2/V9.7".
18 мар 11, 14:44    [10392228]     Ответить | Цитировать Сообщить модератору
 Re: Данные в snaptab  [new]
Andron
Member

Откуда: Cherepovets
Сообщений: 1816
Теперь разбираюсь с mon_get_table, тут как выясняется тоже не все гладко:

db2 => select varchar(tabname, 20) as tabname, rows_read, table_scans from table(mon_get_table('DB2INST1', '', -1))

TABNAME ROWS_READ TABLE_SCANS
-------------------- -------------------- --------------------

0 record(s) selected.

db2 => select count(*) from employee

1
-----------
42

1 record(s) selected.

db2 => select varchar(tabname, 20) as tabname, rows_read, table_scans from table(mon_get_table('DB2INST1', '', -1))

TABNAME ROWS_READ TABLE_SCANS
-------------------- -------------------- --------------------
EMPLOYEE 0 0

1 record(s) selected.

db2 =>



Как видим несмотря на то что была выборка из employee, данные мониторинга об этом ничего не говорят.

Зато если сделать такой запрос:

db2 => select count (*) from staff

1
-----------
35

1 record(s) selected.

db2 => select varchar(tabname, 20) as tabname, rows_read, table_scans from table(mon_get_table('DB2INST1', '', -1))

TABNAME ROWS_READ TABLE_SCANS
-------------------- -------------------- --------------------
EMPLOYEE 0 0
STAFF 35 1

2 record(s) selected.



Как видим для таблицы staff мониторинг возвращает данные а для employee нет. Почему? Таблицы вроде обычные, из учебной схемы. Я бы списал все на какой нибудь кэш, где данные "застревают" но почему так избирательно?
21 мар 11, 11:19    [10400984]     Ответить | Цитировать Сообщить модератору
 Re: Данные в snaptab  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4946
Andron
Как видим для таблицы staff мониторинг возвращает данные а для employee нет. Почему? Таблицы вроде обычные, из учебной схемы. Я бы списал все на какой нибудь кэш, где данные "застревают" но почему так избирательно?
Может зависеть плана запроса.
Если план - index access only, то rows_read не будет увеличиваться.
У меня при select count(*) from employee именно index access only.
+ Access plan
Original Statement:
------------------
select count(*)
from employee


Optimized Statement:
-------------------
SELECT Q3.$C0
FROM
(SELECT COUNT(*)
FROM
(SELECT $RID$
FROM BARIN_M.EMPLOYEE AS Q1) AS Q2) AS Q3

Access Plan:
-----------
Total Cost: 0,0487617
Query Degree: 1

Rows
RETURN
( 1)
Cost
I/O
|
1
GRPBY
( 2)
0,0484113
0
|
42
IXSCAN
( 3)
0,0441799
0
|
42
INDEX: BARIN_M
XEMP2
Q1
21 мар 11, 12:04    [10401316]     Ответить | Цитировать Сообщить модератору
 Re: Данные в snaptab  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4946
Сравните с:
+ select count(*) from staff
Original Statement:
------------------
select count(*)
from staff


Optimized Statement:
-------------------
SELECT Q3.$C0
FROM
(SELECT COUNT(*)
FROM
(SELECT $RID$
FROM BARIN_M.STAFF AS Q1) AS Q2) AS Q3

Access Plan:
-----------
Total Cost: 7,60821
Query Degree: 1

Rows
RETURN
( 1)
Cost
I/O
|
1
GRPBY
( 2)
7,60786
1
|
35
TBSCAN
( 3)
7,60432
1
|
35
TABLE: BARIN_M
STAFF
Q1
21 мар 11, 12:08    [10401348]     Ответить | Цитировать Сообщить модератору
 Re: Данные в snaptab  [new]
Andron
Member

Откуда: Cherepovets
Сообщений: 1816
Действительно, если посмотреть в mon_get_index то для индекса XEMP2 у таблицы employee есть сканы, а у таблицы staff индексных сканирований нет. Спасибо, Марк!
21 мар 11, 12:38    [10401635]     Ответить | Цитировать Сообщить модератору
 Re: Данные в snaptab  [new]
Andron
Member

Откуда: Cherepovets
Сообщений: 1816
А как сбросить данные мониторинга, которые я получаю через функции, например mon_get_tab ? Reset monitor не сбрасывает.
22 мар 11, 09:10    [10406529]     Ответить | Цитировать Сообщить модератору
 Re: Данные в snaptab  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4946
Andron
А как сбросить данные мониторинга, которые я получаю через функции, например mon_get_tab ? Reset monitor не сбрасывает.
Эти показатели для функций mon_* реагируют на соотв. параметры mon_* БД.
db2 get db cfg for my_dbname| grep -i mon_
По каждому показателю в доке есть информация, при каком именно включённом параметре () информация начинает собираться.

Например, pool_data_l_reads:
В 'Table 1. Table Function Monitoring Information' (это для функций mon_*) для ф-ции MON_GET_BUFFERPOOL указано, что оно собирается, если параметр DATA OBJECT METRICS (MON_OBJ_METRICS) установлен в BASE.
Для ф-ции MON_GET_UNIT_OF_WORK этот же самый счётчик будет собираться, если параметр REQUEST METRICS (MON_REQ_METRICS) установлен в BASE.
Т.е. чтобы сбросить такой счётчик, надо выключить и включить (хотя бы в BASE) соотв. параметр БД.

Для rows_read написано, что для MON_GET_TABLE оно собирается всегда, т.е. вне зависимости от установленных параметров.
Т.е. чтобы сбросить такой счётчик, надо реактивировать БД (выгнать из неё всех, а потом пустить).
22 мар 11, 11:12    [10407246]     Ответить | Цитировать Сообщить модератору
Все форумы / IBM DB2, WebSphere, IMS, U2, etc Ответить