Страница по сравнению с количеством по сравнению с сегментом или табличным пространством

Mysql Innodb имеет понятия страницы, степени, сегмента, табличного пространства, но я не знаю, как они взаимодействуют друг с другом. Как они связаны? Что означает, что табличное пространство имеет 16 тыс. Страниц? Как это относится к физическим строкам и является ли "страницами" что-то в памяти?

Я бы предположил, что Oracle может иметь такую ​​же концепцию, но я не уверен, где ее искать. Есть ли хорошая справочная/книга, в которой говорится об этом подробно?

5 ответов

В частности, для innodb:

Табличное пространство является как физическим, так и логическим понятием. Раньше считалось, что все таблицы innodb были объединены в файлы ibdata. Внутри этих файлов табличное пространство представляет собой необязательно-непрерывный набор сегментов, составляющих таблицу. В новых версиях mysql одна отдельная таблица может быть помещена в собственный файл, который также называется табличным пространством.

В любом случае табличное пространство содержит:

  • которые содержат 1 или более экстентов для этой таблицы.

  • экстенты содержат 64 страницы. Я не знаю, почему 64.

  • страницы составляют 16k, что теоретически оптимизировано для эффективного хранения и поиска на уровне диска. страницы выделяются в количествах объема, когда требуется больше страниц.

См. стр. 11 из этот pdf.


Об этом неплохо говорят:

http://www.markleith.co.uk/?p=25

File system -> InnoDB
 ----------------------------------------------
 disk partition -> tablespace
 file -> segment
 inode -> fsp0fsp.c 'inode'
 fs space allocation unit -> extent
 disk block -> page (16 kB)

Если вам действительно нужны подробные подробности, есть также:

http://forge.mysql.com/wiki/MySQL_Internals_InnoDB


Структура хранения оракула хорошо описана в документации: http://download.oracle.com/docs/cd/E11882_01/server.112/e10713/logical.htm#CNCPT304

Табличное пространство представляет собой логический контейнер хранения, состоящий из одного или нескольких файлов данных. табличное пространство определяется с конкретным размером блока, и в целом все табличные пространства в базе данных Oracle будут иметь общий размер. 8kb является наиболее часто выбираемым.

Хранение индексов, таблиц, кластеров и т.д. представлено в виде сегментов. Один сегмент будет назначен одному табличному пространству, но может быть распространен на несколько файлов данных. Нераспределенная таблица или индекс будут иметь один сегмент. Для секционированной таблицы или индекса каждый раздел или подразделение будет отдельным сегментом.

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


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

Поиск Google по "архитектуре Oracle" дает кучу результатов. Это и этот может быть полезным, или вы может выбрать покупку хорошей книги, такой как этот. Но одним из лучших источников информации о базе данных Oracle является сама документация Oracle.

Документация для выбранной вами версии базы данных свободно доступна как онлайн, так и для локальной загрузки с веб-сайта Oracle.


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

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

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

Имейте в виду, что системы баз данных обычно поставляются с документацией, а такие системы, как Oracle и DB2, обычно имеют очень обширную документацию, часто размещаемую в книгах, которые вы можете читать в Интернете или загружать в той или иной форме. Конечно, попытка найти что-то на www.oracle.com или www.ibm.com может быть разочаровывающим опытом, но Google, вероятно, все еще ваш друг.

licensed under cc by-sa 3.0 with attribution.