Привет. Вопрос по 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: дальше подсказать ничего не могу, не залезал. Но пусть будет хоть направление дальнейших изысканий.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Объясните в чем преимущества Angular перед jQuery, если такие естьВ каких случаях целесообразней использовать ангулар?
Я уже пару раз сегодня просил помощи и вот что получилосьПрограмма должна выполнять возведение в степень длинных чисел
Написал программу, которая при вводе цифры в виде названия выдаст саму цифру, и наоборотК примеру, при вводе "one" программа выводит "1", при вводе...