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