powered by simpleCommunicator - 2.0.57     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / ASA 11 Оптимизация и drop statistics
25 сообщений из 25, страница 1 из 1
ASA 11 Оптимизация и drop statistics
    #36945769
В общем такая проблема
...
Рейтинг: 0 / 0
ASA 11 Оптимизация и drop statistics
    #36945776
С какого-то момента сервак начал тормозить при выполнении запроса
drop statistics в разы увеличивает скорость но не надолго
Сейчас только на 1 раз - потом опять тормозит
версия 11.0.1.2472

Что делать?
Как отключить использование статистики навсегда?
...
Рейтинг: 0 / 0
ASA 11 Оптимизация и drop statistics
    #36945785
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drop statistics это не выход вообще. Использование статистики это основа основ cost based optimizers, так что его отключить нельзя. Попробуйте разобраться, в чем проблема, проанализируйте планы запросов. В плане видно, как оптимизатр оценивает вероятности велчиин в запросе исходя из имеющейся статистики. Соотнесите оценки оптимизатора с реальным распределением величин. Если они сильно расходятся, то значит проблема в статистике.
Статистика поддерживается автоматически в sa11 и вообьще должно быть все в порядке. Статистика может разъезжаться после загрузки большого объема данных. В этом случае делайте после загрузки create statistics.

Та постановка вопроса, что у вас есть сейчас крайне поверхностна, вы не приложив усилий не получите результат.
...
Рейтинг: 0 / 0
ASA 11 Оптимизация и drop statistics
    #36946881
Какие усилия я должен прилагать, каждый запрос анализировать? (у меня их сотни- тысячи в приложении)
Да эффект частный есть, например если хинт поставить в конкретном запросе
Только почему база перестает сама оптимизировать как надо запрос, ведь совсем не факт
что мой хинт будет хорош на другом наборе данных.
Те не использует она нужный индекс и все.
И для его использования статистика не нужна и так ясно что условие на индексированное поле.

Еще раз: Начинает тормозить ВСЕ и это прогрессирует по мере работы с базой
Массовой заливки и стирания данных нет. Индексы какие надо есть.
Наблюдается все это на базах совершенно разной структуры

ЯВНО и СРАЗУ проявляется если переписать базу с одного компа на другой - ну тут
я могу понять - железо разное - старая статистика мб неверной.

ЛЕЧИТСЯ
1) иногда успешно drop statistics
drop statistics ни разу в моих тестах не привела к увеличила времени исполнения запроса - ЗАЧЕМ ТОГДА статистика нужна?
В данном случае помогало ровно на один запрос.

2) иногда успешно добавлением размера кеша
Проходило для маленьких баз, тормозивших по непонятным причинам

3) всегда успешно - перестройкой базы с выкидыванием статистики

-----------------------------------

Эти наблюдения позволяют утверждать следущее:
оптимизатор ASA работает некорректно в плане использования
статистики начиная с 9-й версии по 11 версию как минимум

------------------------------------
Вопрос остается - можно ли что-нибудь сделать для минимизации данного эффекта
поигравшись настройками базы или выполнением профилактических действий.
...
Рейтинг: 0 / 0
ASA 11 Оптимизация и drop statistics
    #36946890
PS
create statistics - только ухудшало ситуацию в моем конкретном случае
...
Рейтинг: 0 / 0
ASA 11 Оптимизация и drop statistics
    #36947334
iLLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гриценко А.В.PS
create statistics - только ухудшало ситуацию в моем конкретном случае

Не, ну что тут сложного?! Если есть КОНКРЕТНЫЙ запрос, который после построения статистики начинает тупить, то надо его взять и проанализировать. Смысл не в том, чтобы перебрать все запросы, а в том, что разворачивая конкретную ситуацию можно докопаться до истинной причины торможения множества запросов, до некой системности. Понимаете?

Вот у меня проблема обратная, иногда и непредсказуемо портится статистика. Ее перестроение решает проблему, запросы начинают выполняться нормально. Но не буду же я каждый час перестраивать по шедулеру статистику?! Вот это дейстивтельно проблема. А когда со свежей статистикой запрос идет корявым путем, так это железобетонно причина либо в запросе, либо в структуре БД.
...
Рейтинг: 0 / 0
ASA 11 Оптимизация и drop statistics
    #36947527
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-бы вам смогли оказать помощь на этом форуме надо:
1. Взять конкретный запрос, который тормозит
2. Получить его план и выложить его на форум
3. Попутно показать структуру таблиц, которые участвуют в запросе, указать какие индексы есть по искомым таблицам.
...
Рейтинг: 0 / 0
ASA 11 Оптимизация и drop statistics
    #36947581
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
просто очень много вопросов. То, что помогает перегрузка базы намекает, что может где-то сильно влияет фрагментация данных, может у вас там кластерная таблица, может еще чего-то. Слишком много вариантов.
Почитайте в справке все что касается статистикой, например разделы:
SQL Anywhere® Server - SQL Usage > Query Optimization and Execution
SQL Anywhere® Server - SQL Usage > Query Optimization and Execution > How the optimizer works
Optimizer estimates and column statistics

есть опции БД:
update_statistics option [database]
collect_statistics_on_dml_updates option [database]

Есть неплохая статья от разработчика SA: http://iablog.sybase.com/paulley/2010/09/analyzing-clustered-indexes/

На крайний случай есть такая экзотика как хинты кардинальности.
...
Рейтинг: 0 / 0
ASA 11 Оптимизация и drop statistics
    #36950317
Ggg_old, Спасибо

Эти опции не влияют на поведение плохой базы
update_statistics option [database]
collect_statistics_on_dml_updates option [database]

В плохой базе по плану запроса выбирается неправильных индекс kol_ost
в хорошей (перестроенной) правильный ntipdoc

После drop statistics ОДИН РАЗ в плохой базе все хорошо - затем все то же

Кластерных индексов нет Массовой заливки и стирания данных тоже
Хинт помогает для этого случая - но он не универсален в общем-то

Планы запросов прилагаются
...
Рейтинг: 0 / 0
ASA 11 Оптимизация и drop statistics
    #36950435
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) Это запросы выполненные на разных серверах?

2) смотрим секцию advanced details
Видно, что в случае "хорошего" запроса оптимизатор оценивает:
tdoc.kol_op > 0 : 91.111% Statistics - т.е. почти вся таблица и индекс kol_ost не канает
tdoc.ntipdoc > 0 : 19.112% Statistics - поэтому выбирается индекс ntipdoc.

В "плохом" запросе видим:
tdoc.kol_op > 0 : 0.57912% Statistics - поле индекса kol_ost
tdoc.ntipdoc > 0 : 22.848% Statistics - поле индекса ntipdoc
т.е. здесь индекс kol_ost на два порядка предпочтительнее

Итого камнем преткновения является статистика по колонке tdoc.kol_op

Дабы не гадать, на "плохом" сервере сделайте
select count(*) from tdoc
select count(*) from tdoc where tdoc.kol_op > 0

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

P.S. Вообще, даже выбор индекса ntipdoc в вашем случае уже на грани риска, ибо tdoc.ntipdoc > 0 : 19.112% могут заставить сервер при определенных обстоятельствах выбрать tablescan. Т.е. сами по себе имеющиеся индексы не достаточно хороши для приведенной конкретной ситуации.
...
Рейтинг: 0 / 0
ASA 11 Оптимизация и drop statistics
    #36950616
iLLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скорее всего здесь дело именно в неверной структуре. Судя по всему, в результирующий набор попадает очень много данных при низкой селективности tdoc.kol_op и tdoc.ntipdoc. Это становится равносильно сканированию таблицы со всеми вытекающими. Нужно ограничить объем выборки, либо условием и индексом по дате, либо модификаторами TOP N. Может нужно показать оператору только первые/последние? Или по какому-то условию и он что-то ищет? Или грамотный пэйджинг организовать нужно? Ну в чем смысл получения четверти ВСЕЙ таблицы на клиента? С годами такие системы будут только тяжелеть, пока все не встанет.

И второй момент. Как оцениваете скорость выполнения запроса? В ISQL? Ну тут есть подводный камень. При насильном указании индекса может сложится впечатление, что все хорошо, запрос отрабатывает, данные быстренько попадают в ISQL. Но это ложное впечатление, т.к. на получение ПОЛНОГО набора данных серверу придется работать гораздо дольше. А ISQL прекращает выполнение запроса сразу после получения первых ХХХ записей, а это не одно и тоже.

И еще один момент. Есть такая опция, которая кардинально может поменять поведение сервера. OPTIMIZATION_GOAL. Все запросы на сервере будут выполняться, либо с точки зрения сокращения времени получения первой порции данных, либо общего времени получения данных (по умолчанию). Мало ли, вдруг она попорчена кем-то...
...
Рейтинг: 0 / 0
ASA 11 Оптимизация и drop statistics
    #36951613
Запросы на одном и том же сервере
Одна база только что перестроена, другая работала ~год после перевода на с 9 на 11
Время оценивалось честное - по работе приложения.

Конечно можно оптимизировать структуру данных для конкретного запроса, например
создать некое расчетное поле к примеру act=if kol_op*ntipdoc>0 then 1 else 0 endif c индексом по нему специально для такого запроса и условие поменять на act=1.
Индекс Kol_ost - действительно неэффективен, согласен.


Может пример не самый хороший, но периодически начинает тормозить ВСЕ, не только этот запрос
Попытки оптимизации отдельных запросов не то чтобы бесполезны но трудоемки и в целом
малоэффективны. Поэтому когда начинает заметно тормозить удаляю статистику и если не помогает
то перестраиваю базу.

На этом реальном запросе (со всеми наворотами которые я здесь не показал) разница по времени
исполнения минимум 5 - 10 раз

Остаются вопросы - почему на абсолютно одинаковых (по данным) базах и железе разный результат
работы оптимизатора.

-------------------
В "плохом" запросе видим:
tdoc.kol_op > 0 : 0.57912% Statistics - поле индекса kol_ost - вот это полный бред!!!
реально >90%
Те статистика неверна, вопрос почему
...
Рейтинг: 0 / 0
ASA 11 Оптимизация и drop statistics
    #36951649
Итак можно сделать два вывода

1) Причина неправильного поведения оптимизатора(появления неправильной статистики) пока не ясна,
лекарство от этого не найдено

2) Сделав хинты и более эффективную структуру можно отчасти скомпенсировать
ошибки оптимизатора и минимизировать тормоза связанные со "старением" базы

В общем, всем спасибо
...
Рейтинг: 0 / 0
ASA 11 Оптимизация и drop statistics
    #36951756
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Млин, вы так и не сделали того, чего я просил.
Перестройте статистику по колонке и повторите запрос.
И при переходе с 9-ки на 11-ю версию вы базу перегружали или просто подцепили к SA11?
...
Рейтинг: 0 / 0
ASA 11 Оптимизация и drop statistics
    #36952267
Я делал все это в разных вариантах без особого успеха

Нашел одну закономерность как ведет себя сейчас плохая база.

Если database option "update_statistics" (надо реконнектится при смене опции базы)

= off
Работает стабильно те
после drop statistics tdoc а равно create statistics tdoc;
работает как надо и вроде не ломается

= on
Работает нестабильно
после drop statistics tdoc работает 1 раз хорошо потом плохо
после create statistics tdoc работает вроде как хорошо
!!! в предшествующих экспериментах точно не помогало!!! - скрипты тестов сохранены


ТЕ МБ имеет смысл ставить update_statistics=off и мб периодически
делать create statistics

---
PS
collect_statistics_on_dml_updates option = off (не влияло но и UPDATE не было)
...
Рейтинг: 0 / 0
ASA 11 Оптимизация и drop statistics
    #36952877
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
После сброса статистики сервер начинает работать на принципах древнего rule based оптимизатора). Так как реальное распределение величин по столбцам отсутствует, то сервер оценивает селективность исходя из используемых операторов в where. Я уже не помню точно цифры, но было что-то такое:
where
col=величина (считало, что затрагивается малое кол-во величин, селективность около процента)
col>величина (считается, что затрагивается большое кол-во величин, селективность процентов 90)
двойное неравенство считало, что селективность где-то посередине.
И исходя из этих грубых оценок и выбирался план выполнения.
Так что сброс статистики просто по счастливому стечению обстоятельств вам помог.

автор
после create statistics tdoc работает вроде как хорошо
!!! в предшествующих экспериментах точно не помогало!!! - скрипты тестов сохранены

ТЕ МБ имеет смысл ставить update_statistics=off и мб периодически
делать create statistics

Вывод как раз наоборот - установить автообновление статистикой и сделать один раз построение статистики.
И вы по-прежнему не хотите разобраться в ситуации и ищите легких и простых путей. Например вопрос про формат базы при переходе с 9-й на 11ю версию важен. Надо базу было создать заново в sa11 и полностью перегрузить содержимое, еси этой процедуры при миграции на sa11 не было.
Еще вопрос, а какие значения в поле kol_op вообще?
select kol_op, count(*)
from tdoc
group by kol_op
...
Рейтинг: 0 / 0
ASA 11 Оптимизация и drop statistics
    #36952960
Для сведения:
база 9-й версии не стартует на 11 сервере
...
Рейтинг: 0 / 0
ASA 11 Оптимизация и drop statistics
    #36953012
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну да ладно, вы видать для себя уже решение приняли и дальше копать не хотите. А мне было бы любопытно посмотреть еще на гистограмму статистики сервера и реальную. Может там дело в диапазонах или еще чего.
А то, что ручная перестройка статистики не помогла, мне не верится. Так не бывает.
...
Рейтинг: 0 / 0
ASA 11 Оптимизация и drop statistics
    #36953023
Те база само собой создавалась под 11 и туда заливались данные
Да и перестраивалась потом наверняка.

Похожие проблемы наблюдались давно и на разных базах
те в 9-й версии все то же самое - база "стареет" и начинает тормозить
Проблема не в отдельных запросах а в общей тенденции
...
Рейтинг: 0 / 0
ASA 11 Оптимизация и drop statistics
    #36953415
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну тогда периодически устраивайте базе create statistics как профилактическую меру.
...
Рейтинг: 0 / 0
ASA 11 Оптимизация и drop statistics
    #36953448
iLLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторКонечно можно оптимизировать структуру данных для конкретного запроса, например
создать некое расчетное поле к примеру act=if kol_op*ntipdoc>0 then 1 else 0 endif c индексом по нему специально для такого запроса и условие поменять на act=1.

Такого рода поля - флаги, очень плохие с точки зрения единственного условия поиска. Среднестатистически, флаг с двумя значениями поделит таблицу пополам. Если три значения, то на три части. Смысл в нем и его индексе, если эту безграмотность сервер в основном будет игнорить? Игнорить не будет только опираясь на свою статистику. Но при проектировании, не нужно полагаться на способности сервера. А у Вас "кривое" проектирование. Пока все влезает в кэш, будет все работать быстро. Пока данные упорядочены (после ребилда), тоже все будет работать быстро, т.к. данные последовательно начитываются в кэш и последовательное чтение таблиц несильно заметно. Но это все только "пока", до недавнего времени.

авторПохожие проблемы наблюдались давно и на разных базах
те в 9-й версии все то же самое - база "стареет" и начинает тормозить
Проблема не в отдельных запросах а в общей тенденции
Общая тенденция - безграмотность.

Упертость и "глухота", вот что Вам мешает решить проблемы. Для начала разобраться какой объем выборки действительно нужен пациенту. Если для печати отчетов - это одно дело, там можно ввести их ночную подготовку (или преподготовку), если на экран юзеру, то какого лешего читать всю живую таблицу? Если данных под запрос попадает мало, а таблица здоровая, то подумать над тем, как это множество однозначно изолировать от остального при помощи одного индекса.
...
Рейтинг: 0 / 0
ASA 11 Оптимизация и drop statistics
    #36954932
iLLer,
< ............ >

Модератор: Лучше бы спасибо сказал. Так нет.

По поводу использования статистики оптимизатором я остался при своем мнении:
Плохо он ее использует и собирает
Удаление статистики вообще и запрет ее сбора дает лучший эффект чем создание

Гриценко А.В. , тебе нужно понять два момента:
-- любой оптимизатор не может оптимизировать хорошо все запросы. Порядка 80% он оптимизирует хорошо, 20% - плохо.
-- любой сбор статистики -- это ПОТЕРЯ ИНФОРМАЦИИ.

Луче бы привёл конкретные проблемы и конкретные запросы, как уже просили.
...
Рейтинг: 0 / 0
ASA 11 Оптимизация и drop statistics
    #36954946
Кcтати в ASA 11 есть еще одна "хорошая" опция - многопроцессорность в ходе одного запроса

max_query_task

если указать =1 то на относительно слабых машинках точно в разы быстрее работает
чем при =0 как по умолчанию.
...
Рейтинг: 0 / 0
ASA 11 Оптимизация и drop statistics
    #36957306
iLLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гриценко А.В.iLLer,
Вам бы лучше помолчать если по делу сказать нечего...


Вам по делу было сказано не один раз. Если сударь изволит игнорировать ответы, то нечего ходить на форумы и спрашивать. А раз задаете вопросы, то надо их не только видеть, но и читать. И нечего обижаться на "безграмотность". Вещи надо называть своими именами. И постыдного в этом ничего нет, это не обзывательство.

А затыкать меня не нужно. Не в тех мы здесь отношениях, чтобы указывать друг другу, что нужно делать. Если Вам будет угодно, в следующий раз пройду мимо Вашей проблемы.
...
Рейтинг: 0 / 0
ASA 11 Оптимизация и drop statistics
    #36958095
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гриценко А.В. и iLLer, завязывайте с руганью пожалуйста. А то зверствовать начну.
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / ASA 11 Оптимизация и drop statistics
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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