Что такое MySQL?

MySQL разработан и поддерживается шведской компанией MySQL AB и написан на языках программирования C и C++. Он был создан Майклом Видениусом и Дэвидом Хьюзом.

MySQL — это система управления реляционными базами данных (RDBMS), доступная в виде бесплатного программного обеспечения с открытым исходным кодом по лицензии GNU General Public License. Это система управления базами данных, быстрая, масштабируемая и простая в использовании. MYSQL совместим с различными операционными системами, включая Windows, Linux и macOS. MySQL — это язык структурированных запросов (SQL), который позволяет вам манипулировать, управлять и извлекать данные с помощью различных запросов. Поддерживается компанией Oracle.

Функции:

  • Система управления реляционными базами данных (RDBMS): MySQL — это система управления реляционными базами данных. Запросы SQL используются для просмотра и управления записями таблицы на этом языке базы данных.
  • Простота в использовании: MySQL — это простая база данных для работы. Нам просто нужно изучить основы SQL. Для построения и взаимодействия с MySQL требуется всего несколько простых операторов SQL.
  • Это безопасно: MySQL имеет надежный уровень защиты данных, чтобы защитить конфиденциальные данные от злоумышленников. Кроме того, MySQL шифрует пароли.
  • Архитектура клиент/сервер. Вслед за архитектурой клиент/сервер следует MySQL. Сервер базы данных (MySQL) и неограниченное количество клиентов (прикладных программ) подключаются к серверу, что позволяет им запрашивать данные, сохранять изменения и т. д.
  • Бесплатная загрузка.MySQL можно использовать бесплатно, поэтому мы можем получить ее бесплатно с официального сайта MySQL.
  • Масштабируемость: MySQL имеет модульную структуру, поскольку допускает многопоточность. Он может работать практически с любым объемом данных, до 50 миллионов строк и более. Приблизительно 4 ГБ — это максимальный размер файла по умолчанию. Однако теоретически мы можем увеличить это число до 8 ТБ данных.
  • Скорость. MySQL считается одним из самых быстрых языков баз данных, что подтверждается многочисленными тестами производительности.
  • Высокая гибкость. MySQL очень универсален, поскольку поддерживает широкий спектр встроенных приложений.
  • Совместимость со многими операционными системами: MySQL может работать в различных операционных системах, включая Novell NetWare, Windows, Linux, UNIX (включая Sun Solaris, AIX и DEC UNIX), OS/2, FreeBSD, и другие. MySQL также позволяет клиентам работать на той же машине, что и сервер, или на отдельном компьютере (связь через локальную сеть или Интернет).
  • Разрешает откат: MySQL поддерживает транзакции с откатом, фиксацией и восстановлением после сбоя.
  • Эффективность использования памяти: его производительность высока благодаря тому, что утечка памяти минимальна.
  • Высокая производительность. Благодаря особой архитектуре механизма хранения MySQL работает быстрее, эффективнее и дешевле. Он обеспечивает очень хорошие результаты производительности по сравнению с другими базами данных без ущерба для каких-либо важных функций программного обеспечения. Из-за разной кэш-памяти имеет быстро загружаемые утилиты.
  • Высокая производительность. Триггеры, хранимые процедуры и представления используются в MySQL, чтобы помочь разработчикам работать более продуктивно.
  • Не зависит от платформы. Его можно загрузить, установить и запустить в большинстве операционных систем.
  • Разбиение на разделы. Эта функция повышает эффективность и позволяет быстро управлять большими базами данных.
  • Поддержка графического интерфейса пользователя: MySQL предлагает «MySQL Workbench», унифицированный визуальный инструмент для работы с базами данных с графическим пользовательским интерфейсом для архитекторов баз данных, разработчиков и администраторов баз данных. MySQL Workbench включает в себя создание SQL, моделирование данных, миграцию данных и настройку сервера, администрирование пользователей, резервное копирование и другие инструменты администрирования. Версии MySQL Server 5.6 и выше обеспечивают полную поддержку графического интерфейса.
  • Поддержка двойного пароля.MySQL версии 8.0 поддерживает двойные пароли: один — это существующий пароль, а другой — резервный пароль, который мы можем использовать для переключения на новый. "Выучить больше".

SQL и MySQL:

SQL (язык структурированных запросов) — это стандартный язык, используемый для работы, управления и доступа к базам данных. SQL можно использовать для создания программ, которые вносят изменения в базы данных. SQL также можно использовать для построения и изменения схем баз данных. Одной из самых привлекательных функций SQL является возможность доступа к нескольким записям в базе данных с помощью одного заказа.

SQL:

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

MYSQL:

  • MySQL — первая реляционная база данных с открытым исходным кодом.
  • MySQL — это реляционная база данных, которая использует SQL для запросов к базе данных.
  • MySQL — это база данных, которая хранит существующие данные в базе данных упорядоченным образом.
  • MySQL помогает хранить, изменять и управлять данными в табличном формате.
    - MySQL имеет встроенный инструмент — MySQL workbench — для облегчения проектирования и создания баз данных.
  • MySQL поддерживает несколько механизмов хранения, а также подключаемые механизмы хранения.
  • В MySQL можно выполнить резервное копирование данных, извлекая операторы SQL.
  • Однако в MySQL сервер блокирует базу данных во время сеанса резервного копирования данных, чтобы избежать повреждения данных при переходе с одной версии MySQL на другую.
  • В MySQL с использованием двоичных файлов можно легко манипулировать и изменять файлы базы данных во время выполнения.
  • Это платформа с открытым исходным кодом.

Оракл против MySQL

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

MYSQL:

  • MySQL имеет открытый исходный код и бесплатен для всех. Он находится под лицензией GNU.
  • MySQL совместим с Linux, UNIX, Windows, Mac OS X, z/OS, Symbian, BSD и AmigaOS.
  • MySQL не поддерживает разделение данных.
  • MySQL не поддерживает распределенные базы данных.

Оракул:

  • Oracle имеет лицензию для коммерческих целей. Его экспресс-версия бесплатна для студентов.
  • Oracle совместим с Linux, UNIX, Windows, Mac OS X и z/OS.
  • Oracle поддерживает секционирование данных.
  • Oracle поддерживает распределенные базы данных.

Архитектура:

Архитектура MYSQL определяет отношения между различными компонентами системы MYSQL. Клиент-серверная архитектура используется MYSQL. Он разработан таким образом, чтобы конечные пользователи или клиенты могли использовать различные сетевые службы для доступа к ресурсам с серверного компьютера. Основные уровни архитектуры MYSQL следующие:

  • Клиент
  • Сервер
  • Место хранения

Узнайте больше о некоторых часто задаваемых вопросах на собеседованиях по MYSQL здесь.

Клиент:

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

  • Обработка соединения. Когда клиент отправляет запрос на сервер, сервер принимает его и подключает клиента. Когда клиент подключается к серверу в это время, ссылке предоставляется отдельный поток. Все клиентские запросы выполняются с помощью этого потока.
  • Аутентификация. Когда клиент подключается к учетной записи MYSQL, аутентификация выполняется на стороне сервера. Имя пользователя, исходный хост и пароль используются для аутентификации.
  • Безопасность. Когда клиент успешно подключается к серверу MySQL после аутентификации, сервер проверяет, есть ли у клиента разрешения на выполнение этих запросов к серверу MySQL.

Сервер:

Логические функции структуры управления реляционными базами данных MYSQL обрабатываются вторым уровнем конструкции MYSQL. «Мозг архитектуры MYSQL» — другое название этого уровня системы MYSQL. Когда клиент отправляет запрос на сервер, сервер отвечает выводом, как только инструкция соответствует. Ниже приведены различные подкомпоненты сервера MYSQL:

  • Обработка потоков. Когда клиент отправляет запрос на сервер, сервер принимает его и подключается к клиенту. Когда клиент подключается к серверу в это время, ссылке предоставляется отдельный поток. Управление потоками уровня сервера обеспечивает этот поток. Модуль обработки потоков также обрабатывает запросы на стороне клиента, которые выполняются потоком.
  • Синтаксический анализатор. Парсер представляет собой тип программного компонента, который создает структуру данных (дерево синтаксического анализа) на основе заданных входных данных. Перед синтаксическим анализом выполняется лексический анализ, при котором данные разбиваются на ряд токенов. После того, как данные доступны в более мелких компонентах, синтаксический анализатор выполняет анализ синтаксиса и семантики, а затем генерирует дерево синтаксического анализа в качестве выходных данных.
  • Оптимизатор. После завершения синтаксического анализа блок оптимизатора применяет различные методы оптимизации. Эти методы могут включать в себя, среди прочего, переписывание запроса, сканирование таблиц в определенном порядке и выбор подходящих индексов для использования.
  • Кэш запросов. Кэш запросов сохраняет весь набор результатов для введенного оператора запроса. MYSQL Server консультируется с кешем запросов перед синтаксическим анализом. Когда клиент пишет запрос, если запрос в кеше совпадает с запросом, написанным клиентом, сервер пропускает синтаксический анализ, оптимизацию и даже выполнение и просто отображает вывод из кеша.
  • Буфер и кэш. Кэш и буфер сохранят предыдущий запрос или проблему пользователя. Когда пользователь вводит запрос, он сначала переходит к кэшу запросов, который проверяет, существует ли такой же запрос или проблема в кэше. Если тот же вопрос открыт, он даст результаты, не мешая синтаксическому анализатору и оптимизатору.
  • Кэш метаданных таблицы. Кэш метаданных представляет собой раздел памяти, в котором хранится информация о базах данных, индексах и объектах. Размер кэша метаданных увеличивается по мере роста числа доступных баз данных, индексов или объектов.
  • Кэш ключей. Запись индекса, которая однозначно идентифицирует объект в кэше, называется кэшем ключей. Пограничные серверы хранят контент по умолчанию на основе полного пути к ресурсу, а также строки запроса.

Место хранения

Уровень механизма хранения архитектуры MYSQL отличает его как особый и предпочтительный для разработчиков. В результате слой MYSQL считается наиболее часто используемой СУБД. Различные типы механизмов хранения используются на серверах MYSQL для различных обстоятельств и требований, таких как InnoDB, MYiSAM, NDB, Memory и т. д. Эти механизмы хранения используются как подключаемые механизмы хранения с подключаемыми пользовательскими таблицами.

Они отвечают за хранение и извлечение всех данных MySQL. Каждый механизм хранения имеет свой набор преимуществ и недостатков. API механизма хранения — это то, как сервер взаимодействует с ними. На уровне запроса этот интерфейс маскирует несоответствия между механизмами хранения и делает их в значительной степени прозрачными. В API есть несколько десятков низкоуровневых функций, которые делают такие вещи, как «запустить транзакцию» и «выбрать строку с этим первичным ключом».

  • Ядро InnoDB:

InnoDB — это механизм хранения транзакций MySQL по умолчанию, а также наиболее важный и широко используемый. Он был создан для обработки большого количества краткосрочных транзакций, которые обычно завершаются, а не откатываются. Это также распространено для нетранзакционного хранилища из-за его производительности и автоматического восстановления после сбоя. Если у вас нет веской причины использовать другой движок, вы можете использовать InnoDB для своих таблиц.

Данные в InnoDB хранятся в табличном пространстве, которое представляет собой набор из одного или нескольких файлов данных. Табличное пространство — это автономный черный ящик, которым управляет InnoDB. InnoDB будет хранить данные и индексы каждой таблицы в отдельном файле в MySQL 4.1 и более поздних версиях. InnoDB также может создавать свое табличное пространство из необработанных разделов диска, но современные файловые системы делают это ненужным.

Таблицы в InnoDB основаны на кластеризованном индексе. Большинство других механизмов хранения MySQL имеют структуру индексов, которая несколько отличается от InnoDB. В результате поиск первичного ключа выполняется очень быстро. Вторичные индексы (индексы не первичных ключей) включают столбцы первичного ключа, поэтому, если ваш первичный ключ высокий, другие ваши индексы также будут такими же. Если вы собираетесь иметь много индексов в таблице, вам следует стремиться к небольшому первичному ключу. Формат хранилища является кроссплатформенным.

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

  • Ядро MyISAM:

MyISAM, который был механизмом хранения MySQL по умолчанию в версиях 5.1 и более ранних, предлагает широкий спектр возможностей, включая полнотекстовое индексирование, сжатие и пространственные (ГИС) функции. MyISAM не поддерживает транзакции и блокировки на уровне строк. Тот факт, что он даже близко не защищен от сбоев, возможно, является его самым большим недостатком. Именно благодаря MyISAM, спустя более десяти лет после получения транзакций, MySQL все еще имеет клеймо нетранзакционной системы управления базами данных! Его можно использовать, если вам нужны данные только для чтения или если ваши таблицы невелики и их несложно исправить.

Каждая таблица в MyISAM обычно хранится в двух файлах: файле данных и индексном файле. Расширения двух файлов — .MYD и .MYI соответственно. Динамические или статические (фиксированной длины) строки можно найти в таблицах MyISAM. На основе спецификации таблицы MySQL определяет, какой формат использовать. Максимальное количество строк, которое может содержать таблица MyISAM, определяется объемом дискового пространства, доступного на сервере базы данных, и самым большим файлом, который позволяет создать ваша операционная система.

  • Другие встроенные механизмы

Подсистема архивирования Подсистема архивации поддерживает только запросы INSERT и SELECT, а индексы не поддерживаются до версии MySQL 5.1. Поскольку он буферизует записи данных и сжимает каждую строку с помощью zlib при ее вставке, он использует гораздо меньше дисковых операций ввода-вывода, чем MyISAM. Каждый вопрос SELECT также требует полного поиска в таблице. Таким образом, архивные таблицы идеально подходят для регистрации и сбора данных, когда анализ обычно сканирует всю таблицу или когда требуются быстрые запросы INSERT.

Движок Blackhole: в движке Blackhole нет запоминающего устройства. Вместо того, чтобы сохранять каждый INSERT, он отбрасывает его. Сервер, с другой стороны, записывает запросы к таблицам Blackhole, чтобы их можно было повторить или просто сохранить в журнале.

Подсистема CSV. Файлы с разделителями-запятыми (CSV) могут обрабатываться подсистемой CSV как таблицы, но индексы не поддерживаются. Во время работы сервера этот движок позволяет копировать файлы в базу данных и из нее. Если вы сохраните файл CSV из электронной таблицы в каталоге данных сервера MySQL, сервер сможет сразу его прочитать. Точно так же, если вы записываете данные в таблицу CSV, они могут быть немедленно прочитаны внешней программой. В результате таблицы CSV представляют собой полезный формат обмена данными.

Ядро объединения. Этот механизм хранения действует как своего рода посредник между другими серверами. Он устанавливает клиентское соединение с другим сервером и выполняет запросы к таблице на этом сервере, извлекая и отправляя строки по мере необходимости. Сначала его представляли как конкурента функциям многих проприетарных серверов баз данных корпоративного уровня, таких как Microsoft SQL Server и Oracle, но это всегда было натяжкой.

Memory Engine: таблицы памяти (ранее известные как таблицы HEAP) пригодятся, когда вам нужен быстрый доступ к данным, которые никогда не меняются или не нуждаются в сохранении после перезагрузки. . Таблицы памяти могут быть в сотни раз быстрее, чем таблицы MyISAM. Поскольку они хранят все свои данные в памяти, запросам не нужно ждать дискового ввода-вывода. Структура таблицы памяти сохраняется после перезапуска сервера, но данные не сохраняются.

HASH-индексы, которые очень быстро подходят для поисковых запросов, поддерживаются таблицами памяти. Таблицы в памяти работают быстро, но они не всегда являются хорошей универсальной заменой дисковым таблицам. Используется блокировка на уровне таблицы, что приводит к низкому параллелизму записи. Они не поддерживают типы столбцов TEXT или BLOB и поддерживают только строки фиксированного размера, поэтому VARCHAR хранятся как CHAR, что приводит к трате памяти.

При обработке запросов, которым нужна временная таблица для хранения промежуточных данных, MySQL использует внутреннюю память. MySQL может преобразовать промежуточный результат в таблицу MyISAM на диске, если он становится слишком большим для таблицы памяти или содержит столбцы TEXT или BLOB.

Механизм хранилища слияния. Слияние — это вариант MyISAM. Таблица слияния объединяет несколько идентичных таблиц MyISAM в одну виртуальную таблицу. Это полезно при использовании MySQL в приложениях для ведения журналов и хранения данных, но вместо этого рекомендуется использовать секционирование.

NDB Cluster Engine: В 2003 году MySQL AB приобрела базу данных NDB Sony Ericsson и разработала механизм хранения NDB Cluster в качестве моста между MySQL SQL и родным протоколом NDB. MySQL Cluster — это база данных, которая объединяет сервер MySQL, механизм хранения NDB Cluster и распределенную отказоустойчивую, высокодоступную базу данных NDB без совместного использования.

  • Сторонние механизмы хранения:

Поскольку у MySQL есть подключаемый API механизма хранения, примерно в 2007 году начало появляться невероятное разнообразие механизмов хранения, предназначенных для определенных целей. Некоторые из них были предварительно установлены на сервере, но большинство были сторонними проектами или проектами с открытым исходным кодом. Некоторые из них представляют собой механизмы хранения OLTP, механизмы хранения, ориентированные на столбцы, и механизмы хранения сообщества.

Приложения

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

Сервер базы данных MySQL — это вершина масштабируемости, позволяющая управлять чем угодно: от глубоко встроенных приложений размером 1 МБ до крупных центров обработки данных с терабайтами данных. MySQL известен своей универсальностью платформы, которая включает в себя поддержку Linux, UNIX и Windows. Дизайн MySQL с открытым исходным кодом, конечно же, допускает полную модификацию теми, кто хочет добавить пользовательские спецификации к серверу базы данных.

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

Вывод

Архитектура MySQL многоуровневая, с общесерверными ресурсами и выполнением запросов наверху и механизмами хранения внизу. API механизма хранения является наиболее важным из множества различных API-интерфейсов подключаемых модулей. Вы усвоили одну из ключевых основ архитектуры MySQL, если знаете, что запросы выполняются путем передачи строк туда и обратно через API механизма хранения.

Приобретение Oracle InnoDB, а затем MySQL объединило два продукта под одной крышей, что позволило производить их вместе. Похоже, это идет на пользу всем: InnoDB и сервер стремительно улучшаются в нескольких отношениях, MySQL остается под лицензией GPL и полностью с открытым исходным кодом, сообщество и потребители получают сильную и надежную базу данных, а сервер становится все более популярным. расширяемый и полезный. Вот ссылка, посвященная наиболее часто задаваемым вопросам и концепциям интервью на MYSQL.