Как Реляционные базы данных Работают Под Капотом?

Я всегда интересовался тем, как можно бросить некоторый SQL в базу данных, и это почти мгновенно возвращает результаты организованным способом, не думая об этом как ничто кроме черного квадрата.

Что действительно продолжается?

Я вполне уверен, это имеет некоторое отношение, как значения регулярно размечаются в памяти, подобной массиву; но кроме этого, я еще не знаю много.

Как SQL анализируется способом для упрощения всего этого?

18
задан Brian 9 November 2018 в 14:35
поделиться

4 ответа

Механизм строит так называемый план запроса.

Это набор алгоритмов, используемых для возврата наборов, которые вы логически описали с помощью запроса SQL .

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

  • В MySQL и PostgreSQL вы добавляете к запросу слово EXPLAIN

  • В SQL Server запускаете SET SHOWPLAN_TEXT ON перед запуском запроса или просто нажмите Ctrl-L в Management Studio

  • В Oracle вы добавляете запрос с помощью EXPLAIN PLAN FOR ], а затем введите SELECT * FROM (dbms_xplan.display)

Вы можете найти интересную эту статью в моем блоге:

, в котором рассматривается тот же вопрос.

12
ответ дан 30 November 2019 в 08:47
поделиться

Вы можете прочитать эти книги:

[1] H. Гарсиа-Молина, Внедрение системы баз данных, Prentice Hall, 2000

[2] R. Элмасри, С. Б. Нават, Основы систем баз данных, The Benjamin / Cummings Publ. Comp., Inc, 1994

2
ответ дан 30 November 2019 в 08:47
поделиться

Я почти уверен, что это имеет отношение к тому, как значения регулярно размещаются в памяти, подобно массиву; но кроме этого, я больше ничего не знаю.

Возможно, вы также захотите найти статьи о B+ деревьях. Это структура данных, которую используют основные реляционные базы данных.

3
ответ дан 30 November 2019 в 08:47
поделиться

В основном смысле для многих СУБД:

a) Этап синтаксического анализа принимает входные данные от настройки сервера (сокеты, что угодно) и превращает этот SQL в действительный AST или другой промежуточный форма.
б) Затем он передает эту информацию механизму хранения, который превращает это описание запроса в набор поисков по индексам, таблицам, разделам, реплицированным данным и другим элементам, которые составляют семантику хранения схемы
c) Затем движок возвращает набор данных, который затем предоставляется клиенту в любой форме (XML, CSV, зависит от клиента).

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

На самом деле RDBM содержат все виды структур из информатики ... и каждая имеет высокоразвитые и специализированные методы для преобразования подразумеваемой семантики SQL в конкретное хранилище.

Подумайте, насколько разные MySQL и Oracle ... или PostgreSQL и Microsoft SQL. Все они пытаются соответствовать какой-то общей спецификации, подобной SQL ... но то, как эта спецификация выполняется, различается.

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

Существует тонн баз данных с открытым исходным кодом , таких как MySQL , PostgreSQL и поисковых систем, таких как Sphinx , вы можете посмотреть при их выполнении. Открытый исходный код предназначен для обучения как угодно! Попробуйте найти «наставника», который проведет вас через источник.

5
ответ дан 30 November 2019 в 08:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: