|
|
|
Оптимизация
|
|||
|---|---|---|---|
|
#18+
Узловая АТС. Соединена с ГТС по 11 маршруту, 90 соединительных линий на маршруте. Звонки АТС фиксируются в таблице tarif_string: n_pp integer основной ключ data_call date дата звонка (индексное) sl_entry smallint номер маршрута sl_entry_nom smallint номер соединительной линии существуют и другие поля. Просмотреть загрузку линий на определенную дату: select sl_entry_nom,count(*) from tarif_string_c where date_call='2004-11-16' and sl_entry=11 group by sl_entry_nom подхватывает индекс по дате звонка – никаких проблем. select sl_entry_nom,count(*) from tarif_string_c where date_call='2004-11-16' and sl_entry=11 group by sl_entry_nom order by sl_entry_nom от индекса отказывается и начинает сканировать всю таблицу. Версия ASA 9. На 5 и 7 версии проблем не было, индекс по date_call подхватывался. Звонки хранятся 90 дней. Т.е. на дату примерно 1,15% записей. Звонки 11 маршрута - примерно 15% записей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2004, 11:13 |
|
||
|
Оптимизация
|
|||
|---|---|---|---|
|
#18+
Сделайте пожалуйста Код: plaintext Код: plaintext Плюс сообщите точную версию ASA, так как оптимизаторы 9.0.0, 9.0.1 и 9.0.2 немного работают по разному, самый правильный и точный сейчас на текущий момент я считаю оптимизатор 9.0.2, который умеет делать оценку в планах использования внутренних временных таблиц (work table) и более граммотно определяет когда лучше использовать индекс, когда hash-алгоритм, а когда и просто table scan. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2004, 11:56 |
|
||
|
Оптимизация
|
|||
|---|---|---|---|
|
#18+
CREATE STATISTIC не помогло ALTER DATABASE CALIBRATE аналогично Версия 9.0.2 Дело как раз в том, что раньше обходился одним индексом - по дате. Выборки различные, не только входящим, но и по исходящим СЛ, просто по номерам телефонов и т.д. Индекс по дате - удачен, т.к.отсекает сразу же 98,85% записей. Создавать составные индексы - увеличивать базу и время вставки строк. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2004, 12:43 |
|
||
|
Оптимизация
|
|||
|---|---|---|---|
|
#18+
Вышлите пожалуйста на ящик указанный в моем профиле графический план Вашего запроса. Очень интересно посмотреть, почему оптимизатор так поступает. P.S. На всякий пожарный - посмотреть как его сохранить можно здесь . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2004, 13:09 |
|
||
|
Оптимизация
|
|||
|---|---|---|---|
|
#18+
Тоже биллингист :) Сталкивался с похожей ситуацией, помогало только принудительное использование индекса Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2004, 13:36 |
|
||
|
Оптимизация
|
|||
|---|---|---|---|
|
#18+
Пока смотрю сразу - попробуйте поставить опцию БД "Optimization_Goal" на "All Rows". Насчет максимального приоритета - это погорячились, интересно, а ОС то должна работать сама ? Очень большая фрагментация файла БД, обязательно необходима дефрагментация диска. Есть ли в БД достаточно таблиц с BLOB-ами ? Если нет, то думаю размер страницы 16 кб не уместен и для такой БД лучше подошел бы размер 8 кб. Рекомендую через ASTEMP переназначить хранение временных файлов в специально созданную директорию вместо их хранения в в профильных стандартных папках W2K. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2004, 14:25 |
|
||
|
Оптимизация
|
|||
|---|---|---|---|
|
#18+
Еще вопрос - сколько вообще памяти на сервере - я смотрю ASA берет в рамках 90-128 мб, это очень мало для 2-х гиговой БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2004, 14:26 |
|
||
|
Оптимизация
|
|||
|---|---|---|---|
|
#18+
Optimization_Goal и другими опциями конфигурации экспериментировал вчера. Никакого эффекта. Дефрагментацию сделаю, но разве она влияет на поведение оптимизатора? Со страницей в 16 Кб переборщил - надо уменьшить до 8 - это уже ясно. Про ASTEMP слышу впервые - разберусь. Машина - Celeron, 366 1998 г.в. 128 ОЗУ. Вопрос о замене стоит, как денежку дадут :)). В том-то и прелесть ASA, что к ресурсам нетребовательна. Стоит 5 версия, сейчас примиряюсь к 9 а тут такой плюх... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2004, 14:39 |
|
||
|
Оптимизация
|
|||
|---|---|---|---|
|
#18+
Я думаю table scan идет из за большого размера страницы БД (а значит менее вместительного кэша) и малого размера памяти. Оптимизатор видимо считает, что легче сразу провести table scan, с одновременной хэш-группировкой подходящих по фильтру записей не используя кэш, чем поднять в кэш огромный индекс, просмотреть его и выбрать даты, потом поднимать по ним записи с таблицы с фильтрацией и группировкой, а потом проводить сортировку. В принципе с логической точки зрения оптимизатор не прав, так как считать 10 миллионов записей по любому дольше, но с другой стороны для многопользовательской работы может быть он и прав, что не хочет весь используемый кэш отдавать только одному уже изначально долгому процессу и тормозить все остальные процессы. Выходы: 1. Увеличить размер физической памяти и вообще сменить сервер (желательно) 2. Уменьшить минимальный размер кэш (обязательно) 3. Изменить размер страницы (обязательно) 4. Сделать составной индекс вместо простого (ничего страшного на самом деле, при правильном индексе можно добиться ORDERED GROUP BY, что уберет work table из плана запроса) 5. Навязывать индексы через force (для такого запроса вполне допустимо исходя из того, что примерное содержание данных известно и не изменяется) 6. Сгружать без сортировки все во времянку, ее возвращать клиенту с нужной сортировкой (думаю здесь это не обоснованно) P.S. Ну и в заключение можно сказать, что во первых table scan не всегда плохо, нужно смотреть на реальное время выполнения запроса, не стоит ожидать от ASA 8-9 шустрой работы одной сессии, так как они ориентированны на большое кол-во сессий и встроенный веб-сервер. И не стоит забывать, что можно написать к ним на форум, выложить план запроса и спросить "почему". Частенько на такие вопросы они создают новый CASE и равняют оптимизатор до нужного уровня. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2004, 15:42 |
|
||
|
Оптимизация
|
|||
|---|---|---|---|
|
#18+
Отучить оптимизатор оптимизировать ORDER BY поможет след. Код: plaintext 1. 2. 3. 4. 5. 6. isnull(sl_entry_nom,sl_entry_nom) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2004, 18:03 |
|
||
|
Оптимизация
|
|||
|---|---|---|---|
|
#18+
ASCRUSЯ думаю table scan идет из за большого размера страницы БД Уменьшил размер страницы до 8 кб - запрос пошел. MasterZiv select sl_entry_nom,count(*) from tarif_string_c where date_call='2004-11-16' and sl_entry=11 group by sl_entry_nom order by isnull(sl_entry_nom,sl_entry_nom) Пробовал со старым размером страницы (16 кб) - не сработало. "Тонкая, однако, работа..." (м/ф "Падал прошлогодний снег") ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2004, 09:09 |
|
||
|
Оптимизация
|
|||
|---|---|---|---|
|
#18+
Кстати, график загрузки станции по дням месяца (порядка 150 000 разговоров в сутки) строится за 17-18 минут на 5 версии. Простой перевод на ASA 9, с увеличением страницы с 4 до 8 кб и объявлением индекса по дате кластерным - тот же график менее 3 минут. Техника, естественно, та же самая - указана выше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2004, 09:23 |
|
||
|
Оптимизация
|
|||
|---|---|---|---|
|
#18+
old_joy MasterZiv select sl_entry_nom,count(*) from tarif_string_c where date_call='2004-11-16' and sl_entry=11 group by sl_entry_nom order by isnull(sl_entry_nom,sl_entry_nom) Пробовал со старым размером страницы (16 кб) - не сработало. "Тонкая, однако, работа..." (м/ф "Падал прошлогодний снег") Вообще оптимизатор ASA очень сложно надуть, я иногда запросы вообще так переписывал, что по соединениям в них таблиц казалось бы вообще ничего общего не было, однако оптимизатор умудрялся все равно давать те же самые планы запросов на них. Из чего я и сделал правильный вывод, что обманывать его пустой номер, нужно искать причину его мотивации выбора соотвествующего плана. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2004, 10:11 |
|
||
|
|

start [/forum/topic.php?fid=55&gotonew=1&tid=2014084]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
152ms |
get topic data: |
12ms |
get first new msg: |
8ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
| others: | 13ms |
| total: | 278ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...