Re: Вопрос по изменению оптимизатора с 1.5 по 2.1

2008-09-16 Пенетрантность Dmitry Yemanov


Nikolay Ponomarenko wrote:


Ого, спасибо, проверим :)


Т.к. снапшоты еще не ожили, то могу собрать вам 2.1 или 2.5 с фиксом и 
выслать. Дай знать, если интересно. Но хотелось бы проверить фикс именно 
на оригинальной базе, а не на твоей тестовой.



--
Дмитрий Еманов



Re: Вопрос по изменению оптимизатора с 1.5 по 2.1

2008-09-16 Пенетрантность Dmitry Yemanov


Nikolay Ponomarenko wrote:


Конечно интересно, проверим на оригинальной.


Отлично.


Если не очень сложно, то лучше 2.1.


Супер или классик?

Проверить только тот 
конкретный запрос, или еще на что-то обратить внимание?


Как минимум тот запрос. Но лучше погонять этот билд и на других запросах 
- в целом лучше станет или хуже. Я думаю, у них не одна претензия была. 
Да и проверить, чтобы остальное не отвалилось :-)



--
Дмитрий Еманов



Re: Вопрос по изменению оптимизатора с 1.5 по 2.1

2008-09-12 Пенетрантность Dmitry Yemanov


Nikolay Ponomarenko wrote:


Попытался повторить это на тестовой БД - с трудом, но вроде получилось.
http://rapidshare.com/files/144380650/TEST.rar.html  30МБ


В общем, фикс у меня есть. На днях его оттестирую и (надеюсь) закоммичу.
Если к понедельнику снапшоты оживут, то можно будет проверить на 
оригинальной не твоей базе :-)



--
Дмитрий Еманов



Re: Вопрос по изменению оптимизатора с 1.5 по 2.1

2008-09-12 Пенетрантность Dmitry Yemanov


Nikolay Ponomarenko wrote:


Это будет только в 2.5 или в 2.1.? тоже может попасть?


Везде попадет. Но мне было бы удобнее, если бы вы сначала проверили на 
2.5 (можно без бекап/рестора) и только потом (если все нормально) я бы 
перенес фикс в 2.0/2.1. Чтобы, если что не так, свои ошибки не плодить 
по всем бранчам :-)



--
Дмитрий Еманов



Re: Вопрос по изменению оптимизатора с 1.5 по 2.1

2008-09-11 Пенетрантность Dmitry Yemanov


Nikolay Ponomarenko wrote:


В частном случае, поменялся порядок таблиц - натуралом сервер стал идти 
по самой большой.


Статистика по индексам свежая?

Из изменений, который могли повлиять я увидел только посегментную 
статистику.


Начиная с 2.0 оптимизатор вообще наполовину переделан.


Ну а кол-во строк в таблице он не оценивает, та ведь?


Оценивает.


TABLE_BIG = 2млн (PSG)
TABLE_SMALL = 2тыс (SA)
TABLE_MEDIUM = 20тыс (PG)

FB 1.5
 plan join (sa natural, pg index (table_big_idx1), psg index 
(pk_table_medium))


В плане индексы не соответствуют таблицам.


FB 2.1.1 (с последней одс, после рестора)
 plan join (psg natural, pg index (table_big_idx3), sa index 
(table_small_org_idx))


Аналогично.


--
Дмитрий Еманов



Re: Вопрос по изменению оптимизатора с 1.5 по 2.1

2008-09-11 Пенетрантность Dmitry Yemanov


Nikolay Ponomarenko wrote:


Сорри, опечатался.

TABLE_BIG = 2млн (PG)
TABLE_SMALL = 2тыс (SA)
TABLE_MEDIUM = 20тыс (PSG)


Я бы хотел взглянуть на эту базу.
Ибо 2.1 не должен был выбрать такой плохой план.


--
Дмитрий Еманов



Re: Вопрос по изменению оптимизатора с 1.5 по 2.1

2008-09-11 Пенетрантность Dmitri Kuzmenko


Hello, Nikolay!

Nikolay Ponomarenko wrote:


Ну а кол-во строк в таблице он не оценивает, та ведь?


оценивает. по размеру записи в rdb$formats и по количеству
pointer page. т.е. количество записей в данном случае
это вообще все версии, плюс фрагментированные страницы, и т.д.

Собсно вопрос - предположения правильны и выхода как кроме +0(вроде как 
там запросов у них много) нет?


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

селективностью.

кстати, где расклад по времени, что такая выборка тормознее?

--
Dmitri Kouzmenko, www.ibase.ru, (495) 953-13-34




Re: Вопрос по изменению оптимизатора с 1.5 по 2.1

2008-09-11 Пенетрантность Dmitry Yemanov


Nikolay Ponomarenko wrote:


Оригинальная бд не моя, и весит 30гиг...


Архив бекапа небось пару гиг всего :-)


Попытался повторить это на тестовой БД - с трудом, но вроде получилось.
http://rapidshare.com/files/144380650/TEST.rar.html  30МБ


ОК, посмотрю сегодня.


--
Дмитрий Еманов



Re: Вопрос по изменению оптимизатора с 1.5 по 2.1

2008-09-11 Пенетрантность Dmitri Kuzmenko


Hello, Nikolay!

Nikolay Ponomarenko wrote:


DK кстати, где расклад по времени, что такая выборка тормознее?

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


ыыы. Где. Приведен. Пример. Времени. Выполнения. Первого. И. Второго. 
Запроса.


? :-)

--
Dmitri Kouzmenko, www.ibase.ru, (495) 953-13-34




Re: Вопрос по изменению оптимизатора с 1.5 по 2.1

2008-09-11 Пенетрантность Dmitry Yemanov


Nikolay Ponomarenko wrote:


И все же хочется узнать точно, разве в запросах вида

select
 *
from table1 t1
join table2 t2 on t2.id=t1.id
where t1.f1=15

условие  where t1.f1=15 не вносится внутрь ДО выполнения джойна?


Вносится.

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


И правильно делаешь.


--
Дмитрий Еманов



Re: Вопрос по изменению оптимизатора с 1.5 по 2.1

2008-09-11 Пенетрантность Dmitry Yemanov


Nikolay Ponomarenko wrote:


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


Не относится, увы.


--
Дмитрий Еманов



Re: Вопрос по изменению оптимизатора с 1.5 по 2.1

2008-09-11 Пенетрантность Dmitry Yemanov


Nikolay Ponomarenko wrote:


Только я вот чесс гря не понимаю, на что может опираться оптимизатор, 
выбирая иной план. Ну разве что на размер таблицы?


Размер считается в обоих версиях приблизительно одинаково. В данном 
случае разница лишь в посегментном учете селективности.


Ведь если судить по качеству индексов, то он берет, в принципе, 
оптимальный вариант. И в полуторке оно работало неверно, используя 
только информацияю о хорошей селективности композита?


Именно так. И на (в принципе худший) вариант наложилось наличие фильтра 
по малой таблице, который наверняка и дал ускорение.


Надо бы какую-то эвристику ввести для неиндексированных предикатов, 
тогда результат мог бы быть более предсказуемым. Она как бы есть, но 
сильно зачаточная :-) Подумаю над этим.



--
Дмитрий Еманов