Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Подскажите с оптимизацией.....
|
|||
|---|---|---|---|
|
#18+
Есть 2 таблицы: DBADMIN.DOCUMENT (ID BIGINT NOT NULL DEFAULT 0, SHOP_ID BIGINT NOT NULL, PARTNER_ID BIGINT NOT NULL, DOC_NUM BIGINT NOT NULL, CLASS_NAME BIGINT NOT NULL, DOC_TIME TIMESTAMP NOT NULL DEFAULT CURRENT TIMESTAMP, ACPT SMALLINT NOT NULL DEFAULT 0, SUM_UCH DECIMAL(20, 2) NOT NULL DEFAULT 0, SUM_ZAK DECIMAL(20, 2) NOT NULL DEFAULT 0, SUM_PROD DECIMAL(20, 2) NOT NULL DEFAULT 0, SUM_FAKT DECIMAL(20, 2) NOT NULL DEFAULT 0 ) DBADMIN.STRINGS (ID BIGINT NOT NULL DEFAULT 0, SHOP_ID BIGINT NOT NULL, PARTNER_ID BIGINT NOT NULL, DOC_ID BIGINT NOT NULL, TOVAR_ID BIGINT NOT NULL, PARTIJA_ID BIGINT NOT NULL DEFAULT 0, STRING_TIME TIMESTAMP NOT NULL DEFAULT CURRENT TIMESTAMP, CLASS_NAME BIGINT NOT NULL, ACPT SMALLINT NOT NULL DEFAULT 0, PRICE_UCH DECIMAL(20, 2) NOT NULL DEFAULT 0, PRICE_ZAK DECIMAL(20, 2) NOT NULL DEFAULT 0, PRICE_PROD DECIMAL(20, 2) NOT NULL DEFAULT 0, PRICE_FAKT DECIMAL(20, 2) NOT NULL DEFAULT 0, TOVAR_MOV DECIMAL(20, 3) NOT NULL DEFAULT 0 ) В DBADMIN.DOCUMENT есть primary key ID. В DBADMIN.STRINGS есть foreign key DBADMIN.STRINGS.DOC_ID = DBADMIN.DOCUMENT.ID В таблице DBADMIN.DOCUMENT порядка 1,5 млн. записей, DBADMIN.STRINGS порядка 9 млн.записей. Запускаю запрос вида: select b.tovar_id, sum(b.tovar_mov) as kolich from dbadmin.strings b, dbadmin.document c where b.doc_id = c.id and c.class_name = 43 and b.acpt = 0 and c.shop_id = 5 group by b.tovar_id Почему не хватаются индексы для DBADMIN.STRINGS. Explain показывает, что идет Table access full. Подскажите чего переделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2007, 13:50 |
|
||
|
Подскажите с оптимизацией.....
|
|||
|---|---|---|---|
|
#18+
1. Какие есть индексы есть на STRINGS и DOCUMENT? 2. Собрана ли статистика на таблицы и индексы? 3. ( select count(1) from dbadmin.document c where c.class_name = 43 and c.shop_id = 5 ) = ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2007, 14:43 |
|
||
|
Подскажите с оптимизацией.....
|
|||
|---|---|---|---|
|
#18+
1. На dbadmin.document есть индекс ind15_doc (id, class_name, shop_id). На dbadmin.strings есть индексы, которые используются для других запросов.... С полем doc_id есть индекс, который создался при создании foreign key 2. Реорганизация и сбор статистики произведен. 3. Запрос возвращает 5153 записи, данные целиком выбираются по индексу ind15_doc. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2007, 14:52 |
|
||
|
Подскажите с оптимизацией.....
|
|||
|---|---|---|---|
|
#18+
Правда на индексе (doc_id) cardinality стоит 400000.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2007, 15:02 |
|
||
|
Подскажите с оптимизацией.....
|
|||
|---|---|---|---|
|
#18+
Когда изменяю класс оптимизации до 0 или 1, запрос работает на порядок быстрее По умолчанию стоит 5 класс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2007, 15:11 |
|
||
|
Подскажите с оптимизацией.....
|
|||
|---|---|---|---|
|
#18+
TORT1. На dbadmin.document есть индекс ind15_doc (id, class_name, shop_id). На dbadmin.strings есть индексы, которые используются для других запросов.... С полем doc_id есть индекс, который создался при создании foreign key 2. Реорганизация и сбор статистики произведен. 3. Запрос возвращает 5153 записи, данные целиком выбираются по индексу ind15_doc.Для такого запроса вам нужен индекс по (class_name, shop_id). На первое место поставьте поле с наибольшей cardinality. P.S.: При создании foreign key индекс на дочернюю таблицу не создается автоматически. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2007, 15:23 |
|
||
|
Подскажите с оптимизацией.....
|
|||
|---|---|---|---|
|
#18+
Создал индекс на dbadmin.document по (class_name, shop_id)... Собрал статистику... Эффект отрицательный.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2007, 15:34 |
|
||
|
Подскажите с оптимизацией.....
|
|||
|---|---|---|---|
|
#18+
Сейчас старый индекс удалю, перепроверю результат.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2007, 15:35 |
|
||
|
Подскажите с оптимизацией.....
|
|||
|---|---|---|---|
|
#18+
После удаления старого индекса стало немного легче.... Надо по-лучше потестировать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2007, 15:42 |
|
||
|
Подскажите с оптимизацией.....
|
|||
|---|---|---|---|
|
#18+
TORTСоздал индекс на dbadmin.document по (class_name, shop_id)... Собрал статистику... Эффект отрицательный....Подозрительно все это... Что выдает у вас Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2007, 15:42 |
|
||
|
Подскажите с оптимизацией.....
|
|||
|---|---|---|---|
|
#18+
У меня DB2 v.8.1.9... В syscat.indexes нет столбца indcard... Какой подсунуть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2007, 15:47 |
|
||
|
Подскажите с оптимизацией.....
|
|||
|---|---|---|---|
|
#18+
TORTУ меня DB2 v.8.1.9... В syscat.indexes нет столбца indcard... Какой подсунуть?FULLKEYCARD ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2007, 15:55 |
|
||
|
Подскажите с оптимизацией.....
|
|||
|---|---|---|---|
|
#18+
DOCUMENT +ID 2007-11-21 10:11:18.75 1610933 DOCUMENT +SHOP_ID 2007-11-21 10:11:18.75 34 DOCUMENT +PARTNER_ID 2007-11-21 10:11:18.75 1294 DOCUMENT +DOC_NUM 2007-11-21 10:11:18.75 292715 DOCUMENT +CLASS_NAME 2007-11-21 10:11:18.75 85 DOCUMENT +DOC_TIME 2007-11-21 10:11:18.75 1437707 DOCUMENT +ACPT 2007-11-21 10:11:18.75 2 DOCUMENT +ID+SHOP_ID+ACPT 2007-11-21 10:11:18.75 1610933 DOCUMENT +ID+DOC_TIME+SHOP_ID 2007-11-21 10:11:18.75 1610933 DOCUMENT +ID+SHOP_ID+DOC_TIME+ACPT 2007-11-21 13:16:25.937 1611757 DOCUMENT +ID+PARTNER_ID+ACPT+CLASS_NAME 2007-11-21 10:11:18.75 1610933 DOCUMENT +SHOP_ID+DOC_TIME+ID 2007-11-21 10:11:18.75 1610933 DOCUMENT +SHOP_ID+PARTNER_ID+CLASS_NAME 2007-11-21 10:11:18.75 26415 DOCUMENT +CLASS_NAME+SHOP_ID 2007-11-21 15:41:20.89 1046 STRINGS +ID 2007-11-21 00:24:27.281 6851709 STRINGS +DOC_ID 2007-11-21 00:24:27.281 412979 STRINGS +SHOP_ID 2007-11-21 00:24:27.281 33 STRINGS +TOVAR_ID 2007-11-21 00:24:27.281 51689 STRINGS +SHOP_ID+STRING_TIME 2007-11-21 00:24:27.281 284579 STRINGS +CLASS_NAME 2007-11-21 00:24:27.281 19 STRINGS +PARTIJA_ID 2007-11-21 00:24:27.281 3796526 STRINGS +DOC_ID+TOVAR_ID 2007-11-21 00:24:27.281 5171940 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2007, 16:07 |
|
||
|
Подскажите с оптимизацией.....
|
|||
|---|---|---|---|
|
#18+
Это вот очень странно: STRINGS +DOC_ID 2007-11-21 00:24:27.281 412979 Пересоберите статистику на этот индекс. runstats on table db2admin.strings for detailed index <index_name> Что этот запрос после runstats выдает? Какой план запроса теперь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2007, 16:35 |
|
||
|
Подскажите с оптимизацией.....
|
|||
|---|---|---|---|
|
#18+
Mark, Вам кажется странным, что в strings идентификаторов документов меньше, чем в document? Это объясняется тем, что в document есть записи, которые not in (select doc_id from strings group by doc_id)..... На всякий случай пересобрал STRINGS +DOC_ID 2007-11-21 16:58:24.250000 413346 Скорость запроса не зменилась... Может тут логический косяк при проектировании? Надо было разносить по отдельным таблицам два типа document'ов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2007, 16:53 |
|
||
|
Подскажите с оптимизацией.....
|
|||
|---|---|---|---|
|
#18+
Может что в настройках параметров базы или движка? Кучи какой-нибудь недостаточно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2007, 18:06 |
|
||
|
Подскажите с оптимизацией.....
|
|||
|---|---|---|---|
|
#18+
Попробуйте 2 варианта: Почитать тут или сделать mqt типа: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2007, 19:00 |
|
||
|
Подскажите с оптимизацией.....
|
|||
|---|---|---|---|
|
#18+
Mark, я правильно понимаю, что в ссылке указываются способы оказания влияния на выбор плана оптимизатором? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2007, 10:09 |
|
||
|
Подскажите с оптимизацией.....
|
|||
|---|---|---|---|
|
#18+
TORTMark, я правильно понимаю, что в ссылке указываются способы оказания влияния на выбор плана оптимизатором?Да. Похоже, что сам оптимизатор выбирает неправильный план, основываясь на статистике. Попробуйте сделать Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2007, 10:18 |
|
||
|
Подскажите с оптимизацией.....
|
|||
|---|---|---|---|
|
#18+
Это для 8 версии актуально? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2007, 10:20 |
|
||
|
Подскажите с оптимизацией.....
|
|||
|---|---|---|---|
|
#18+
TORTЭто для 8 версии актуально?В статье написано, что актуально для v8.1.9 и выше. Сам не пробовал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2007, 10:26 |
|
||
|
Подскажите с оптимизацией.....
|
|||
|---|---|---|---|
|
#18+
volatile изменений в план запроса не дал... Индекс по-прежнему не подхватывает... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2007, 10:33 |
|
||
|
Подскажите с оптимизацией.....
|
|||
|---|---|---|---|
|
#18+
Чего-то не пойму.... Профайл создается для клиента или для сервера? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2007, 10:51 |
|
||
|
Подскажите с оптимизацией.....
|
|||
|---|---|---|---|
|
#18+
На сервере. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2007, 10:55 |
|
||
|
|

start [/forum/topic.php?fid=43&msg=34955569&tid=1604189]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
36ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
64ms |
get tp. blocked users: |
1ms |
| others: | 204ms |
| total: | 342ms |

| 0 / 0 |
