Индексы баз данных - Почему так быстро - проще некуда

  Рет қаралды 14,806

Програмысли Влог

Програмысли Влог

3 жыл бұрын

Поддержать меня: boosty.to/mflenov
Базы данных могут использовать различные структуры данных для индексации, но чаще всего наверно можно увидеть B-Tree, B+Tree и Hash. Hash достаточно популярный, потому что используется не только в базе данных. Деревья распространены, но не так сильно.
В этом видео я поговорю в теории о индексах. Это не конкретная реализация какой-то базы, а общая теория.
Текстовая версия доступна здесь
www.flenov.info/story/show/In...

Пікірлер: 65
@Dev-lessons
@Dev-lessons 3 ай бұрын
Поддержать меня на Бусти и получить доступ к доп контенту: boosty.to/mflenov Обо мне: www.flenov.ru Мой ИТ блог www.flenov.info Телеграм: t.me/mflenov Twitter: twitter.com/flenov Инстаграм: instagram.com/mflenov/ Мой просто блог blo.moe
@rrrrain
@rrrrain 2 ай бұрын
Удивительно 20 лет назад читал вашу книгу по делфи и учился программировать, а сейчас вот случайно нашел на ютубе. Спасибо Вам
@user-hw9nc8np3c
@user-hw9nc8np3c 3 жыл бұрын
Кайф! Гораздо понятнее чем в универе рассказывали) спасибо!
@Dev-lessons
@Dev-lessons 3 жыл бұрын
Спасибо
@manOfPlanetEarth
@manOfPlanetEarth 2 жыл бұрын
@@Dev-lessons 28:45 о каком каждом третьем говорите, если выбрали каждого четвертого??🤔 ну, камон, серьезно.
@Dev-lessons
@Dev-lessons 2 жыл бұрын
@@manOfPlanetEarth Я же программист и все нумерую с нуля. Ты считаешь это так важно с нуля или единицы / третий или четвертый? Это же пример
@manOfPlanetEarth
@manOfPlanetEarth 2 жыл бұрын
@@Dev-lessons 1. но потом ты разбиваешь второй уровень, выбирая действительно каждого третьего и говоря "каждого третьего", а не "каждого второго". так куда делась твоя нумерация с нуля? да, я считаю очень важным, чтобы был порядок и единообразие в речи и действиях. а то тут с нуля, там с единицы. тут я программист, а тут я уже и не программист. вот именно, что раз ты программист, то должен понимать важность правильности каждого символа и слова. кодишь, поди, не от балды, а все четко и выверенно? все по синтаксису языка? а че так? типа только в примерах можно на похуях вещать?🙂 тогда не надо было делать аннотации красным про "Баранова" и "Воронова". Но ты сделал. Потому что стараешься сделать нормально и в примере. А тут рогом упёрся. Зачем? 2. Почему бы сразу не сказать, в чем же особенности В- и В+ деревьев? Чай, не обезьяны смотрят - поймут, кругозор расширят😉 3. Кластерный индекс - это что же, таблица срослась с индексом?🤔 Очень интересно. В майкрософт sql можно делать такой индекс? И вообще, в любой субд можно? Смотрел я у тебя самый первый видос про гит: было видно, что без плана и потому очень слабенько вышло: сумбурно и не информативно. Вот решил глянуть про индексы, почтить память, так сказать, о давней работе с sql. Послевкусие получше, чем после гит. Вы способны на большее. Составляйте план на листочке. Продумывайте примеры, нюансы, вносите их в план. Тогда всё будет чётко как у дьячего. Это же ваш след в этом мире.
@TbIPDblM
@TbIPDblM Жыл бұрын
Годный туториал на пальцах с применением сложных терминов понятный даже ёжикам !
@Cre0w
@Cre0w 3 жыл бұрын
Шикарный урок. Для повторения теории отлично изложено. Особенно схемы помогают восприятию.
@Dev-lessons
@Dev-lessons 3 жыл бұрын
Спасибо, судя по просмотрам не зря старался
@iMarina12345
@iMarina12345 11 ай бұрын
Двойка по литературе вам в любом случае. Пушкин Александр, не Сергей 😂. Но за видео спасибо. Всё понятно объясняете
@demiurgich
@demiurgich 2 жыл бұрын
Да-да. Очень понравилось! Я перестал бояться индексов. Хочу поскорее начать их использовать. Давай продолжение такой важной темы, пожалуйста! Спасибо!
@Dev-lessons
@Dev-lessons 2 жыл бұрын
Уже записано, скоро будет
@magomedmagomedov9168
@magomedmagomedov9168 3 жыл бұрын
Пушкин не Леонид и не Сергей, он Александр😀
@glebkolobov
@glebkolobov 3 жыл бұрын
Александр Сергеевич😀
@Dev-lessons
@Dev-lessons 3 жыл бұрын
Точно, я же говорил, двойку мне нужно по литературе
@vc7057
@vc7057 2 жыл бұрын
Я тоже поржал на этом моменте )))))
@user-jb7xp6ms3j
@user-jb7xp6ms3j 3 жыл бұрын
Все просто и понятно, спасиб
@valeriik9135
@valeriik9135 3 жыл бұрын
Спасибо большое за видео. все очень помогает разложить по полкам и, в частности, показывает удачный способ объяснить материал другим людям. Миш, подскажи, планируется ли видео по БД где объясняется практическое применения понятия схем БД, зачем делить на схемы, преимущества, недостатки, опыт из твоей практики?
@Dev-lessons
@Dev-lessons 3 жыл бұрын
Не планировал, но теперь задумался - что может действительно стоит. Добавил в план.
@johndorian361
@johndorian361 3 жыл бұрын
Спасибо. Наглядно и понятно.
@nikolayn4022
@nikolayn4022 2 жыл бұрын
Спасибо, всё понятно) блок-схемы очень помогают в понимании)
@Dev-lessons
@Dev-lessons 2 жыл бұрын
Спасибо
@valarg5756
@valarg5756 3 жыл бұрын
Спасибо большое, теперь жду практику индексов на нашей базе Лигуа)))
@Dev-lessons
@Dev-lessons 3 жыл бұрын
Обязательно будет
@sanix183
@sanix183 Жыл бұрын
Вы великолепны в обьяснении!
@BorgerKat
@BorgerKat 7 ай бұрын
Спасибо. Очень доступно.
@user-gj4wf1uu8s
@user-gj4wf1uu8s 11 ай бұрын
красавчик, всё разжевал. спасибо
@alexzir
@alexzir 2 жыл бұрын
Спсибо! Доступно очень!
@Dev-lessons
@Dev-lessons 2 жыл бұрын
Спасибо
@kl45gp
@kl45gp Жыл бұрын
офигенный пример
@user-zk8dc8dx2y
@user-zk8dc8dx2y 2 жыл бұрын
По теории супер, я наконец понял как работают индексы. Спасибо 👍 А планируется ли урок как реализовать подобное на практике в MySQL?
@Dev-lessons
@Dev-lessons 2 жыл бұрын
Есть в планах даже на ближайшее время
@leskhanmuratuly5374
@leskhanmuratuly5374 Жыл бұрын
Ничего не понятно, но очень интересно)
@denisdd5885
@denisdd5885 Жыл бұрын
Золотой человек
@Dev-lessons
@Dev-lessons Жыл бұрын
Спасибо
@IgorGallemar
@IgorGallemar 3 жыл бұрын
Первый!!!
@ruslanadamovich7505
@ruslanadamovich7505 Жыл бұрын
Если сделать вычисляемое поле от длинного, которое "возьмет" первые три-четыре символа - насколько ефективен будет поиск по индексу ? Например, товар 'олддлобблпстпорпопололпол' сокращен на 'олдд' и это поле - индекс....ну и вопрос уникальности тогда возникает Как быть ?
@AndriiKuftachov
@AndriiKuftachov 2 жыл бұрын
Про блоки, может там и есть какие-то физические лимиты, но основные лимиты логические, которые ты настраиваем на уровне операционной системы, как для жёсткого диска, так и для оперативной памяти. Логика в том, что чтение из оперативной памяти, а тем более из диска - это медленная операция, выгоднее прочитать побольше, чтобы потом уже с этим разбираться поближе к процессору, а надежде, что нужные данные окажутся рядом.
@Dev-lessons
@Dev-lessons 2 жыл бұрын
У файловой системы есть размеры блока и если использовать NTFS, то это будет. 4 кб, поэтому хранить по одному числу не выгодно, их желательно группировать в блоки, потому что они блоками будут храниться в файловой системе и блоками читаться support.microsoft.com/en-us/topic/default-cluster-size-for-ntfs-fat-and-exfat-9772e6f1-e31a-00d7-e18f-73169155af95 Где-то натыкался, что SSD именно есть дисковый лимит.
@Dev-lessons
@Dev-lessons 2 жыл бұрын
engineering.linkedin.com/blog/2016/05/designing-ssd-friendly-applications-for-better-application-perfo#:~:text=The%20smallest%20updating%20unit%20in,in%20at%20least%204KB%20reading.
@AndriiKuftachov
@AndriiKuftachov 2 жыл бұрын
@@Dev-lessons это детали реализации, на которые мы не можем закладываться. Минимальное, на что мы можем рассчитывать - это наша файловая система, а это настройки ОС. Хотя, согласен, что копаться в таком должен DBA, и нам белым людям, программистам, нечего там делать 🤣.
@Dev-lessons
@Dev-lessons 2 жыл бұрын
@@AndriiKuftachov Так ведь все просто - файловая система любит 4кб и SSD читает по 4 кб, так что как программисты ради оптимизации мы должны хранить данные не по 2кб, а как минимум 4.
@AndriiKuftachov
@AndriiKuftachov 2 жыл бұрын
@@Dev-lessons по-моему, мы как программисты давно мало чего храним в файлах 🤠. А вот внутренняя реализация работы с файловой системой базы данных - это слишком высокие материи. Но мой посыл в том, что если это не спецификация SSD, а похоже, что этот всеми э всё-таки не спецификация, то заложившись на микрооптимизациб, можно потом получить проблемы, если завтра какой-то из производителей поменяет размер ячейки.
@user-nu9sz8dp1z
@user-nu9sz8dp1z 2 жыл бұрын
23:00 512 байт - размер физического сектора носителя, например SD-карты сектор - минимально адресуемая единица памяти накопителя файловая система использует кластеры из одного или более секторов. размер кластера (кол-во секторов) задаётся при форматировании. секторы в кластере расположены последовательно, что ускоряет к ним доступ. справедливо для файловых систем FAT
@Dev-lessons
@Dev-lessons 2 жыл бұрын
При форматировании ты зайдёшь логическое разбиение диска. ты Можешь задать размер блока 8кб, но это не значит, что диск будет читать сразу по 8, он может физически читать два по 4кб.
@user-nu9sz8dp1z
@user-nu9sz8dp1z 2 жыл бұрын
@@Dev-lessons физически читает по секторам
@Dev-lessons
@Dev-lessons 2 жыл бұрын
@@user-nu9sz8dp1z это я и говорил в видео и ты тоже правильно написал. Есть физический сектор, а есть логический - форматирование. Я просто добавил это к твоему комментарию.
@glebkolobov
@glebkolobov 3 жыл бұрын
А если индекс по более, чем одна колонка, как индекс строится?
@Dev-lessons
@Dev-lessons 3 жыл бұрын
То же самое, просто представь, что данные отсортированы по двум колонкам. Например, фамилия и имя. Сначала сортируется по фамилии, а для тех, у кого фамилия одинаковая сортируется по имени. И потом по этому делу строится дерево.
@codingfox
@codingfox Жыл бұрын
"Плоский" индекс вроде называют плотным)
@user-fq4pc7fm2z
@user-fq4pc7fm2z 2 жыл бұрын
так я и не понял, как в реальной жизни это делать. Если база данных в 0,5млн записей например, что тоже вручную вот так разбивать?
@Dev-lessons
@Dev-lessons 2 жыл бұрын
Ты просто создаешь индекс, ничего вручную делить ненужно, а в видео рассказывается как работают внутри индексы на основе B деревьев
@jorge.gancho
@jorge.gancho 3 жыл бұрын
Правильный способ изложения материала. По сути собес - смотрят как рассуждает человек
@dmitriys5353
@dmitriys5353 Жыл бұрын
+
@victoryjun
@victoryjun 3 ай бұрын
В 1990 году нам говорили, что такой поиск называется "метод дихотомии". Не прошло даже 30 лет и уже он стал "бинарным". Почему?
@Dev-lessons
@Dev-lessons 3 ай бұрын
Не знаю, в программировании всегда он назывался двоичным или бинарным поиском. Гугланул и вижу есть понятие метод дихотомии, но не вижу ни одной ссылки связанной с ИТ. А вот двоичный поиск тут же указывает именно на ИТшную тему.
@victoryjun
@victoryjun 3 ай бұрын
@@Dev-lessons когда я учился в институте, еще и интернета то НЕ БЫЛО! Что вы там искали в тырнете то? :)
@Dev-lessons
@Dev-lessons 3 ай бұрын
@@victoryjun Я сейчас проверил, что в интернете пишут. Когда я учился интернета тоже не было, но уже тогда называли бинарным
@victoryjun
@victoryjun 3 ай бұрын
@@Dev-lessons странно, но я алгоритмы изучал на ЕС1420 (комп занимал место в 3-х комнатах) на языке Fortran и тогда алгоритм "бинарным" не называли. ЭТО НЕ ЛОГИЧНО! там ни чего бинарного НЕТ. Бинарный вид - это "0" или "1". Спрашивается с "какого боку" деление пополам стало вдруг "бинарным". Делится интервал на отрезки равной величины. Ни чего бинарного там нет.
@glebfadeev9782
@glebfadeev9782 Жыл бұрын
как мне больно смотреть как вы с тачпадом мучаетесь
@Dev-lessons
@Dev-lessons Жыл бұрын
У Surface тач пад очень маленький и когда микрофон перекрывает доступ к нему и пользоваться неудобно. Но когда микрофон не мешает ещё терпимо
@leonid_konoplin
@leonid_konoplin Жыл бұрын
можно ли записать такое же видео про View в БД?
@Dev-lessons
@Dev-lessons Жыл бұрын
Именно про индексы или в целом про представления? О представлениях я говорил тут: kzbin.info/www/bejne/gYbYZYeQn8iGjck
Создание индексов баз данных MySQL и MS SQL Server
21:03
Програмысли Влог
Рет қаралды 4,6 М.
原来小女孩在求救#海贼王  #路飞
00:32
路飞与唐舞桐
Рет қаралды 62 МЛН
How To Choose Ramen Date Night 🍜
00:58
Jojo Sim
Рет қаралды 49 МЛН
MySQL 8.0: используем индексы для ускорения запросов
39:41
Ускорение Сайтов :: Метод Лаб
Рет қаралды 6 М.
SQL-инъекции | Клуб компьютерной безопасности
45:51
Студенческие клубы разработки СГУ
Рет қаралды 2,4 М.
How do SQL Indexes Work
12:12
kudvenkat
Рет қаралды 558 М.
Продвинутый курс SQL за час - проще некуда
1:06:23
Програмысли Влог
Рет қаралды 20 М.
Вопросы по SQL и Базам Данных на интервью - Часть 2
21:41
Програмысли Влог
Рет қаралды 13 М.
Базы данных B-tree
19:28
Sergey Nemchinskiy
Рет қаралды 23 М.
Как устроен B-TREE индекс в базах данных
23:06
Ваня Ио про разработку
Рет қаралды 2,6 М.