Привет. Вопрос по mysql. Как сервер mysql хранит таблицы на жестком диске? Слышал, что хранит построчно, но может и хранить по столбцам. Как достается что-то из таблицы? Тоже построчно или как-то по-другому? Хочу глубже понимать, как все это работает, чтобы стало ясно, как проходит оптимизация.
Вне зависимости от storage engine создаётся структура frm, содержащая описание структуры таблицы. Описание структуры есть в документации internals.
Затем каждый storage engine может использовать свой подход к хранению данных. Сам Mysql это никак не регламентирует.
Например, memory или blackhole вообще ничего не хранят на диске. csv пишет данные простым plain text и перекодирует из/в внутренний mysql формат строк при обращении.
Что mysql отдаёт на откуп конкретным storage engine можно посмотреть в internals-документации в разделе Writing a Custom Storage Engine. Здесь более поподробнее описана работа с подключаемыми хранилищами. То есть сам Mysql абстрагируется от всего, что касается формата хранения данных на диске и как эти данные читать-писать. Но сам по себе storage engine api предполагает работу именно со строками во внутреннем бинарном представлении mysql. Кстати, там же в качестве примеров цитируют реализации других storage engine, например insert дополнен кодом из myisam, update и delete - из csv
Для myisam и innodb там же в internals отведено по отдельному разделу. Иметь перед глазами исходник этих storage engine по время чтения, похоже, обязательно, описано как-то очень поверхностно. Начните лучше с раздела написания своего storage engine.
PS: дальше подсказать ничего не могу, не залезал. Но пусть будет хоть направление дальнейших изысканий.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости