|
Имеет ли смысл составной индекс ...
|
|||
---|---|---|---|
#18+
>Пытался (в прошлой ветке подсказали), как оказалось тоже не работает, вернее, работает под один вариант условий/данных, под другой нет. в прошлый раз у вас было подозрение на плохой индекс, зациклившийся, все нормально с индексом? Начните новую тему с запросом который долго работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2012, 09:02 |
|
Имеет ли смысл составной индекс ...
|
|||
---|---|---|---|
#18+
Журавлев Денисв прошлый раз у вас было подозрение на плохой индекс, зациклившийся, все нормально с индексом? Начните новую тему с запросом который долго работает.Как я уже повторял, я никогда не повторяюсь! ... -> Уже нет подозрений, уже есть уверенность, корефаны.. т.е. тфу, корифеи местные уже с этим "разбираются" (скорее пытаются "замолчать" проблему т.к. поиск "с конца" нужен только мне... моей задаче), пока из всего сделанного убрали явный глюк - дубли в ключе. Во всяком случае местные "гуру" не смогли сделать этот запрос адекватным, хотя у них есть и доступ и планы и вообще это их работа. Поэтому однозначно - проблема есть. Зачем начинать новую если можно вернутся к прошлой. С этой точки зрения с запросом показывающем проблему (одним из, но самых понятных) НИЧЕГО не изменилось. Вопрос этой ветки уже не в определении проблемы, не в советах "куда потыкать палочкой и посмотреть, что изменилось, возможно исправилось", а в определении когда это началась... от этого зависит не решение, а определение если грубо "кто виноват, и что с ним делать". ++ Пожалуйста, не меняйте тему, ИМХО я очень ясно выразился, что хочу узнать. И нужны не "практические тыканья палочкой" в решении конкретной проблемы, а академические знания - "что именно должно быть в такой ситуации на нормально(!) работающем/настроенном информиксе". Не было ли создение дублирующего индекса "затычкой" вместо решения проблемы. ??? Доступно же. Не делайте вид что не понимаете "сворачивая тему с пути". ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2012, 10:41 |
|
Имеет ли смысл составной индекс ...
|
|||
---|---|---|---|
#18+
Tesla13++ Пожалуйста, не меняйте тему, ИМХО я очень ясно выразился, что хочу узнать. И нужны не "практические тыканья палочкой" в решении конкретной проблемы, а академические знания - "что именно должно быть в такой ситуации на нормально(!) работающем/настроенном информиксе". Не было ли создение дублирующего индекса "затычкой" вместо решения проблемы. ??? Доступно же. Не делайте вид что не понимаете "сворачивая тему с пути".я не понимаю какой запрос тормозит. Зачем составные индексы в запросах на писано мной тут 13550277 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2012, 11:15 |
|
Имеет ли смысл составной индекс ...
|
|||
---|---|---|---|
#18+
Журавлев Денися не понимаю какой запрос тормозит.Это в прошлой теме. Но если кратко, то - любой... Если есть DESC в ORDER BY, при разных вариантах условия с разными данными и даже с хинтами, но всегда находится такое значение в условии на котором запрос "вешается". + ORDER на пробах делался для 2-х вариантов, которые имеют смысл, по дате выполнения (требуется) и по ключу (counter, чисто потестить). Собственно на пробах по ключу и выявил дубли. Журавлев ДенисЗачем составные индексы в запросах на писано мной тут 13550277 Если, если, если... у информикса, что оптимизатора/статистики нет? Хотя, это неважно. А можно дать конкретный ответ? Без если. Учитывая что - а) Не могу повлиять на всех чтобы писали с "локальной оптимизацией". (т.е. что даст это ваше "если - нужно"?) б) Поздно. Это не делается, начинается, а уже так есть... и менять не будут. с) Не соответствует цели темы. Опять практическое "как надо бы...", а не исследованные "почему так". Тем более что то мне подсказывает для конкретного (описанного) случая, должно быть несколько по другому. Когда для ext практически всегда есть только 1 значение (пара ext + id всегда уникальна, но по ext теоретически (не практически)... возможно 1500 повторов, по количеству id агентов)... в общем по логике выборка тут всегда должна идти по первому ext, а используется или нет второй уже неважно, даже в худшем случае 1500 значений отфильтровать... ну, не тянет на минуту. Т.е. если так было (опять не повторяюсь...) значит иформикс формировал "кривой план", брал не тот индекс главным, или делал еще чего то не нужное для работы (лазил на порносайты например). ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2012, 14:04 |
|
Имеет ли смысл составной индекс ...
|
|||
---|---|---|---|
#18+
Журавлев ДенисЗачем составные индексы в запросах на писано мной тут 13550277 И вообще то я спрашивал вовсе не "зачем они нужны", зачем я как бы и так знаю... как бы вам это было не удивительно. "Имеет ли смысл вот это" и "это в принципе нужно для"... разные вещи, однако. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2012, 14:08 |
|
Имеет ли смысл составной индекс ...
|
|||
---|---|---|---|
#18+
очень длинно пишите, я не читал, я готов потюнить один, два, 100 запросов, поотдельноси, все тюнить не буду. статистика в информиксе есть, есть ли она в вашей бд и насколько свежая, я пока не понял. если есть order by, и таблица широкая, высока вероятность что информикс выберет не тот индекс, воркэраунд хинтовать +index ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2012, 14:19 |
|
Имеет ли смысл составной индекс ...
|
|||
---|---|---|---|
#18+
Журавлев Денисочень длинно пишитеВынужден. Как и повторения. Не понимают`с. Пытаюсь объяснить. Журавлев Денисесли есть order byНу вот опять, про "order by" вопрос был в прошлой ветке, в этой про индексы. p.s. Коротко? = понятно? p.p.s. order by/desc я с себя "спихнул", разберутся, не разберутся, это уже не моя ответственность. Моя теперь - когда это началось. И, мои ли запросы "порушили базу", для меня очевидно (запросов на запись/прав на запись у меня нет, т.что...), а если искомые данные способны "завалить" базу... то нафиг такую базу (или скорее админа). ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2012, 15:30 |
|
Имеет ли смысл составной индекс ...
|
|||
---|---|---|---|
#18+
Tesla13вопрос был в прошлой ветке, в этой про индексы. а вы понимаете что запрос where a=5 order by b desc можно выполнить по индексу, без сортировки, отдав первые 100 строк моментально? И не важно сколько строк a=5 тысяча или милиард? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2012, 15:33 |
|
Имеет ли смысл составной индекс ...
|
|||
---|---|---|---|
#18+
Журавлев Дениса вы понимаете что запрос where a=5 order by b desc можно выполнить по индексу, без сортировки, отдав первые 100 строк моментально? И не важно сколько строк a=5 тысяча или милиард?А то! Я понимаю, а вот база почему то нет. ... и блин, опять не "повторяюсь" но, ситуация такая, что where a=5, 6, 127, и т.д. для еще кучи значений a работает 15 мсек, а 7 (не только) почему то больше часа (больше не ждал). Ставишь туда хинт FIRST_ROW и значение 7 отрабатывает за 32 мсек... а вот 127 тут же становится больше часа. Вопрос первой ветки как раз был этом... что я то как раз понимаю что это не нормально (правда начал я с ext LIKE 'R%' но такая конструкция тоже использует индекс... в отличие от например ext LIKE '%R%'). p.s. Зачем это очередное отвлечение внимание от собственно вопроса? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2012, 16:09 |
|
Имеет ли смысл составной индекс ...
|
|||
---|---|---|---|
#18+
Tesla13, Вам нужно знать, имеет ли смысл составной индекс. Этот вопрос, исходя из обсуждения, можно задать в двух вариантах: 1. если запрос с "ext = x and id = y" будет выполняться с использование индекса (ext, id), насколько это будет эффективнее чем с использованием индекса (ext)? Не стесняясь, повторюсь: если даже теоретически прикинуть "в сколько раз будет лучше, это нужно мозги на полчаса приложить - а мотивации никакой :)" (я). У вас в наличии сейчас и составной индекс и оба простых? Так попробуйте через хинты протестировать все три варианта, только влияние кэшрование не забудьте учесть, и будет вам счастье практическое, а не теоретическое. 2. есть три типа запроса 1) "ext = x and id = y" (30% запросов); 2)"ext = x" (30% запросов); 3) "id = y" (30% запросов). Все запросы выполняются с условиями отбора первых 100-200 записей. Распределение и типы данных приблизительно описаны в первых двух топиках. Разработчик обеспечит выбранные в результате изысканий тексты запросов и администратор подберёт оптимальный сбор статистики. Что будет эффективнее: а) иметь наличие двух индексов: (ext, id) и (id) или б) иметь наличие двух индексов: (ext) и (id). Да на таких изысканиях можно скромный курсач защитить... Если же вернуться к проблеме. Есть проблемы в теоретической оценке: - разные версии Informix (а вашу точно мы тоже не знаем до сих пор) - даже минорные - имеют разные возможности по оптимизации и баги; - мы ничего не знаем про то, как у вас собирается статистика, что немаловажно при выборе индекса оптимизатором; - про настройки сервера; - про переменные окружения; Решение проблемы "с одними параметрами запрос выполняется быстро, а с другими - немеряно времени" зависит не только от наличия индекса. Создание индекса (ext, id) админами могло улучшить ситуацию не только потому, что этот индекс лучше, а потому что оптимизатору на вход стала поступать новая информация: 0) раньше для запроса "ext = x and id = y" выбирался таки индекс по (id) , а не ext или "скрещивание (ext) и (id)". Почему: см. выше про версию информикса и статистику; 1) админы статистику заодно в процесс обновили не так как обычно; 2) .... Местным гуру на порядок легче рассуждать: у них возможности навести резкость в постановке задачи и её окружении больше... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2012, 16:19 |
|
Имеет ли смысл составной индекс ...
|
|||
---|---|---|---|
#18+
Tesla13, админы обычно отвечают за производительность работы БД при некотором известном/постоянном объёме запросов, разновидности этих запросов и объёме извлекаемых данных. В какой-то момент появились вы с новыми типами запросов, новым объёмом извлекаемых данных. Если "появление" вашей программы в качестве клиента не согласовано (какие таблицы, какие запросы, как много тянете) с админами, они даже теоретически не могут превентивно отвечать за производительность БД. Они могут только реагировать на проявившиеся проблемы в работе. И на ваш теоретический вопрос, как должно было быть при нормальной работе админов: как угодно, если ваши запросы начали тормозить, значит они для сервера внове, и нет на практике "нормально настроенного сервера БД"... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2012, 16:33 |
|
Имеет ли смысл составной индекс ...
|
|||
---|---|---|---|
#18+
Tesla13А то! Я понимаю, а вот база почему то нет. ... и блин, опять не "повторяюсь" но, ситуация такая, что where a=5, 6, 127, и т.д. для еще кучи значений a работает 15 мсек, а 7 (не только) почему то больше часа (больше не ждал). Ставишь туда хинт FIRST_ROW и значение 7 отрабатывает за 32 мсек... а вот 127 тут же становится больше часа. захинтовать +index ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2012, 16:52 |
|
Имеет ли смысл составной индекс ...
|
|||
---|---|---|---|
#18+
АнатоЛойТак попробуйте через хинты протестировать все три вариантаПробовал, сейчас разницы нет, естественно если не задать хинт {+INDEX(trans id_ix)}, а искать по обоим полям, тут на несколько мсек дольше. Но что это дает? Это хинт, не приказ, а поставить AVOID_INDEX(ext) то не слишком ли? Самостоятельно обеспечить перебор вместо проверки. АнатоЛойа вашу точно мы тоже не знаем до сих пор Не повторяться, не повторятся... эх, сорвалось - Tesla13Что знаю, Informix 11 , количество записей в интересующей таблице 44460537, полей 60, индексированы 15, нужные мне поля (по которым условие/сортировка) в том числе. Проблема в том, что выбирая небольшое количество записей (100) в паре с сортировкой (нужны последние записи) запрос "виснет"... ждал около часа, после "снял". АнатоЛойновым объёмом извлекаемых данных.100 строк, как хотелось, по запросу юзера (не пулемет же он), не считаю серьезным "объемом". АнатоЛойи нет на практике "нормально настроенного сервера БД"...А вот MSSQL (с ностальгией) ставишь, по умолчанию, ничего не трогая, и оно уже нормально настроено... P.S. Похоже пора "завязывать", работать просто некогда с этой без результативной перепиской. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2012, 17:06 |
|
Имеет ли смысл составной индекс ...
|
|||
---|---|---|---|
#18+
Tesla13, не равняй MS SQL и Informix при прочих неравных (админы, БД, клиенты...). Появление нового индекса в БД (Informix) без сопутствующих движений - вполне себе причина поломать работу системы. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2012, 17:09 |
|
Имеет ли смысл составной индекс ...
|
|||
---|---|---|---|
#18+
Tesla13Что знаю, Informix 11 мдя. 11.10, 11.50, 11.70? не говоря уже про номер FixPack... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2012, 17:14 |
|
Имеет ли смысл составной индекс ...
|
|||
---|---|---|---|
#18+
Tesla13А вот MSSQL (с ностальгией) ставишь, по умолчанию, ничего не трогая, и оно уже нормально настроено... да в общем-то, в Informix-e тоже самое... если ничего не трогать ... потрогать тоже можно за разные места, также как в автомобиле, нажать на газ - он поедет, а уж если на тормоз ... извините ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2012, 17:23 |
|
Имеет ли смысл составной индекс ...
|
|||
---|---|---|---|
#18+
Tesla 13, Есть предложение не изучать предмет теоретически, а посмотреть на распределение в sysdistrib просто вот прямо. Если прав хватит оттуда select * сделать, то изучите что про ваши "нормальные" и "НЕ нормальные" значений там есть для вашего столбца по которому выборка. И сделайте, если можете, UPDATE STATISTICS HIGH хотя бы для одного этого столбца. Ещё интересней сравнить sysdistrib до и после апдейта. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2012, 23:55 |
|
Имеет ли смысл составной индекс ...
|
|||
---|---|---|---|
#18+
Tesla13Журавлев Дениса вы понимаете что запрос where a=5 order by b desc можно выполнить по индексу, без сортировки, отдав первые 100 строк моментально? И не важно сколько строк a=5 тысяча или милиард?А то! Я понимаю, а вот база почему то нет. ... и блин, опять не "повторяюсь" но, ситуация такая, что where a=5, 6, 127, и т.д. для еще кучи значений a работает 15 мсек, а 7 (не только) почему то больше часа (больше не ждал). ну если у вас 40M записей с кодом 7, и по 10 записей where a=5, 6, 127, то естественно, что разница будет принципиальная. Во втором случае Информикс вообще откажется использовать индекс, будет сплошным перебором ковырять. Tesla13Ставишь туда хинт FIRST_ROW и значение 7 отрабатывает за 32 мсек... а вот 127 тут же становится больше часа. Потому что при FIRST_ROW информик предпочитает вложенные циклы, а без него - построение хешей. Если у вас практически все записи имеют значение 7, то первые 101 цикл дадут вам 100 выходных записей. А 127 ваше встретится где-то в конце всех циклов. Элементарно, Ватсон. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2012, 02:38 |
|
Имеет ли смысл составной индекс ...
|
|||
---|---|---|---|
#18+
Яковлев ПавелЕсть предложение не изучать предмет теоретическиЕсть предложение не давать "предложений" если это не ответ по теме, предлагая то, что сразу сказано сделать невозможно (именно на этот случай сказано). Да и вообще смысл влезать не свою область? Шофер не должен быть механиком, но способен определить/поднять проблему если вместо второй скорости включается задняя. И сказать механику... если тот в этом "не видит проблемы, и - 'до тебя машинка ездила, и никто не жаловался'", то сменить механика. Выбегаллону если у вас 40M записей с кодом 7, и по 10 записей where a=5, 6, 127, то естественно, что разница будет принципиальная. Во втором случае Информикс вообще откажется использовать индекс, будет сплошным перебором ковырять.Нда, и это прямо под ответом на сообщение от Журавлева Дениса... Начинаю понимать, что был глуп... это надо же, спрашивать в таком месте, где обитают такие... умные люди. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2012, 10:24 |
|
Имеет ли смысл составной индекс ...
|
|||
---|---|---|---|
#18+
Tesla13Есть предложение не давать "предложений" Начинаю понимать, что был глуп... это надо же, спрашивать в таком месте, где обитают такие... умные люди. Есть предложение - не задавать здесь вопросов, ответы на которые Вы не в состоянии ни понять, ни сделать. Проследуйте в техподдержку MSSQL. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2012, 10:40 |
|
Имеет ли смысл составной индекс ...
|
|||
---|---|---|---|
#18+
IkirВы не в состоянии ни понятьА кого понимать? Тебя или Дениса? Вы говорите диаметрально противоположные вещи... p.s. Переход на личности это еще один отличительный признак ума здешних форумчан? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2012, 14:11 |
|
Имеет ли смысл составной индекс ...
|
|||
---|---|---|---|
#18+
Tesla, давайте поступим проще, дабы не отклоняться от темы. 1) Вопрос: могли ли регулярно или нерегулярно тормозить запросы с "WHERE ext = ... и id = ..." при наличии только индексов (ext) и (id)? Ответ: могли. Основной вариант: выбор оптимизатором Informix неэффективного плана запроса (индексов). Возможные причины возникновения основного варианта: а) обновление статистики не учитывает потребность в обработке таких запросов; б) в запросе присутствуют дополнительные части, влияющие на выбор плана: ORDER BY, FIRST 100, перечень возвращаемых полей, которые нам не видно из постановки задачи; в) параметры оптимизации запроса (параметры сервера, параметры сессии) "не соответствуют" типу запроса; г) природа данных такова, что в зависимости от параметров эффективны разные индексы (то по (ext), то по (id)) но из-за кеширования запросов (и планов запросов) используется один и тот же план. Что нужно было делать: 1. Тестировать запросы 2. "Согласовывать" с админами, раз уж админы отвечают за структуру и обслуживание БД (вау!). 2) Вопрос: могло ли пропасть торможение запросов с фильтрацией по равенству двух полей после добавления индекса (ext, id)? Ответ: могло. Основной вариант: при выборе оптимизатором Informix стал использовать именно его как наиболее подходящий (более стабильный в оценках независимо от значений фильтрации) индекс. Возможные причины возникновения основного варианта: см. ответ на вопрос 1. 3) Вопрос: Насколько эффективнее должно быть использование составного индекса против простых? Встречный вопрос к постановщику: исходя из предыдущих ответов, ответ "насколько именно" всё ещё интересует? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2012, 14:49 |
|
Имеет ли смысл составной индекс ...
|
|||
---|---|---|---|
#18+
АнатоЛойа) обновление статистики не учитывает потребность в обработке таких запросов; читать как АнатоЛойа) существующие процедуры обновления статистики не учитывают потребности в обработке таких запросов (причём есть варианты, когда только изменение сбора статистики не решит проблему); ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2012, 14:52 |
|
Имеет ли смысл составной индекс ...
|
|||
---|---|---|---|
#18+
АнатоЛой1) Вопрос: могли ли регулярно или нерегулярно тормозить запросы с "WHERE ext = ... и id = ..." при наличии только индексов (ext) и (id)? Ответ: могли. Основной вариант: выбор оптимизатором Informix неэффективного плана запроса (индексов). Основные ошибки ТС: 1) предположение, что СУБД Informix работает так же, как MS SQL; 2) предположение, что СУБД Informix работает по логике, которую предполагает ТС на опыте общения с МС СКЛ, а не так, как собственно, эта СУБД спроектирована и разработана. Tesla13, надеюсь, рассеял ваши "смутные сомнения что причина в чём-то другом"... ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2012, 16:05 |
|
Имеет ли смысл составной индекс ...
|
|||
---|---|---|---|
#18+
Tesla13Нда, и это прямо под ответом на сообщение от Журавлева Дениса... Начинаю понимать, что был глуп... это надо же, спрашивать в таком месте, где обитают такие... умные люди.вот самое смешное что нет противоречия. В зависимости от того что вы хотите, все строки или первые 100, эффективные планы будут разные. И в информиксе статистика хранится гениально, она учитывает исключения в глистограммах (этого порою не хватает в оракле). Верная статистика у вас или нет можно в принципе оценить и без плана, с помощью estimated rows и реального количества. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2012, 21:33 |
|
|
start [/forum/topic.php?fid=44&msg=38063801&tid=1607081]: |
0ms |
get settings: |
7ms |
get forum list: |
6ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
42ms |
get topic data: |
3ms |
get forum data: |
1ms |
get page messages: |
468ms |
get tp. blocked users: |
0ms |
others: | 300ms |
total: | 829ms |
0 / 0 |