powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Опять про игнорирование индексов
6 сообщений из 31, страница 2 из 2
Опять про игнорирование индексов
    #38920289
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ASukhov1986,

После команды explain надо запускать db2exfmt, а не db2expln.
Команда ниже выводит в файл exfmt.txt последний план запроса из explain таблиц.
Код: plaintext
db2exfmt -d CU242176 -1 -o exfmt.txt
Покажите содержимое этого файла.
...
Рейтинг: 0 / 0
Опять про игнорирование индексов
    #38920295
ASukhov1986
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark Barinstein,
да все работает
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
DB2 Universal Database Version 9.5, 5622-044 (c) Copyright IBM Corp. 1991, 2007
Licensed Material - Program Property of IBM
IBM DATABASE 2 Explain Table Format Tool



******************** EXPLAIN INSTANCE ********************

DB2_VERSION: 		09.05.0
SOURCE_NAME: 		SQLC2G13
SOURCE_SCHEMA: 		NULLID  
SOURCE_VERSION: 	
EXPLAIN_TIME: 		2015-03-29-12.29.01.991002 
EXPLAIN_REQUESTER: 	ANTON   

Database Context:
----------------
	Parallelism: 		None
	CPU Speed: 		9,446885e-008
	Comm Speed: 		0
	Buffer Pool size: 	149408
	Sort Heap size: 	4246
	Database Heap size: 	1333
	Lock List size: 	29802
	Maximum Lock List: 	60
	Average Applications: 	1
	Locks Available: 	1519902

Package Context:
---------------
	SQL Type: 		Dynamic
	Optimization Level: 	5
	Blocking: 		Block All Cursors
	Isolation Level: 	Cursor Stability



---------------- STATEMENT 1  SECTION 203 ----------------
	QUERYNO: 		1
	QUERYTAG: 		                    
	Statement Type: 	Select
	Updatable: 		No
	Deletable: 		No
	Query Degree: 		1

Profile Information:
--------------------
OPT_PROF: (Optimization Profile Name)
	METR.PROFIL1
STMTPROF: (Statement Profile Name)
	Guidelines for my simplest query

Original Statement:
------------------
SELECT * 
FROM METR.CSM_CUSTOMER 
WHERE DELETE_DATE IS NULL


Optimized Statement:
-------------------
SELECT Q1.CSM_CODE AS "CSM_CODE", Q1.CUSTOMER_ID AS "CUSTOMER_ID", 
        Q1.ENTITY_ID AS "ENTITY_ID", Q1.CREATE_DATE AS "CREATE_DATE", 
        Q1.DELETE_DATE AS "DELETE_DATE", Q1.CREATION_ID AS "CREATION_ID", 
        Q1.DELETION_ID AS "DELETION_ID", Q1.RECSTATE AS "RECSTATE", 
        Q1.CUSTOMER_TYPE_ID AS "CUSTOMER_TYPE_ID", Q1.CUSTOMER_NAME AS 
        "CUSTOMER_NAME", Q1.INN AS "INN", Q1.OKPO AS "OKPO", Q1.OKONH AS 
        "OKONH", Q1.OKATO AS "OKATO", Q1.POSTCODE AS "POSTCODE", Q1.REGION AS 
        "REGION", Q1.ADDRESS AS "ADDRESS", Q1.POSTCODE_FACT AS 
        "POSTCODE_FACT", Q1.REGION_FACT AS "REGION_FACT", Q1.ADDRESS_FACT AS 
        "ADDRESS_FACT", Q1.PHONE AS "PHONE", Q1.E_MAIL AS "E_MAIL", Q1.FAX AS 
        "FAX", Q1.DIRECTOR AS "DIRECTOR", Q1.DIRECTOR_POSITION AS 
        "DIRECTOR_POSITION", Q1.GLAVBUH AS "GLAVBUH", Q1.LOCAL_CODE AS 
        "LOCAL_CODE", Q1.BANK AS "BANK", Q1.BIK AS "BIK", Q1.BANK_ACCOUNT AS 
        "BANK_ACCOUNT", Q1.LORO_ACCOUNT AS "LORO_ACCOUNT", Q1.OFK_NAME AS 
        "OFK_NAME", Q1.OFK_INN AS "OFK_INN", Q1.OFK_KPP AS "OFK_KPP", 
        Q1.OFK_LACCOUNT AS "OFK_LACCOUNT", Q1.OFK_OKONH AS "OFK_OKONH", 
        Q1.OFK_OKPO AS "OFK_OKPO", Q1.OFK_BANK AS "OFK_BANK", Q1.OFK_BIK AS 
        "OFK_BIK", Q1.OFK_BANK_ACCOUNT AS "OFK_BANK_ACCOUNT", 
        Q1.OFK_LORO_ACCOUNT AS "OFK_LORO_ACCOUNT", Q1.OFK_REQUISITES AS 
        "OFK_REQUISITES", Q1.BANK_BALANCE AS "BANK_BALANCE", Q1.CONTACT_PHONE 
        AS "CONTACT_PHONE", Q1.CONTACT_PERSON AS "CONTACT_PERSON", Q1.KPP AS 
        "KPP", Q1.OKATO_5 AS "OKATO_5", Q1.ARCHSTATE AS "ARCHSTATE" 
FROM METR.CSM_CUSTOMER AS Q1 
WHERE Q1.DELETE_DATE IS NULL 

Access Plan:
-----------
	Total Cost: 		3566,44
	Query Degree:		1

            Rows 
           RETURN
           (   1)
            Cost 
             I/O 
             |
            19020 
           FETCH 
           (   2)
           3566,44 
           3453,57 
          /---+---\
      19020        19092 
     IXSCAN   TABLE: METR    
     (   3)    CSM_CUSTOMER
     127,098 
     66,4052 
       |
      19092 
 INDEX: METR    
 IDX_DELETE_DATE
...
Рейтинг: 0 / 0
Опять про игнорирование индексов
    #38920310
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ASukhov1986,

Для того, чтобы db2expln сообщить о профиле, вы можете использовать т.н. setup файл expln_setup.sql с содержимым:
Код: plaintext
SET CURRENT OPTIMIZATION PROFILE = METR.PROFIL1;
Вызывать надо так:
Код: plaintext
db2expln -d CU242176 -setup expln_setup.sql -g -i -z ; -terminal -statement "SELECT * FROM METR.CSM_CUSTOMER WHERE DELETE_DATE IS NULL"
...
Рейтинг: 0 / 0
Опять про игнорирование индексов
    #38920334
ASukhov1986
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark Barinstein,
у меня еще возник один вопрос:
А как удалить сформированный и сохраненный БД с помощью команды
Код: sql
1.
db2 explain all for SELECT * FROM METR.CSM_CUSTOMER WHERE DELETE_DATE IS NULL

(с учетом профиля оптимизации
Код: sql
1.
 SET CURRENT OPTIMIZATION PROFILE = METR.PROFIL1

) план моего запроса
Код: sql
1.
 SELECT * FROM METR.CSM_CUSTOMER WHERE DELETE_DATE IS NULL

?

Также я заметил следующую особенность:
если удалить профиль оптимизации METR.PROFIL1 из таблицы OPT_PROFILE то при получении плана запроса с помощью команды
Код: sql
1.
db2exfmt -d CU242176 -1 -o exfmt.txt

в файле плана есть следующие строчки:
Код: xml
1.
2.
3.
4.
5.
6.
Profile Information:
--------------------
OPT_PROF: (Optimization Profile Name)
	METR.PROFIL1
STMTPROF: (Statement Profile Name)
	Guidelines for my simplest query


т.е. как я понял инфа о профиле сохраняется в какой то таблице, где храниться информация о плане выполнения запроса?
...
Рейтинг: 0 / 0
Опять про игнорирование индексов
    #38920426
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ASukhov1986,

db2exfmt только форматирует и показывает содержимое explain таблиц. Сама она не изменяет их содержимое.
В этих таблицах могут содержатся несколько планов запросов, которые будут находится там до тех пор, пока вы их оттуда не удалите. Каждому плану запроса соответствует одна запись в EXPLAIN_INSTANCE. Остальные EXPLAIN_* таблицы связаны с ней внешними ключами с каскадным правилом удаления, поэтому, удалив запись из EXPLAIN_INSTANCE, вы удалите и все связанные записи из дочерних.
Если вы не заставляете db2 помещать планы запросов в эти таблицы другими средствами, db2exfmt с теми же параметрами будет вам всегда возвращать одно и то же.
Если вы удалили профиль METR.PROFIL1, то, чтобы изменения подействовали на оптимизатор, надо сбросить кэш профиля командой:
Код: sql
1.
FLUSH OPTIMIZATION PROFILE CACHE METR.PROFIL1

и повторно получить план запроса (например, командой EXPLAIN). После этого вытащить план запроса (например, утилитой db2exfmt).
...
Рейтинг: 0 / 0
Опять про игнорирование индексов
    #38920450
ASukhov1986
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark Barinstein,
большое спасибо!
...
Рейтинг: 0 / 0
6 сообщений из 31, страница 2 из 2
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Опять про игнорирование индексов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]