Ayrat
Пруфы давай
Ну вот опять. Ща
Vasily
Чо ща
Vasily
Ссылку кинь
Ayrat
Ну комп включу
Vasily
ВСе время забываю, шо ты в другом часовом поясе
Андрей
кстати О'Дерзкий тоже с другими названиями играет https://github.com/lampepfl/dotty/pull/5458
Ayrat
https://github.com/dotnet/fsharp/tree/feature/witness-passing - это про вот это https://github.com/dotnet/fsharp/pull/6810 https://github.com/dotnet/fsharp/tree/feature/ext - это про тайп экстеншны видимиые из других сборок
Ayrat
Anatoly
Хинтами
хинты - это признак плохого кода
Ayrat
там РФЦ есть https://github.com/fsharp/fslang-design/blob/master/RFCs/FS-1071-witness-passing-quotations.md
Андрей
А что значит w.r.t?)
with regard/respect to
Anatoly
Я бы сказал что статистика точно должна работать с первого же запроса на хранимки, а на рандомные хз. Кешировать планы, находить общие. Хз
статистика - она на данные. и она не даёт ответа "надо ли этот запрос оптимизировать до упаду, или надо его таки выполнить сегодня". сервер никак не может догадаться в первый раз - это частоиспользуемый запрос или oneshot. Проблема точно такая же, как и у джита в .net
Danil
https://info.jetbrains.com/rider-webinar-august-2019.html
Здорово если он действительно в час уложится
Anatoly
Другое дело, что поднакопив статистику, например, "этот запрос выполнился 30 раз" можно прикинуть - а не переоптимизировать ли этот запрос
Nikolay
хинты - это признак плохого кода
Ну я не вижу ничего плохого, чтобы указать оптимизатору мол давай этот запрос хорошенько оптимизируй, я его часто дёргаю
Nikolay
В моём кейсе таких запросов на селект 95%
Anatoly
Ну я не вижу ничего плохого, чтобы указать оптимизатору мол давай этот запрос хорошенько оптимизируй, я его часто дёргаю
если все твои запросы надо яростно обмазывать хинтами, потому что иначе не работает, то скорее всего у тебя данные лежат не так как надо. плюс, стоит вопрос бутстрапа. сбросился по какой-то причине кеш планов - все ждут полчаса, пока мы всё оптимизируем до упора?
Vasily
Тэкс... witness - это про SRTP в quotations, походу
Anatoly
Зачем? Видишь хинт, выполняешь запрос как можно быстрее, в фоне делаешь оптимизацию, следующий запрос выполняешь уже по новому плану
"выполняешь как можно быстрее" - это как? пошёл тупо итерироваться интерпретируемым кодом? что-то скомпилял? какой индекс выбрать, первый попавшийся?
Vasily
Хотя стопэ
Vasily
Там в IL интересное
Ayrat
Там кстати в репе фшарпа подготовку начали к фшарпу 5. Бранч с новыми версиями завезли. Комп выключил если чо уже, позже кину Возрадуемся, благая весть!
Ayrat
Четвертому уже сколько лет?
Ayrat
Четвертый вышел в январе 2016
Ayrat
Лол нет. В июле 2015
Ayrat
То есть 4 года уже
Anatoly
Выполняешь как обычно, так правильнее
нет, потому что мы обсуждаем с тобой оптимизатор с точки зрения его проектирования. т.е. для нас "как обычно" - нет, мы должны выбрать как это будет "как обычно".
Nikolay
нет, потому что мы обсуждаем с тобой оптимизатор с точки зрения его проектирования. т.е. для нас "как обычно" - нет, мы должны выбрать как это будет "как обычно".
Как сейчас это реализовано, так и выполняем. За исключением того, что если видим хинт в запросе, то проверяем, есть ли у нас уже более оптимальный построенный план для этого запроса, если есть, то используем его, если этого плана нет, то занимаемся его построением в фоне
Nikolay
Допустим, построили этот план через 10 минут, и снова прилетел этот запрос, мы для него уже используем оптимальный план
Anatoly
а что важнее, выполнение запросов или оптимизация их? у нас же сервер конкурентно обрабатывает запросы разных пользователей к разным субд?
Nikolay
а что важнее, выполнение запросов или оптимизация их? у нас же сервер конкурентно обрабатывает запросы разных пользователей к разным субд?
Ну это уже как ты хочешь, так и можешь настроить. Можно заставить заниматься этим во время maintenance window
Anatoly
Ну это уже как ты хочешь, так и можешь настроить. Можно заставить заниматься этим во время maintenance window
я не могу ничего настроить, я код оптимизатора в подвале пишу, пока мой паспорт у лоеров оракла
Nikolay
Ну для оптимизатора есть различные настройки, так? И вот ты можешь дописать эту настройку пользовательскую
Anatoly
для начала мне надо определиться с тем, как будет работать "обычно"
Nikolay
Есть же настройка, которая собирает статистику по таблицам в maintenance window, почему нельзя заняться в это же время поиском оптимальных планов
Anatoly
и попасть в примерно 80% кейсов
Anatoly
Так, как сейчас работает, ничего не трогая
как сложно с программистами, которые не могут представить себе ситуацию "оптимизатор не написан, нам надо его написать". я, пожалуй, удалюсь из дискуссии
Vasily
@Dolfik ты не очень прав
Vasily
Проблема скорее всего не в запросах
Vasily
А в том, как ты их используешь
Vasily
Плюс какая структура базы
Nikolay
Проблема скорее всего не в запросах
Я прекрасно понимаю, проблема в архитектуре базы данных
Nikolay
структуре*
Nikolay
Но, это нельзя быстро и легко исправить, и нам с этим жить
Nikolay
И таким кейсом можно облегчить нашу жизнь
Vasily
Ты понимаешь, что этот кейс слабо исполним?
Vasily
Или тебе пока не хватает опыта это понять?
Vasily
Тут это "не лезь, оно тебя сожрет" (с)
Vasily
По той причине, что в большинстве случаев это NP полная задача
Nikolay
потому что у оптимизатора конфликтующие требования: - время оптимизации при компиляции запроса - время выполнения запроса
Nikolay
и надо выбирать баланс
Nikolay
Изначально речь была об этом
Vasily
Ты пытаешься не ту проблему решить
Nikolay
🤷‍♂️
Vasily
Это проблема из серии "Почему отверткой гвозди не закручиваются"
Vasily
Ты нашел следствие
Vasily
Но не причину
Ayrat
Я вот работал как-то с топовым базистом, он тоже топил за выбрасывание хинтов из кода, а я тоже не понимал чо плохого. До сих пор не понял, но я плохой базист. Смотрю на базы как на хранилище - чем проще, тем лучше. 90% кейсов у меня - кивалуе, но особенности редиса того же знать надо, да. Чтобы не блочить его поток своими сканами, например
Ayrat
Была у нас хранимка, где через tvp прилетало от 1 до 5к ентитей. Я ее обмазал хинтами чтобы оптимизнуть самый плохой случай Он пришёл, сказал что я мудак и сделал две хранимки без хинтов, одна с ограниченным набором аргументов (до пяти ентитей) и вторая с твп (для более пяти). Сказал что так будет лучше и хинты мои убрал Не сказать что я постиг глубину глубин, но ебало умное сделал
Vasily
Умное ебало - залог успеха в жизни
Vasily
Я вот, например, умное ебало не умею делать
Vasily
Поэтому я , white male man, в Москве, а всякие башкиры в Ирландии
Anatoly
это как пистолет у военного
Ayrat
Поэтому я , white male man, в Москве, а всякие башкиры в Ирландии
Можно брать не ебалом, а например быть геем в твитере.
Anatoly
если в настоящем бою военному пришлось применять пистолет, ну он его применит, но значит явно что-то пошло не так
Vasily
Можно брать не ебалом, а например быть геем в твитере.
В твиттере меня разбанили, но до быть геем пока не дорос
Vasily
а ты тоже говори (с) старый анекдот
Не, ну я в этом плане старообрядец
Nikolay
Поменяв ручками порядок джоинов в запросе, получилось в два раза уменьшить cost 🌚
Anatoly
ты можешь потратить день-два на играние с порядком джойнов, а оптимизатор - нет