LINUX.ORG.RU

Физический уровень хранения в InnoDB - расскажите по верхам.

 


0

1

У B-tree есть блоки, на диск оно ходит «блоками».

1. Оно пишет изменившиеся блоки прямо в те места, где блоки лежали ранее?

2. Если блок стал жирнее, нужно аллоцировать новый блок. Есть проблема фрагментации или блоки фиксированного размера и любой блок в на диске физически лежит как 16кб (например)? То есть, возникает ли проблема фрагментации, когда мы взяли с диска блок в 1КБ, дописали туда 160 байт и не можем втиснуть туда, где он лежал?

3. Про double write buffer или как его там я слышал, но это другая тема.

Ответ на: комментарий от xpahos

Design Data Intensive Applications, там все есть.

Там ничо нет.

hlamotron
() автор топика

Для начала нужно внимательно просмотреть документацию: Chapter 15 The InnoDB Storage Engine. А то, чего-то совсем уже обленились... :) Ну и Гугл тебе в помощь )

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

Фрагментация может иметь место при удалении записей из таблицы, ну и в индесах. Тогда в блоках образуется свободное место, которое, в принципе, может быть занято потом другими записями ( это тоже общее дело для всех БД). На это тему опять же смотри: 15.11.4 Defragmenting a Table.

.

vinvlad ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.