Sie sind auf Seite 1von 30

Configuración

y
administración
del espacio en
disco
Unidad 3
3.1. Definición de
espacio de
almacenamiento

PostgreSQL

Profesor: Ing. Araceli Velázquez Gutiérrez, Materia: Administración


de Bases de Datos, Instituto Tecnológico de Lázaro Cárdenas
Bloques en PostgreSQL
 La forma en que se almacenan los datos en PostgreSQL es por medio
de bloques
 Un bloque se trata de la unidad mínima de almacenamiento en
PostgreSQL y se denomina, indistintamente, página (page) o bloque
(block).
 Un bloque en PostgreSQL ocupa siempre por defecto 8K si no se ha
definido un valor diferente durante la compilación. Esto
independientemente de si se usa en su totalidad o solo parcialmente.
 Un bloque (8K / 8192 bytes) está compuesto por diferentes
elementos:
 Page_header: Cabecera de bloque. Ocupa 24 bytes.
 ItemId: Matriz de pares de valores ItemId(offset,length) con la información
necesaria para localizar los elementos (Items) grabados en el bloque. Cada par
ocupa 4 bytes.
 Item (row/index): Cabecera de elemento más los datos en si. Tamaño variable.
 Espacio especial: Usado cuando el bloque pertenece a un índice. Tamaño
variable

Profesor: Ing. Araceli Velázquez Gutiérrez,


Materia: Administración de Bases de
Datos, Instituto Tecnológico de Lázaro
Cárdenas
Bloques
 Información tomada de
http://www.postgresql.org.es/node/667

Profesor: Ing. Araceli Velázquez Gutiérrez,


Materia: Administración de Bases de
Datos, Instituto Tecnológico de Lázaro
Cárdenas
Bloques
 El espacio usado por una cabecera de bloque
Page_header) se usa para guardar diferentes
parámetros que nos ayudarán a localizar
diferentes partes del bloque y guardar cierta
información asociada al bloque.
 En cada elemento (Item) se guardan una
cabecera de datos con un tamaño fijo (23
bytes), una pequeña cabecera opcional de
datos con tamaño variable y los datos en si
de nuestras tablas o índices.
Profesor: Ing. Araceli Velázquez Gutiérrez,
Materia: Administración de Bases de
Datos, Instituto Tecnológico de Lázaro
Cárdenas
Espacio de almacenamiento
 Inspeccionar el espacio

Profesor: Ing. Araceli Velázquez Gutiérrez,


Materia: Administración de Bases de
Datos, Instituto Tecnológico de Lázaro
Cárdenas
El valor ctid(0,1)
nos indica que
esta fila está en
el bloque numero
0 y que es el
elemento 1
(Item) en ese
bloque.

Profesor: Ing. Araceli Velázquez Gutiérrez,


Materia: Administración de Bases de
Datos, Instituto Tecnológico de Lázaro
Cárdenas
Profesor: Ing. Araceli Velázquez Gutiérrez,
Materia: Administración de Bases de
Datos, Instituto Tecnológico de Lázaro
Cárdenas
El tamaño actual de la tabla (table_len) es 1490944
bytes (182 bloque), tenemos 7268 filas (tuple_count),
las filas ocupan 1407963 bytes, no hay filas muertas y
el espacio libre en el bloque es de 14796 bytes.

Profesor: Ing. Araceli Velázquez Gutiérrez,


Materia: Administración de Bases de
Datos, Instituto Tecnológico de Lázaro
Cárdenas
Page Inspect
 Usando la extensión pageinspect podemos
obtener más información sobre el primer
bloque en disco de nuestra tabla.
 Vamos a utilizar las
funciones page_header() y heap_page_items
() junto con la función get_raw_page() para
obtener información sobre los datos
disponibles en la cabecera del bloque, en las
entradas itemId y en las cabeceras de los
elementos (Item):
Profesor: Ing. Araceli Velázquez Gutiérrez,
Materia: Administración de Bases de
Datos, Instituto Tecnológico de Lázaro
Cárdenas
De la cabecera de bloque tenemos el parámetro lower = 228 que nos indica la
siguiente posición libre en donde se grabará el próximo itemId. upper = 256 nos
indica el final del espacio libre en el bloque (a partir de esta posición tendremos
todos los elementos (Items) grabados en este bloque.
special = 8192 indica el principio (offset) del espacio especial (en este
caso al ser una tabla y no un índice, special es igual al tamaño de bloque
porque el espacio especial esta vacío)

Profesor: Ing. Araceli Velázquez Gutiérrez,


Materia: Administración de Bases de
Datos, Instituto Tecnológico de Lázaro
Cárdenas
• Line Pointer LP indica el número de ítem
• lp_off = 8160 nos indica el inicio (offset) del primer elemento (item),
• lp_flags nos indica que el item Id está en uso,
• lp_len es el tamaño en bytes del elemento al que el item Id está apuntando,
• t_xmin nos indica la transacción en donde este elemento fue creado,
• t_xmax es la transacción en la que el elemento ha sido borrado (0 en este caso
porque todavía no se ha borrado),
• t_ctid = (0,1) nos dice que este elemento es el primero del bloque 0 en esta tabla
• Profesor: Ing. Araceli Velázquez Gutiérrez,
t_hoff = 32 es la posición relativa en donde empezamos a grabar los datos en si
Materia: Administración de Bases de
de las columnas de la primera fila Datos, Instituto Tecnológico de Lázaro
• (la posición absoluta seria lp_off + t_hoff) Cárdenas
Vacuum
 --Paso 1
 select ctid, * from clientes
 --Paso 2
 delete from clientes where cliente = '3-00137';
 --Paso 3
 select ctid, * from clientes ;
 --Paso 4
 VACUUM VERBOSE ANALYZE clientes;
 --Paso 5
 select ctid, * from clientes ;
Profesor: Ing. Araceli Velázquez Gutiérrez,
Materia: Administración de Bases de
Datos, Instituto Tecnológico de Lázaro
Cárdenas
Vacuum

Profesor: Ing. Araceli Velázquez Gutiérrez,


Materia: Administración de Bases de
Datos, Instituto Tecnológico de Lázaro
Cárdenas
Vacuum full
--Paso 6
VACUUM FULL clientes;
--Paso 7
select ctid, * from clientes ;

--Necesito las extensiones para poder


--utilizar estas funciones
--de postgresql que son complementarias
create extension pgstattuple;
create extension pageinspect ;

--Checar las estadisticas de la tabla


select * from pgstattuple('clientes') ; Profesor: Ing. Araceli Velázquez Gutiérrez,
Materia: Administración de Bases de
Datos, Instituto Tecnológico de Lázaro
Cárdenas
Ejemplo alumnos

Profesor: Ing. Araceli Velázquez Gutiérrez,


Materia: Administración de Bases de
Datos, Instituto Tecnológico de Lázaro
Cárdenas
Ejemplo alumnos

Profesor: Ing. Araceli Velázquez Gutiérrez,


Materia: Administración de Bases de
Datos, Instituto Tecnológico de Lázaro
Cárdenas
Ejemplo alumnos

Profesor: Ing. Araceli Velázquez Gutiérrez,


Materia: Administración de Bases de
Datos, Instituto Tecnológico de Lázaro
Cárdenas
Definición y
creación de
espacio p/BD
3.2

Profesor: Ing. Araceli Velázquez Gutiérrez, Materia: Administración


de Bases de Datos, Instituto Tecnológico de Lázaro Cárdenas
CLUSTER
 Creating a Database Cluster
 Before you can do anything, you must initialize a database storage
area on disk. We call this a database cluster.
 A database cluster is a collection of databases that is managed by a
single instance of a running database server.
 After initialization, a database cluster will contain a database named
postgres, which is meant as a default database for use by utilities,
users and third party applications.
 The database server itself does not require the postgres database to
exist, but many external utility programs assume it exists.
 Another database created within each cluster during initialization is
called template1.
 As the name suggests, this will be used as a template for subsequently
created databases; it should not be used for actual work.
Profesor: Ing. Araceli Velázquez Gutiérrez,
Materia: Administración de Bases de
Datos, Instituto Tecnológico de Lázaro
Cárdenas
CLUSTER
 In file system terms, a database cluster is a single directory
under which all data will be stored.
 We call this the data directory or data area. It is completely
up to you where you choose to store your data.
 There is no default, although locations such as
/usr/local/pgsql/data or /var/lib/pgsql/data are popular.

 To initialize a database cluster, use the command initdb,


which is installed with PostgreSQL.
 The desired file system location of your database cluster is
indicated by the -D option, for example:
 $ initdb -D /usr/local/pgsql/data
Profesor: Ing. Araceli Velázquez Gutiérrez,
Materia: Administración de Bases de
Datos, Instituto Tecnológico de Lázaro
Cárdenas
Tablespaces
Espacios en PostgreSQL

Profesor: Ing. Araceli Velázquez Gutiérrez, Materia: Administración


de Bases de Datos, Instituto Tecnológico de Lázaro Cárdenas
TableSpaces
 Los espacios de tabla en PostgreSQL permiten a los
administradores de bases de datos definir ubicaciones en
el sistema de archivos donde los archivos que representan
los objetos de la base de datos se pueden almacenar.

 Una vez creado, un tablespace puede ser referido por


nombre al crear objetos de base de datos.

 Al usar tablespaces, un administrador puede controlar el


diseño del disco de una instalación de PostgreSQL.
 Esta es útil en al menos dos formas.
 Primero, si la partición o el volumen en el que se inició el
clúster se ejecuta sin espacio y no se puede extender, se
puede crear un espacio de tablas en una partición diferente y
usar hasta que el sistema pueda ser reconfigurado.
Profesor: Ing. Araceli Velázquez Gutiérrez,
Materia: Administración de Bases de
Datos, Instituto Tecnológico de Lázaro
Cárdenas
TableSpaces
 Los espacios de tabla permiten a un
administrador utilizar el conocimiento del
patrón de uso de los objetos de la base de
datos para optimizar el rendimiento.
 Por ejemplo, un índice que se usa mucho puede
colocarse en un disco rápido y altamente
disponible, como un dispositivo de estado sólido.

 Una tabla que almacene datos archivados


históricos que se usan raramente o que no son
críticos para el rendimiento se pueden almacenar
de una manera menos costosa, en un disco más
lento.
Profesor: Ing. Araceli Velázquez Gutiérrez,
Materia: Administración de Bases de
Datos, Instituto Tecnológico de Lázaro
Cárdenas
Tablespace PostgreSQL

 La ubicación debe ser un directorio


existente y vacío que pertenece al
sistema operativo y al usuario PostgreSQL.
 Todos los objetos creados posteriormente
dentro del tablespace se almacenarán en
archivos debajo de este directorio

Profesor: Ing. Araceli Velázquez Gutiérrez,


Materia: Administración de Bases de
Datos, Instituto Tecnológico de Lázaro
Cárdenas
Crear un tablespace

Profesor: Ing. Araceli Velázquez Gutiérrez,


Materia: Administración de Bases de
Datos, Instituto Tecnológico de Lázaro
Cárdenas
Ejemplos
CREATE TABLE muestra( Poner un tablespace
como default
id integer,
nombre character varying(50)
)
TABLESPACE miespacio;

SET default_tablespace = miespacio;

Profesor: Ing. Araceli Velázquez Gutiérrez,


Materia: Administración de Bases de
Datos, Instituto Tecnológico de Lázaro
Cárdenas
Mover objetos al tablespace

Profesor: Ing. Araceli Velázquez Gutiérrez,


Materia: Administración de Bases de
Datos, Instituto Tecnológico de Lázaro
Cárdenas
Tabla en nuevo tablespace

Profesor: Ing. Araceli Velázquez Gutiérrez,


Materia: Administración de Bases de
Datos, Instituto Tecnológico de Lázaro
Cárdenas
Profesor: Ing. Araceli Velázquez Gutiérrez,
Materia: Administración de Bases de
Datos, Instituto Tecnológico de Lázaro
Cárdenas

Das könnte Ihnen auch gefallen