2009-11-04 31 views
5

Mysql's Innodb tiene conceptos de página, extensión, segmento, espacio de tabla, pero no sé cómo interactúan entre sí. ¿Como están relacionados? ¿Qué significa que un tablespace tiene 16K de páginas? ¿Cómo se relaciona esto con las filas físicas y hay 'páginas' algo en la memoria?Página frente a extensión frente a segmento frente a espacio de tabla

Supongo que Oracle podría tener el mismo concepto, pero no estoy seguro de dónde buscarlo. ¿Hay una buena referencia/libro que habla de esto en detalle?

Respuesta

0

Oracle tiene bloques, segmentos y extensiones para describir el diseño físico, y tablas y espacios de tabla para r describiendo el diseño lógico. Lamentablemente, no recuerdo los detalles y, en cualquier caso, los aprendí hace dos versiones.

En general, habrá dos formas diferentes de describir las bases de datos. Desde el punto de vista de los usuarios, una base de datos se puede dividir en espacios de tabla, y los espacios de tablas contienen tablas, que contienen filas, y así sucesivamente. Sin embargo, tienen que vivir en algún lugar del disco, por lo que el DBA generalmente tendrá que asignar archivos, y dentro de los archivos tiene que haber un diseño que permita que las filas y los campos se almacenen en los bytes del archivo.

Estos son detalles de implementación, y normalmente solo son de interés para el DBA. Los encontrará en la documentación de los sistemas de bases de datos individuales y en los libros destinados a DBA, y normalmente encontrará cada sistema de base de datos individual en sus propios libros.

Tenga en cuenta que los sistemas de bases de datos generalmente vienen con documentación, y los sistemas como Oracle y DB2 generalmente tienen una documentación muy extensa, a menudo organizada en libros que puede leer en línea o descargar de una forma u otra. Por supuesto, intentar encontrar algo en www.oracle.com o www.ibm.com puede ser una experiencia frustrante, pero Google probablemente siga siendo tu amigo.

+0

¿Puede recomendar un buen libro de Oracle explicando estas cosas? – bichonfrise74

+0

Este es bastante bueno: http://www.amazon.com/Oracle-Database-10g-DBA-Handbook/dp/0072231459/ref=sr_1_1?ie=UTF8&s=books&qid=1257384634&sr=8-1 –

0

Existe una distinción entre la estructura de la base de datos física de Oracle y la estructura de la base de datos lógica. Los archivos de datos y control de Oracle son parte de la estructura física, mientras que los bloques y las extensiones son parte de la lógica.

La búsqueda de Google en "Arquitectura de Oracle" produce un montón de resultados. This y this one pueden ser útiles, o puede optar por comprar un buen libro como this one. Pero una de las mejores fuentes de información sobre la base de datos Oracle es Oracle documentation itself.

La documentación para su versión de base de datos de elección está disponible de forma gratuita tanto en línea como para descarga local desde Oracle web site.

7

Para innodb específicamente:

Un espacio de tabla es tanto física como un concepto lógico. Solía ​​ser que todas las tablas innodb tenían sus datos mezclados en los archivos ibdata. Dentro de esos archivos, un tablespace es una colección de segmentos no necesariamente contigua que compone la tabla. En las versiones más nuevas de mysql, una sola tabla se puede poner en su propio archivo, que también se denomina espacio de tablas.

En cualquier caso, un espacio de tabla contiene:

  • segmentos, que contienen 1 o más extensiones para esa tabla.

  • Las extensiones contienen 64 páginas. No sé por qué 64.

  • las páginas tienen 16k, lo que teóricamente está optimizado para un almacenamiento y recuperación eficiente a nivel de disco. las páginas se asignan en cantidades de extensión cuando se necesitan más páginas.

Ver la página 11 de this pdf.

+0

Una medida es 64 páginas porque 64x16KB = 1MB. Entonces, una extensión se define como 1 MB, que es básicamente una opción arbitraria para un "fragmento" de almacenamiento. Si cambia el tamaño de la página (ahora es una opción en MySQL 5.6), la extensión sigue siendo de 1MB, pero puede contener más páginas (porque cada página es más pequeña). –

0

La estructura de almacenamiento de Oracle está bien descrita en la documentación: http://download.oracle.com/docs/cd/E11882_01/server.112/e10713/logical.htm#CNCPT304

Un espacio de tabla es un contenedor de almacenamiento lógico compuestos de uno o más archivos de datos. un espacio de tabla se define con un tamaño de bloque particular y, en general, todos los espacios de tabla en una base de datos Oracle tendrán un tamaño de bloque común. 8kb es el más comúnmente elegido.

El almacenamiento de índices, tablas, clústeres, etc., se representa como segmentos. Se asignará un único segmento a un solo espacio de tabla, pero se puede dividir en varios archivos de datos. Una tabla o índice sin particiones tendrá un solo segmento. Para una tabla o índice particionado, cada partición o subpartición será un segmento único.

Los segmentos están formados por extensiones, que son conjuntos lógicamente contiguos de bloques. Las nuevas extensiones se asignan a los segmentos de forma manual o automática según lo exijan los patrones de crecimiento.

Cuestiones relacionadas