170 похожих чатов

Здравствуйте. У меня вопрос не конкретно по MySQL, а скорее

по СУБД в целом (если не по адресу, то пните в нужную сторону, пожалуйста). Я не понимаю, каким образом, могут работать несколько экземпляров СУБД одновременно, если они все обращаются к одному и тому же файлу БД? Или этих файлов тоже создаётся несколько штук, и они с некоторой периодичностью синхронизируются? Как тогда избежать ошибок, если, например, 2 пользователя одновременно попытались создать учётку с одинаковым юзернеймом? У меня в голове каша, так что прошу прощения за такие глупые вопросы)

22 ответов

67 просмотров

что-то я твой вопрос не очень понял. Несколько экземпляров СУБД работать с одной datadir не могут. несколько инстансов с разными datadir на одном сервере работать могут (при соблюдении разных портов, разных сокетов, разных логов)

Smith- Автор вопроса
Egor Zagorskiy
что-то я твой вопрос не очень понял. Несколько экз...

Ну, я имею в виду, когда у сервиса очень высокая нагрузка, то поднимают несколько экземпляров СУБД для обслуживания пользователей. Запросы, как я понимаю, идут к одним и тем же БД. Вот и вопрос, как экземпляры СУБД доступ к БД делят, ибо это же очевидное бутылочное горлышко.

Smith
Ну, я имею в виду, когда у сервиса очень высокая н...

в классической схеме есть master (куда пишут) и сколько-то slave, откуда можно только читать.

Smith- Автор вопроса
Egor Zagorskiy
google://репликация

Репликация — это дублирование данных, когда данные с одного сервера полностью повторяются на других Значит, БД тоже дублируется

Smith- Автор вопроса
Egor Zagorskiy
в классической схеме есть master (куда пишут) и ск...

Спасибо, значит механизм я +- верно понял.

Smith
Ну, я имею в виду, когда у сервиса очень высокая н...

СУБД потому и называется СУБД, что она всё сама разруливает. Как - зависит от конкретной СУБД. MySQL создаёт OS thread на каждое соединение, PostgreSQL - процесс

Egor Zagorskiy
в классической схеме есть master (куда пишут) и ск...

Это помогает при масштабировании чтения (размазываем запросы чтения через какой-нибудь балансировщик на N реплик). Если упёрлись в запись, то нужно шардирование (дробление баз/таблиц на куски по какому-то признаку)

Sveta Smirnova
СУБД потому и называется СУБД, что она всё сама ра...

Тот забавный момент, когда про то, как работают БД внутри я знаю больше своих коллег, и при этом вот таких простых важных вещей не знаю У меня вопрос. Может, где-то собрана информация, как работают под капотом различные движки БД? Что именно гуглить? Сорцы читать не предлагать — я охренею

kai 3341
Тот забавный момент, когда про то, как работают БД...

а какие движки кроме innodb тебе нужны? экзотика типа MyRocksdb?

Egor Zagorskiy
а какие движки кроме innodb тебе нужны? экзотика т...

Помимо движков, поддерживаемых MySQL/MariaDB (как минимум, есть ещё Aria и Mroonga. Не считая всяких Spyder, TokuDB ...) хотелось бы понимать ещё и про постгрю (тут у меня ппц пробел)

kai 3341
Тот забавный момент, когда про то, как работают БД...

MySQL - книги Expert MySQL by Charles Bell, MySQL Internals by Sasha Pachev, MySQL Plugins by Sergei Golubchick and Andrew Hutchings. Блоги - Jeremy Cole Мануал - doxygen на сайте dev.mysql.com

kai 3341
Помимо движков, поддерживаемых MySQL/MariaDB (как ...

По PostgreSQL отличные книги выложены на сайте компании PostgreSQL Professional. Они ещё и на русском. У них ещё и тренинг есть по внутренностям, тоже бесплатный.

Smith
Ну, я имею в виду, когда у сервиса очень высокая н...

Помимо репликации есть еще кластеры. И кластеры бывают разные. Есть shared nothing архитектура, есть shared disk. На пример Oracle RAC - как раз shared disk. И да, в нем несколько экземпляров (инстансев) работают с одной и той же базой данный (файлами данных), которая находится на «расшаренном диске». Вопрос в том, какие проблемы должен решать кластер. Как кластер «разруливает» обращение к одним и тем же файлам зависит от конкретной реализации.

Maks
Помимо репликации есть еще кластеры. И кластеры бы...

AWSовская аврора вроде тоже с одними и теми же файлами работает мульти-инстансно. Вот бы это в опенсорс попало когда-нибудь

Sveta Smirnova
NFS 🧌

не заработает же

Ilya Anfimov
А откуда такое мнение?

из их презентаций. я мог не всё уловить, но понял так. Репликация у них точно не бинлоговая (внутри региона)

Ilya Anfimov
А откуда такое мнение?

Ну в документации у них так написано - The Aurora shared storage architecture makes your data independent from the DB instances in the cluster. For example, you can add a DB instance quickly because Aurora doesn't make a new copy of the table data. Instead, the DB instance connects to the shared volume that already contains all your data.

Sveta Smirnova
MySQL - книги Expert MySQL by Charles Bell, MySQL ...

Я прочитал "MySQL Internals by Sasha Pachev" (к сожалению, остальные найти в pdf не удалось). И я не нашёл ответов на свои вопросы Также я перелопатил википедию на предмет структур данных — варианты b-tree, LSM-tree, варианты R-tree Вопрос следующий. Мне не удалось найти информацию, с каким профилем нагрузки хорошо работают популярные движки MySQL / MariaDB? 1) InnoDB. Какая структура данных на диске в контексте О-нотации? Нашёл про 2 ещё актуальных на сегодня формата таблиц InnoDB — и там тоже нет ответа. Подозреваю, что вариация b-tree со всеми вытекающими — я прав или нет? 2) RocksDB. Структура данных — LSM-tree. Прикол LSM-tree в том, что там по сути 2 дерева, но есть вариации (LSMb / Diff-index). И вот далее я ничего не понимаю. Окей, понятно, что вставка в LSM-tree происходит быстро. А вот с апдейтами я ничего не понял. Что в конечном счёте происходит с SSTable? Как там хранятся данные? Какая его структура. Как работают апдейты и делиты? 3) Aria и Mroonga. Оба — форки MyISAM. Я ещё не добрался до их документации (в плане совсем вглубь не копал). Вопросы те же. Мета. В сущности меня интересует производительность О-нотация для CRUD разных движков, их сильные и слабые стороны. Может, я неправильно гуглил?

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

Обсуждают сегодня

30500 за редактор? )
Владимир
47
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
1
Он в одиночку это дело запилил или была какая-то команда?
Aquinary
12
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Карта сайта