Оптимизация SQL запроса

  Рет қаралды 19,396

Eugene Suleimanov

Eugene Suleimanov

Күн бұрын

Пікірлер: 134
@sergeydegtiarev1795
@sergeydegtiarev1795 9 ай бұрын
Ёмко. Без воды. Доброжелательная подача. Спасибо)
@EugeneSuleimanov
@EugeneSuleimanov 9 ай бұрын
Спасибо за отзыв :)
@СэмФишер-х4д
@СэмФишер-х4д 9 ай бұрын
какое офигенное видео! большое спасибо, Евгений!очень полезно и без воды. как идея-было бы неплохо рассмотреть оптимизацию ресурсов и поиск утечек памяти(с помощью VisualVM к примеру)
@EugeneSuleimanov
@EugeneSuleimanov 9 ай бұрын
Спасибо за поддержку! Это тоже есть планах :)
@admiralakbar1936
@admiralakbar1936 9 ай бұрын
@@EugeneSuleimanov тоже интересно (и как анализировать heap dump)
@qaserus1226
@qaserus1226 9 ай бұрын
Спасибо большое. Как идея, видео об транзакциях, аннотации @Transactional, уровнях изоляции, а так же локах на таблицы и избежание deadlock))
@EugeneSuleimanov
@EugeneSuleimanov 9 ай бұрын
Спасибо за отзыв и идею :)
@ZamalSpace
@ZamalSpace 9 ай бұрын
Быстро, ёмко, полезно. Спасибо за видео про оптимизацию запросов. Однозначно хотелось бы продолжение. Было бы здорово серия видео на тему оптимизации запросов и заигрывания с индексами.
@EugeneSuleimanov
@EugeneSuleimanov 9 ай бұрын
Спасибо за отзыв и идею!
@ratsmasher
@ratsmasher 9 ай бұрын
Евгений, огромное спасибо за видео! Как раз сейчас разбираюсь с индексами и оптимизацией запросов. Очень коротко и максимально понятно, а что самое главное нужно любому бэкенд разработчику.
@EugeneSuleimanov
@EugeneSuleimanov 9 ай бұрын
Спасибо за отзыв!
@Devivl
@Devivl 9 ай бұрын
Как всегда, огромное спасибо, Евгений. Ёмко и понятно. Узнал об удобстве DataGrip и о cost'ах. Буду тестировать. Всё сводится к анализу и, как следствие, удалению избыточных запросов (информации). Воочию представил насколько отсутствие оптимизации влияет на ресурсы и время предоставления информации, хотя таблица состоит всего из нескольких записей. Спасибо!
@EugeneSuleimanov
@EugeneSuleimanov 9 ай бұрын
Большое спасибо за отзыв!
@anjelomanoranjan
@anjelomanoranjan 9 ай бұрын
Бомбическое видео! Я горжусь тем, что мой преподаватель по Java сам пишет профессиональные статьи. Спасибо тебе, Женя, большое))
@EugeneSuleimanov
@EugeneSuleimanov 9 ай бұрын
Спасибо за отзыв :)
@МаксимСамойлов-р6ф
@МаксимСамойлов-р6ф 9 ай бұрын
Классное и очень полезное видео, прям во время вышло!!! Спасибо, Евгений👍👍👍
@EugeneSuleimanov
@EugeneSuleimanov 9 ай бұрын
Спасибо за поддержку!
@zicksu2142
@zicksu2142 6 ай бұрын
Евгений, после просмотра видео очень хочется пожать вам руку и сказать СПАСИБО!
@EugeneSuleimanov
@EugeneSuleimanov 6 ай бұрын
Большое спасибо за отзыв!
@MultiKenes
@MultiKenes 6 ай бұрын
Лучший)) Коротко. Чётко. Ёмко. Полезно. Жаль, что пока мало видосов на канале. Не бросайте это дело
@EugeneSuleimanov
@EugeneSuleimanov 5 ай бұрын
Спасибо за поддержку!
@Михаил-л8л6о
@Михаил-л8л6о 9 ай бұрын
Искал медь, нашёл золото - это про канал Евгения)
@EugeneSuleimanov
@EugeneSuleimanov 9 ай бұрын
Спасибо за поддержку :)
@Lenz_86
@Lenz_86 9 ай бұрын
Евгений, спасибо за контент! Ещё мой руководитель на проекте говорит что нужно всегда избегать подзапросов, практически всегда можно обойтись без них, а на производительность они влияют очень сильно
@EugeneSuleimanov
@EugeneSuleimanov 9 ай бұрын
Спасибо за отзыв!
@klaussr
@klaussr 9 ай бұрын
А зачем же мы их так усиленно учим))
@zvuk3316
@zvuk3316 9 ай бұрын
"Практически всегда можно обойтись без них" - громко сказано)
@МихаилА-у3л
@МихаилА-у3л 7 ай бұрын
Совет от бывалых: не пытайтесь всё сразу вытащить одним запросом из кучи таблиц, бывает гораздо быстрее сделать 2 последовательных запроса. На очень больших таблицах добавляет скорости отсечь ненужные в выборке данные по первичному ключу. Сравнивать лонги проще, чем даты, особенно если дата имеет косвенную/прямую связь с порядком автоинкрементного первичного ключа.
@romankryvolapov
@romankryvolapov 9 ай бұрын
Я бы сказал, что описанние в видео выглядит не как оптимизация, а скорей как просто логика и понимание принципов работы с базой данных, да и запросы очень простые, чтобы заморачиваться с их оптимизацией. Было бы интересно посмотреть на более сложные варианты запросов, где например используется последовательная выборка из множества таблиц, где по данным из первой ищется во второй, а затем например по данным из первой и второй ищется по третьей или что то подобное, ну то есть где возможны разные варианты и нужно выбрать оптимальный, ну или запрос выдает строки со связанными данными из разных таблиц, в таких запросах с кучей join и вложенными запросами действительно есть что оптимизировать. На одном из проектов сейчас как раз такая тема- дофига сложные запросы на пол экрана, и мне кажется, рано или поздно сталкиваешься с такими проектами, и тогда понимаешь, что не шаришь в sql)) А по работе с datagrip- вот это интересно! Стыдно признаться, о нем даже на слышал)) но выглядит круто
@EugeneSuleimanov
@EugeneSuleimanov 9 ай бұрын
Спасибо за комментарий!
@SplashDmg2011
@SplashDmg2011 9 ай бұрын
В IDEA Ultimate это все тоже есть - и explain в удобном виде, и визуализация
@Pablo-m8m5b
@Pablo-m8m5b 9 ай бұрын
Большое спасибо.Как же я соскучился за всем этим)
@EugeneSuleimanov
@EugeneSuleimanov 9 ай бұрын
Спасибо за отзыв!
@ЯоКуассиЖан-Клод
@ЯоКуассиЖан-Клод 6 ай бұрын
Супер ! спасибо огромное, Евгений!)
@EugeneSuleimanov
@EugeneSuleimanov 6 ай бұрын
Большое спасибо за отзыв!
@toddis4912
@toddis4912 13 күн бұрын
В explain 1 цифра - это стоимость для начала конкретного этапа, а 2 - это общая стоимость выполнения. Первая цифра включает все операции выполненные до этого, чтобы начать текущий этап. Чтобы получить стоимость конкретного этапа нужно вычесть из цифры 2 цифру 1. Общая стоимость выполнения запроса это 2 цифра на последнем этапе, цифры не нужно суммировать, как это делает автор. По сути после первого преобразования запроса автором, запрос отработал медленнее))) Но это вполне объяснимо маленьким объемом данных и поэтому цифры будут скакать)
@EugeneSuleimanov
@EugeneSuleimanov 13 күн бұрын
@@toddis4912 спасибо за полезный комментарий и конструктив.
@iamusayev1337
@iamusayev1337 9 ай бұрын
Лучший! Продолжайте пожалуйста в том же духе, с наступающим, всех благ
@EugeneSuleimanov
@EugeneSuleimanov 9 ай бұрын
Большое спасибо за отзыв и поздравления! С наступающими праздниками!!!
@MO3rOBOuBbICEP
@MO3rOBOuBbICEP 9 ай бұрын
Полезный видосик, спасибо!
@EugeneSuleimanov
@EugeneSuleimanov 9 ай бұрын
Спасибо за комментарий!
@user-fz3rk8qv1d
@user-fz3rk8qv1d 2 ай бұрын
спасибо за базу !
@EugeneSuleimanov
@EugeneSuleimanov 2 ай бұрын
Спасибо за отзыв!
@AnnaSmirnova1
@AnnaSmirnova1 9 ай бұрын
Спасибо Евгений, лаконично и понятно
@EugeneSuleimanov
@EugeneSuleimanov 9 ай бұрын
Спасибо за отзыв!
@user-lk8n0fgjk
@user-lk8n0fgjk 8 ай бұрын
Благодарность за классный и ценный ролик
@EugeneSuleimanov
@EugeneSuleimanov 8 ай бұрын
Спасибо за поддержку!
@zvuk3316
@zvuk3316 9 ай бұрын
Большое спасибо за такое полезное видео!)
@EugeneSuleimanov
@EugeneSuleimanov 9 ай бұрын
Спасибо за поддержку!
@Ellek1ng
@Ellek1ng 9 ай бұрын
Отличное видео, спасибо большое!
@EugeneSuleimanov
@EugeneSuleimanov 9 ай бұрын
Спасибо за отзыв!
@ГлебВалерьевич-у6ы
@ГлебВалерьевич-у6ы 9 ай бұрын
да ты мое золото. просто лучший!
@EugeneSuleimanov
@EugeneSuleimanov 9 ай бұрын
Спасибо за поддержку!
@Fikusiklol
@Fikusiklol 5 ай бұрын
Хороший пример для начала, но если посмотреть в последнем плане, то: 1) кверя выполняется дольше, вероятно изза кеша 2) фул скан таблицы, т.е убери индексы и ничего не изменится))
@EugeneSuleimanov
@EugeneSuleimanov 5 ай бұрын
Спасибо за комментарий! Да, согласен, что с точки зрения реалистичности этих сценариев много вопросов. Цель видео - это познакомить зрителя с инструментарием.
@spezdm
@spezdm 9 ай бұрын
Блогодарю за полезное видео
@EugeneSuleimanov
@EugeneSuleimanov 9 ай бұрын
Спасибо за комментарий!
@dmitriysavinov9906
@dmitriysavinov9906 9 ай бұрын
Супер полезное видео!
@EugeneSuleimanov
@EugeneSuleimanov 9 ай бұрын
Спасибо за отзыв!
@bryanin
@bryanin 9 ай бұрын
Очень круто. Супер лайк
@EugeneSuleimanov
@EugeneSuleimanov 9 ай бұрын
Спасибо за отзыв!
@selub1058
@selub1058 Ай бұрын
Класс. Спасибо. ❤ Только на 14:28 в where должно быть больше ИЛИ РАВНО 1 Января
@EugeneSuleimanov
@EugeneSuleimanov Ай бұрын
@@selub1058 большое спасибо за поддержку и за уточнение.
@Aleksei-n6h
@Aleksei-n6h 8 ай бұрын
Женя - топовый чувак
@EugeneSuleimanov
@EugeneSuleimanov 8 ай бұрын
Спасибо за поддержку!
@konstantinmatushenko5831
@konstantinmatushenko5831 9 ай бұрын
Спасибо за видео. Вы в практике часто используете функцию extract? Я вроде ни разу не использовал
@EugeneSuleimanov
@EugeneSuleimanov 9 ай бұрын
Спасибо за отзыв! Нет, не использую, но несколько раз видел. Это учебный пример.
@admiralakbar1936
@admiralakbar1936 9 ай бұрын
6:38 а как получилась итоговая сложность? она где-то написана в выводе explain-а (не вижу), или вручную пришлось сложить сложности? Большое спасибо за видео, качественно и информативно. Про explain на собеседованиях уже спрашивали, теперь понятно откуда начинать)
@EugeneSuleimanov
@EugeneSuleimanov 9 ай бұрын
Да, просто сложил общую сложность :)
@BGlazyrin
@BGlazyrin 9 ай бұрын
Урок получился симпатичный, но демонстрировать оптимизацию на 5 записях... Ну, такое. На малом кол-ве строк индексы могут мешать, а не ускорять. В Oracle'овых БД для тесткейсов часто используем генераторы строк вида "select rownum id, lpad('x',30,'x') from dual connect by level
@EugeneSuleimanov
@EugeneSuleimanov 9 ай бұрын
Спасибо за комментарий! Цель - показать именно основы, потому что многие люди никогда не сталкивались с таким типом задач в принципе. А реальная оптимизация куда сложнее и коварнее.
@BGlazyrin
@BGlazyrin 9 ай бұрын
@@EugeneSuleimanov Да я же не агитирую Вас усложнить сам запрос и его анализ. Не хотите объяснять работу генератора строк, скажите, что не поленились и написали 10 тыс insert'ов руками. Тогда и результат оптимизации в секундах будет более существенным.
@МихаилА-у3л
@МихаилА-у3л 7 ай бұрын
Если придираться, то тогда для более верного сравнения стоимости запроса лучше выполнять его на разных данных и несколько раз.
@cosmo_polit
@cosmo_polit 9 ай бұрын
thanks, that was very helpfull
@EugeneSuleimanov
@EugeneSuleimanov 9 ай бұрын
Thank you for the comment!
@ВалерийЕрмолаев-м1н
@ВалерийЕрмолаев-м1н 9 ай бұрын
Спасибо!🙂
@EugeneSuleimanov
@EugeneSuleimanov 9 ай бұрын
Спасибо за комментарий!
@ManticoreRoko
@ManticoreRoko 9 ай бұрын
Отличная подача материала, доступно и полезно. Вопрос: не вредно ли добавлять >1 индекса в одну таблицу в OLTP СУБД?
@EugeneSuleimanov
@EugeneSuleimanov 9 ай бұрын
Спасибо за отзыв! Здесь нужно искать компромисс, ведь вставка замедлится. Но зависит от контекста задачи.
@artemseleznev3469
@artemseleznev3469 7 ай бұрын
фактологическая ошибка.... косты не надо суммировать, их общая стоимость уже приведена в первой строке explain
@EugeneSuleimanov
@EugeneSuleimanov 7 ай бұрын
Спасибо за уточнение!
@СергейПанин-л6к
@СергейПанин-л6к 2 ай бұрын
Вы стоимость неправильно считаете и вводите людей в заблуждение. "Важно понимать, что стоимость узла верхнего уровня включает стоимость всех его потомков" цитата из документации postgresql.
@EugeneSuleimanov
@EugeneSuleimanov 2 ай бұрын
@@СергейПанин-л6к да, вы абсолютно правы, большое спасибо за конструктивную критику. Я допустил ошибку.
@svetlana4530
@svetlana4530 9 ай бұрын
Спасибо за видео! Для учебных целей очень хорошо, наглядно - многие начинающие просто пишут запросы лишь бы заработало. Оптимизация - это следующая ступень эволюции 😊 Есть ли бесплатный аналог инструмента, которым вы пользовались, доступный из России без всяких vpn-ухищрений?
@EugeneSuleimanov
@EugeneSuleimanov 9 ай бұрын
Спасибо за отзыв! Касательно аналога - PG Admin - стандартный интерфейс.
@svetlana4530
@svetlana4530 9 ай бұрын
@@EugeneSuleimanov спасибо, но, кажется там нет наглядного отображения плана запроса. Или есть?
@EugeneSuleimanov
@EugeneSuleimanov 9 ай бұрын
@@svetlana4530 верно, только raw описание, к сожалению.
@rudolfsikorsky7900
@rudolfsikorsky7900 6 ай бұрын
Спасибо. К сожалению, вся эта красота от JetBrains работает не со всеми БД. И если бы Евгений писал не свой большой и красивый монитор, а маленький - ноутбучный, то зрителям было бы видно гораздо лучше :)
@EugeneSuleimanov
@EugeneSuleimanov 6 ай бұрын
Спасибо за комментарий! По размеру шрифта, постараюсь учесть и справить на будущее :)
@alfalf1593
@alfalf1593 2 ай бұрын
Я правилтно понимаю, что замена join на left join это не оптимизация, а испраление логической ошибки?
@chip253
@chip253 9 ай бұрын
Полное сканирование сразу понятно было. Странно описание таблиц не полное, где developer_id unsigned int not null (default допустим не нужно) - на ревью завалится. Потом created_at тоже not null default now... Про экспрес функцию многие забывают - важный аспект.
@EugeneSuleimanov
@EugeneSuleimanov 9 ай бұрын
Спасибо за комментарий! Разумеется, это не «боевой» код.
@vladislavstepanov7591
@vladislavstepanov7591 2 ай бұрын
что не так с created_at not null default now?
@ercefwxdx
@ercefwxdx 9 ай бұрын
Дякую
@EugeneSuleimanov
@EugeneSuleimanov 9 ай бұрын
Дякую за коментар!
@aksndr61
@aksndr61 9 ай бұрын
А можно ж было сделать функциональный индекс с экстрактом месяца по колонке с датой. Или виртуальную колонку, плюс партиционирование по ней.
@EugeneSuleimanov
@EugeneSuleimanov 9 ай бұрын
Это уже не основы, а несколько более продвинутый подход. И спасибо за комментарий.
@vladislavstepanov7591
@vladislavstepanov7591 2 ай бұрын
смысла в этом нет, только раздувание данных в таблице
@ФомаФомин-с7е
@ФомаФомин-с7е 9 ай бұрын
Спасибо за видео! Вопрос. А есть ли смысл в данном случае вместо двух индексов сделать один индекс на 2 поля (developer_id и created_at)? поскольку джойн по им обоим одновременно идет
@EugeneSuleimanov
@EugeneSuleimanov 9 ай бұрын
Да, можно попробовать сделать такой индекс. Спасибо за отзыв!
@Krasnolesye
@Krasnolesye 9 ай бұрын
Со смартфона - ничего не могу разобрать, сильно мелко. А так материал - ОК. Спасибо
@EugeneSuleimanov
@EugeneSuleimanov 9 ай бұрын
Спасибо за комментарий!
@aazubakin
@aazubakin 9 ай бұрын
Получается индекс из таблицы из которой мы пишем forieng key не создается автоматом при указании связи (developer_id) а создается у той таблицы на которую ссылаемся developers_id?
@EugeneSuleimanov
@EugeneSuleimanov 9 ай бұрын
Верно, Postgres не создает индекс для внешнего ключа автоматически. Автоматически создаются индексы для первичных ключей и уникальный полей.
@rustregas93
@rustregas93 9 ай бұрын
И зачем суммировать стоимость костов? тебе последний шаг и так сумму выдал всех предыдущих шагов.
@БорисИванов-я9м
@БорисИванов-я9м 3 ай бұрын
А ты уверен, что показывает не сразу всю сумму поддерева?
@Oldstav
@Oldstav 9 ай бұрын
Это просто отвратительно 2:30 Автор: Давайте выполним вот такой запрос Ответ: давайте мы не выполним такой запрос… Для того чтобы писать запросы а тем более их оптимизировать, нужна четко поставленная задача от заказчика. И где оно? Т.е. берем какой-то работающий запрос от балды из продакшина и без постановки начинает его «оптимизировать». Ты условие начальное видел, что убираешь один джоин и меняешь тип второго? Как можно менять extract на интервал, если там дата не за один год? Ну добавь 01-01-2022 и результат не сойдется. Про функциональный индекс на базе extract автор даже и не думал. Вопрос автору - куда ты лезешь ничего не понимая в предметной области и что ты хотел донести до аудитории? А потом все слушатели которые тут отлайкали начнут с таким подходом писать такой же говнокод и таким же подходом - читай со свиным рылом лезть в калашный ряд - продакшин
@EugeneSuleimanov
@EugeneSuleimanov 9 ай бұрын
Спасибо за ваше мнение.
@МихаилА-у3л
@МихаилА-у3л 7 ай бұрын
Всем икспердам желаю меньше пафоса. Ведь вы никогда не расскажете, как сами пока росли облажались не раз на коммерческих проектах.
@Kentatsu1
@Kentatsu1 9 ай бұрын
В конечном итоге можно ведь сократить запрос до обычного селекта по таблице tasks, джоин лишний
@EugeneSuleimanov
@EugeneSuleimanov 9 ай бұрын
Здесь был задел на то, что будут запрещены данные developer. Но и пример учебный.
@coolbrain
@coolbrain 9 ай бұрын
Jetbrains со своим Data Grip послал Россиию на 3 буквы насколкьо я знаю, или что то поменялось ? У меня все платные аккаунты заблочили в этом году
@paskonat
@paskonat 9 ай бұрын
Когда невозможно придраться к форме, придираются к содержанию. Евгений, у Вас в конечный результат не попадает 1 января, и, соответственно, вся аналитика идет по другой борозде. ))
@EugeneSuleimanov
@EugeneSuleimanov 9 ай бұрын
Справедливо :) Спасибо за комментарий!
@PurpleDaemon_
@PurpleDaemon_ 9 ай бұрын
11:42 это опять внешний ключ, индекс и так был.
@EugeneSuleimanov
@EugeneSuleimanov 9 ай бұрын
В Postgres внешний ключ по умолчанию не индексируется. Только первичный и unique constraint.
@alekseysverbeev2934
@alekseysverbeev2934 9 ай бұрын
Обзор инструментов интересный, но конечно оптимизация притянута за уши, потому что изначальный пример взят из книги "как писать не надо". Такие вещи и интуитивно понятны, никто же в здравом уме не будет сравнивать месяц в дате с единицей - это как минимум даст неверные данные (за все года). Интересно было бы посмотреть как оптимизировать запрос который большой, "всю жизнь" работал, но под увеличенными нагрузками устал.
@EugeneSuleimanov
@EugeneSuleimanov 9 ай бұрын
Спасибо за комментарий! Пример как делать не нужно из палаты мер и весов :)
@dmytromatvieiev8932
@dmytromatvieiev8932 9 ай бұрын
Цікаво, що ваш сайт заблокований для доступу з України)
@EugeneSuleimanov
@EugeneSuleimanov 9 ай бұрын
Проверю, спасибо за сигнал.
@МаксимЖивотовский-ц8о
@МаксимЖивотовский-ц8о 9 ай бұрын
+
@EugeneSuleimanov
@EugeneSuleimanov 9 ай бұрын
Спасибо за поддержку!
@N5O1
@N5O1 9 ай бұрын
неужели ютуб начал советовать нормальные материалы =)
@EugeneSuleimanov
@EugeneSuleimanov 9 ай бұрын
Спасибо за комментарий!
@ИванИван-х7у
@ИванИван-х7у 9 ай бұрын
полная чушь расскажите хотя бы человеку, что бывает предварительный план выполнения, а бывает реальный
@EugeneSuleimanov
@EugeneSuleimanov 9 ай бұрын
ИМХО для человека, который только знакомится с оптимизацией запросов - это уже не совсем основы. Более серьёзные подходы и теоретическая база требует большего времени.
@ThomasLinkzat
@ThomasLinkzat 9 ай бұрын
Очень мало обьяснения понятий. Что за начальная сложность, что за конечная сложность. Не обьяснили чем скобки помешали. Не обьяснили этапы которые почему то ушли после оптимизации. Очень сумбурное видео. Вам не хватает сценария чтоли. Но идея хорошая.
@EugeneSuleimanov
@EugeneSuleimanov 9 ай бұрын
Спасибо за отзыв и вообще мнение!
@С.Семенчук
@С.Семенчук 4 ай бұрын
Столько глупостей наговорил. Может не стоит с такими поверхностными представлениями из чужой области лезть учить других?
@blindbird1619
@blindbird1619 6 ай бұрын
Странная оптимизация. "Уберем лишнюю таблицу из запроса"... Дак это так можно надобавлять в запрос 50 ненужных таблиц, а потом героически с ними справиться. Кто будет добавлять в свои запросы ненужные таблицы?
@sergeykovalev7276
@sergeykovalev7276 9 ай бұрын
Евгений спасибо огромное! У вас есть ошибка в последнем запросе: должно быть created_at >= '2023-01-01', но на результат не влияет
@EugeneSuleimanov
@EugeneSuleimanov 9 ай бұрын
Спасибо за отзыв! Да, уже подсказали об ошибке, спасибо :)
Многопоточность глазами разработчика
1:36:04
哈莉奎因怎么变骷髅了#小丑 #shorts
00:19
好人小丑
Рет қаралды 51 МЛН
SCHOOLBOY. Мама флексит 🫣👩🏻
00:41
⚡️КАН АНДРЕЙ⚡️
Рет қаралды 7 МЛН
GIANT Gummy Worm Pt.6 #shorts
00:46
Mr DegrEE
Рет қаралды 78 МЛН
Будущее программирования
28:16
Eugene Suleimanov
Рет қаралды 8 М.
Главный секрет SQL! Как ускорить запросы в 1000 раз???
22:02
Андрей Иванов | Python
Рет қаралды 15 М.
Подготовка к собесу - Оптимизация запросов
25:12
Основы системного дизайна за 30 минут
28:46
Eugene Suleimanov
Рет қаралды 29 М.
Docker и Kubernetes глазами разработчика
2:46:22
Eugene Suleimanov
Рет қаралды 10 М.
哈莉奎因怎么变骷髅了#小丑 #shorts
00:19
好人小丑
Рет қаралды 51 МЛН