SlideShare una empresa de Scribd logo
1 de 4
Descargar para leer sin conexión
GPI.- Confidencial

En este artículo analizaremos el comportamiento de las bases de datos cuando se le realizan
operaciones de Shrink. Algunos DBA’s realizan esta tarea de manera común sin percatarse
talves del grave daño que le están causando a la base de datos. Este ejemplo lo tome de la
explicación realizada por Paul Randal durante una conferencia en SQL Server Connections y
otros métodos de ingreso de datos proporcionados por Itzik Ben Gan.

Lo que haremos es crear una pequeña base de datos de prueba, la vamos a llenar con una serie
de datos de forma aleatoria, luego borramos la tabla de parámetros y realizamos el shrink para
ver los resultados finales.
USE MASTER;
GO

IF DATABASEPROPERTYEX ('shrinkdb', 'Version') > 0
      DROP DATABASE shrinkdb;


Create database ShrinkDb;
Go

--Creamos luego una tabla llamada empleados
USE [Shrinkdb]
GO

-- Creamos una tabla auxiliar que va a servirnos para llenar datos aleatorios

SET NOCOUNT ON;
IF OBJECT_ID('dbo.Nums') IS NOT NULL
  DROP TABLE dbo.Nums;
CREATE TABLE dbo.Nums(n INT NOT NULL PRIMARY KEY);

DECLARE @max AS INT, @rc AS INT;
SET @max = 1000000;
SET @rc = 1;

INSERT INTO dbo.Nums(n) VALUES(1);
WHILE @rc * 2 <= @max
BEGIN
  INSERT INTO dbo.Nums(n) SELECT n + @rc FROM dbo.Nums;
  SET @rc = @rc * 2;
END

INSERT INTO dbo.Nums(n)
   SELECT n + @rc FROM dbo.Nums WHERE n + @rc <= @max;
GO

-- Parámetros de configuración para cargas posteriores
DECLARE
  @numorders   AS INT,
  @numcusts    AS INT,
  @numemps     AS INT,
  @numshippers AS INT,
  @numyears    AS INT,
Tel: (506) 297 8132 – 244-5849 | De la Basílica de Santo Domingo, Heredia; 200 mts norte y 900 mts este. Apto 103-1100, Costa Rica
GPI.- Confidencial

   @startdate               AS DATETIME;

SELECT
  @numorders                =   1000000,
  @numcusts                 =     20000,
  @numemps                  =       3500,
  @numshippers              =         5,
  @numyears                 =         4,
  @startdate                = '20050101';

-- Creamos y llenamos la tabla de empleados con un maximo de 3500 empleados,
las variables de arriba permiten cambiar dichos parámetros
CREATE TABLE dbo.Empleados
(
  empid     INT          NOT NULL,
  Apellido NVARCHAR(25) NOT NULL,
  Nombre NVARCHAR(25) NOT NULL

CONSTRAINT PK_empleados PRIMARY KEY(empid)
);

INSERT INTO dbo.Empleados(empid, Apellido, Nombre)
  SELECT n AS empid,
    N'Apellido_' + CAST(n AS NVARCHAR(10)) AS Apellido,
    N'Nombre_' + CAST(n AS NVARCHAR(10)) AS Nombre
  FROM dbo.Nums
  WHERE n <= @numemps;

CREATE NONCLUSTERED INDEX INX_APE ON EMPLEADOS (APELLIDO)

/*
Aca podemos chequear los datos de la tabla para que revisen los datos
cargados
*/

SELECT * FROM Empleados

--Chequeamos el porcentaje de fragmentación de la tabla para medir como se
encuentra el índice.

SELECT avg_fragmentation_in_percent, fragment_count FROM
sys.dm_db_index_physical_stats (
      DB_ID ('shrinkdb'), OBJECT_ID ('empleados'), 1, NULL, 'LIMITED');
GO




Tel: (506) 297 8132 – 244-5849 | De la Basílica de Santo Domingo, Heredia; 200 mts norte y 900 mts este. Apto 103-1100, Costa Rica
GPI.- Confidencial




--Como podemos ver el índice no muestra fragmentación considerable. Este debe
de ser el comportamiento normal

-- Ahora borramos la tabla NUMS que utilizamos como utilitario previamente
DROP TABLE nums;
GO

-- hacemos el shrink de la base de datos para "recuperar" espacio en disco
DBCC SHRINKDATABASE (shrinkdb);
GO

-- Chequeamos la fragmentación nuevamente
SELECT avg_fragmentation_in_percent, fragment_count FROM
sys.dm_db_index_physical_stats (
      DB_ID ('shrinkdb'), OBJECT_ID ('empleados'), 1, NULL, 'LIMITED');
GO




 /*
Ahora como pueden ver, resulta ser que el indice esta totalmente fragmentado,
y esto se debe a que
el Shrink inicia el proceso desde el final del archivo de datos hacia el
inicio, lo que hace que el orden
Tel: (506) 297 8132 – 244-5849 | De la Basílica de Santo Domingo, Heredia; 200 mts norte y 900 mts este. Apto 103-1100, Costa Rica
GPI.- Confidencial

de las paginas cambie y se fragmente. Y esto q provoca? Rendimiento pésimo de
la base de datos, encolamiento en
discos, mayor consumo de recursos en general... asi que acá les dejo la
inquietud y cuando algún DBA les
diga que va a hacer un shrink en Producción... YA SABEN Q HACER... :)
*/




Tel: (506) 297 8132 – 244-5849 | De la Basílica de Santo Domingo, Heredia; 200 mts norte y 900 mts este. Apto 103-1100, Costa Rica

Más contenido relacionado

Similar a Sql tips 03_shrink

Sesion06a - Manipulacion de datos (Oracle)
Sesion06a - Manipulacion de datos (Oracle)Sesion06a - Manipulacion de datos (Oracle)
Sesion06a - Manipulacion de datos (Oracle)José Toro
 
Trigger disparadoes
Trigger  disparadoesTrigger  disparadoes
Trigger disparadoesdioselina123
 
Configuración Script Usuarios Masivos Windows Server 2012 R2
Configuración Script Usuarios Masivos Windows Server 2012 R2Configuración Script Usuarios Masivos Windows Server 2012 R2
Configuración Script Usuarios Masivos Windows Server 2012 R2cyberleon95
 
Bd 2 1 fundamentos transact sql
Bd 2   1 fundamentos transact sqlBd 2   1 fundamentos transact sql
Bd 2 1 fundamentos transact sqlCarlos Lopez
 
Manual script usuarios masivos
Manual script usuarios masivosManual script usuarios masivos
Manual script usuarios masivosYimy Pérez Medina
 
Cheat_MySQL.docx
Cheat_MySQL.docxCheat_MySQL.docx
Cheat_MySQL.docxdcam4
 
slides-sql_30c44e4f-cb57-473d-bc66-4b2ba79b72a1.pptx
slides-sql_30c44e4f-cb57-473d-bc66-4b2ba79b72a1.pptxslides-sql_30c44e4f-cb57-473d-bc66-4b2ba79b72a1.pptx
slides-sql_30c44e4f-cb57-473d-bc66-4b2ba79b72a1.pptxAdrianAntonio29
 
archivodiapositiva_20229192346.pdf
archivodiapositiva_20229192346.pdfarchivodiapositiva_20229192346.pdf
archivodiapositiva_20229192346.pdfKatherineMagallanes4
 
Sesion05 - Manipulacion de datos (Oracle)
Sesion05 - Manipulacion de datos (Oracle)Sesion05 - Manipulacion de datos (Oracle)
Sesion05 - Manipulacion de datos (Oracle)José Toro
 
Práctica 1 preguntas SQL
Práctica 1 preguntas SQLPráctica 1 preguntas SQL
Práctica 1 preguntas SQLlorena duque
 
T9 10 My Sql
T9 10 My SqlT9 10 My Sql
T9 10 My Sqlrmonago
 

Similar a Sql tips 03_shrink (20)

Sesion06a - Manipulacion de datos (Oracle)
Sesion06a - Manipulacion de datos (Oracle)Sesion06a - Manipulacion de datos (Oracle)
Sesion06a - Manipulacion de datos (Oracle)
 
Trigger disparadoes
Trigger  disparadoesTrigger  disparadoes
Trigger disparadoes
 
Script BD_Neptuno
Script BD_NeptunoScript BD_Neptuno
Script BD_Neptuno
 
Configuración Script Usuarios Masivos Windows Server 2012 R2
Configuración Script Usuarios Masivos Windows Server 2012 R2Configuración Script Usuarios Masivos Windows Server 2012 R2
Configuración Script Usuarios Masivos Windows Server 2012 R2
 
Bd 2 1 fundamentos transact sql
Bd 2   1 fundamentos transact sqlBd 2   1 fundamentos transact sql
Bd 2 1 fundamentos transact sql
 
BigData - NoSQL
BigData -  NoSQL BigData -  NoSQL
BigData - NoSQL
 
Practicassql
PracticassqlPracticassql
Practicassql
 
Manual script usuarios masivos
Manual script usuarios masivosManual script usuarios masivos
Manual script usuarios masivos
 
Cheat_MySQL.docx
Cheat_MySQL.docxCheat_MySQL.docx
Cheat_MySQL.docx
 
Wenas wenas
Wenas wenasWenas wenas
Wenas wenas
 
slides-sql_30c44e4f-cb57-473d-bc66-4b2ba79b72a1.pptx
slides-sql_30c44e4f-cb57-473d-bc66-4b2ba79b72a1.pptxslides-sql_30c44e4f-cb57-473d-bc66-4b2ba79b72a1.pptx
slides-sql_30c44e4f-cb57-473d-bc66-4b2ba79b72a1.pptx
 
Parte 08 my sql
Parte 08 my sqlParte 08 my sql
Parte 08 my sql
 
archivodiapositiva_20229192346.pdf
archivodiapositiva_20229192346.pdfarchivodiapositiva_20229192346.pdf
archivodiapositiva_20229192346.pdf
 
Transact SQL Fundamental
Transact SQL FundamentalTransact SQL Fundamental
Transact SQL Fundamental
 
Sesion05 - Manipulacion de datos (Oracle)
Sesion05 - Manipulacion de datos (Oracle)Sesion05 - Manipulacion de datos (Oracle)
Sesion05 - Manipulacion de datos (Oracle)
 
Joins
Joins Joins
Joins
 
MANUAL
MANUALMANUAL
MANUAL
 
Mysql
MysqlMysql
Mysql
 
Práctica 1 preguntas SQL
Práctica 1 preguntas SQLPráctica 1 preguntas SQL
Práctica 1 preguntas SQL
 
T9 10 My Sql
T9 10 My SqlT9 10 My Sql
T9 10 My Sql
 

Más de Adrian Miranda

Azure SQL Data Warehouse desde cada_angulo
Azure SQL Data Warehouse desde cada_anguloAzure SQL Data Warehouse desde cada_angulo
Azure SQL Data Warehouse desde cada_anguloAdrian Miranda
 
SQL Saturday319 - Extendiendo la Virtualización hacia la Nube
SQL Saturday319 - Extendiendo la Virtualización hacia la NubeSQL Saturday319 - Extendiendo la Virtualización hacia la Nube
SQL Saturday319 - Extendiendo la Virtualización hacia la NubeAdrian Miranda
 
En la Tierra o en la Nube. SQL Server desde cada ángulo
En la Tierra o en la Nube. SQL Server desde cada ánguloEn la Tierra o en la Nube. SQL Server desde cada ángulo
En la Tierra o en la Nube. SQL Server desde cada ánguloAdrian Miranda
 
SQL Server o SQL Azure. Escenarios de la vida real
SQL Server o SQL Azure. Escenarios de la vida realSQL Server o SQL Azure. Escenarios de la vida real
SQL Server o SQL Azure. Escenarios de la vida realAdrian Miranda
 
Herramientas Monitoreo SQL Server
Herramientas Monitoreo SQL Server Herramientas Monitoreo SQL Server
Herramientas Monitoreo SQL Server Adrian Miranda
 
SQL Saturday 254 10- Cosas que no se deben de hacer en una BD
SQL Saturday 254   10- Cosas que no se deben de hacer en una BDSQL Saturday 254   10- Cosas que no se deben de hacer en una BD
SQL Saturday 254 10- Cosas que no se deben de hacer en una BDAdrian Miranda
 
Manual de Instalación de Base de Datos
Manual de Instalación de Base de DatosManual de Instalación de Base de Datos
Manual de Instalación de Base de DatosAdrian Miranda
 
Utilizando Filetable en SQL Server 2012
Utilizando Filetable en SQL Server 2012Utilizando Filetable en SQL Server 2012
Utilizando Filetable en SQL Server 2012Adrian Miranda
 
Respaldo y recuperacion
Respaldo y recuperacionRespaldo y recuperacion
Respaldo y recuperacionAdrian Miranda
 
Sql tips 07_resource governor
Sql tips 07_resource governorSql tips 07_resource governor
Sql tips 07_resource governorAdrian Miranda
 
Sql tips 06_fragmentacion
Sql tips 06_fragmentacionSql tips 06_fragmentacion
Sql tips 06_fragmentacionAdrian Miranda
 
Top 10 SQL Server Mistakes
Top 10 SQL Server MistakesTop 10 SQL Server Mistakes
Top 10 SQL Server MistakesAdrian Miranda
 

Más de Adrian Miranda (14)

Azure SQL Data Warehouse desde cada_angulo
Azure SQL Data Warehouse desde cada_anguloAzure SQL Data Warehouse desde cada_angulo
Azure SQL Data Warehouse desde cada_angulo
 
SQL Saturday319 - Extendiendo la Virtualización hacia la Nube
SQL Saturday319 - Extendiendo la Virtualización hacia la NubeSQL Saturday319 - Extendiendo la Virtualización hacia la Nube
SQL Saturday319 - Extendiendo la Virtualización hacia la Nube
 
En la Tierra o en la Nube. SQL Server desde cada ángulo
En la Tierra o en la Nube. SQL Server desde cada ánguloEn la Tierra o en la Nube. SQL Server desde cada ángulo
En la Tierra o en la Nube. SQL Server desde cada ángulo
 
SQL Server o SQL Azure. Escenarios de la vida real
SQL Server o SQL Azure. Escenarios de la vida realSQL Server o SQL Azure. Escenarios de la vida real
SQL Server o SQL Azure. Escenarios de la vida real
 
Herramientas Monitoreo SQL Server
Herramientas Monitoreo SQL Server Herramientas Monitoreo SQL Server
Herramientas Monitoreo SQL Server
 
SQL Saturday 254 10- Cosas que no se deben de hacer en una BD
SQL Saturday 254   10- Cosas que no se deben de hacer en una BDSQL Saturday 254   10- Cosas que no se deben de hacer en una BD
SQL Saturday 254 10- Cosas que no se deben de hacer en una BD
 
Manual de Instalación de Base de Datos
Manual de Instalación de Base de DatosManual de Instalación de Base de Datos
Manual de Instalación de Base de Datos
 
Utilizando Filetable en SQL Server 2012
Utilizando Filetable en SQL Server 2012Utilizando Filetable en SQL Server 2012
Utilizando Filetable en SQL Server 2012
 
Respaldo y recuperacion
Respaldo y recuperacionRespaldo y recuperacion
Respaldo y recuperacion
 
Primera forma normal
Primera forma normalPrimera forma normal
Primera forma normal
 
Sql tips 07_resource governor
Sql tips 07_resource governorSql tips 07_resource governor
Sql tips 07_resource governor
 
Sql tips 06_fragmentacion
Sql tips 06_fragmentacionSql tips 06_fragmentacion
Sql tips 06_fragmentacion
 
Top 10 SQL Server Mistakes
Top 10 SQL Server MistakesTop 10 SQL Server Mistakes
Top 10 SQL Server Mistakes
 
Taller Sql Server 1
Taller Sql Server 1Taller Sql Server 1
Taller Sql Server 1
 

Último

KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...AlanCedillo9
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofJuancarlosHuertasNio1
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersIván López Martín
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...JaquelineJuarez15
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 

Último (20)

KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sof
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 

Sql tips 03_shrink

  • 1. GPI.- Confidencial En este artículo analizaremos el comportamiento de las bases de datos cuando se le realizan operaciones de Shrink. Algunos DBA’s realizan esta tarea de manera común sin percatarse talves del grave daño que le están causando a la base de datos. Este ejemplo lo tome de la explicación realizada por Paul Randal durante una conferencia en SQL Server Connections y otros métodos de ingreso de datos proporcionados por Itzik Ben Gan. Lo que haremos es crear una pequeña base de datos de prueba, la vamos a llenar con una serie de datos de forma aleatoria, luego borramos la tabla de parámetros y realizamos el shrink para ver los resultados finales. USE MASTER; GO IF DATABASEPROPERTYEX ('shrinkdb', 'Version') > 0 DROP DATABASE shrinkdb; Create database ShrinkDb; Go --Creamos luego una tabla llamada empleados USE [Shrinkdb] GO -- Creamos una tabla auxiliar que va a servirnos para llenar datos aleatorios SET NOCOUNT ON; IF OBJECT_ID('dbo.Nums') IS NOT NULL DROP TABLE dbo.Nums; CREATE TABLE dbo.Nums(n INT NOT NULL PRIMARY KEY); DECLARE @max AS INT, @rc AS INT; SET @max = 1000000; SET @rc = 1; INSERT INTO dbo.Nums(n) VALUES(1); WHILE @rc * 2 <= @max BEGIN INSERT INTO dbo.Nums(n) SELECT n + @rc FROM dbo.Nums; SET @rc = @rc * 2; END INSERT INTO dbo.Nums(n) SELECT n + @rc FROM dbo.Nums WHERE n + @rc <= @max; GO -- Parámetros de configuración para cargas posteriores DECLARE @numorders AS INT, @numcusts AS INT, @numemps AS INT, @numshippers AS INT, @numyears AS INT, Tel: (506) 297 8132 – 244-5849 | De la Basílica de Santo Domingo, Heredia; 200 mts norte y 900 mts este. Apto 103-1100, Costa Rica
  • 2. GPI.- Confidencial @startdate AS DATETIME; SELECT @numorders = 1000000, @numcusts = 20000, @numemps = 3500, @numshippers = 5, @numyears = 4, @startdate = '20050101'; -- Creamos y llenamos la tabla de empleados con un maximo de 3500 empleados, las variables de arriba permiten cambiar dichos parámetros CREATE TABLE dbo.Empleados ( empid INT NOT NULL, Apellido NVARCHAR(25) NOT NULL, Nombre NVARCHAR(25) NOT NULL CONSTRAINT PK_empleados PRIMARY KEY(empid) ); INSERT INTO dbo.Empleados(empid, Apellido, Nombre) SELECT n AS empid, N'Apellido_' + CAST(n AS NVARCHAR(10)) AS Apellido, N'Nombre_' + CAST(n AS NVARCHAR(10)) AS Nombre FROM dbo.Nums WHERE n <= @numemps; CREATE NONCLUSTERED INDEX INX_APE ON EMPLEADOS (APELLIDO) /* Aca podemos chequear los datos de la tabla para que revisen los datos cargados */ SELECT * FROM Empleados --Chequeamos el porcentaje de fragmentación de la tabla para medir como se encuentra el índice. SELECT avg_fragmentation_in_percent, fragment_count FROM sys.dm_db_index_physical_stats ( DB_ID ('shrinkdb'), OBJECT_ID ('empleados'), 1, NULL, 'LIMITED'); GO Tel: (506) 297 8132 – 244-5849 | De la Basílica de Santo Domingo, Heredia; 200 mts norte y 900 mts este. Apto 103-1100, Costa Rica
  • 3. GPI.- Confidencial --Como podemos ver el índice no muestra fragmentación considerable. Este debe de ser el comportamiento normal -- Ahora borramos la tabla NUMS que utilizamos como utilitario previamente DROP TABLE nums; GO -- hacemos el shrink de la base de datos para "recuperar" espacio en disco DBCC SHRINKDATABASE (shrinkdb); GO -- Chequeamos la fragmentación nuevamente SELECT avg_fragmentation_in_percent, fragment_count FROM sys.dm_db_index_physical_stats ( DB_ID ('shrinkdb'), OBJECT_ID ('empleados'), 1, NULL, 'LIMITED'); GO /* Ahora como pueden ver, resulta ser que el indice esta totalmente fragmentado, y esto se debe a que el Shrink inicia el proceso desde el final del archivo de datos hacia el inicio, lo que hace que el orden Tel: (506) 297 8132 – 244-5849 | De la Basílica de Santo Domingo, Heredia; 200 mts norte y 900 mts este. Apto 103-1100, Costa Rica
  • 4. GPI.- Confidencial de las paginas cambie y se fragmente. Y esto q provoca? Rendimiento pésimo de la base de datos, encolamiento en discos, mayor consumo de recursos en general... asi que acá les dejo la inquietud y cuando algún DBA les diga que va a hacer un shrink en Producción... YA SABEN Q HACER... :) */ Tel: (506) 297 8132 – 244-5849 | De la Basílica de Santo Domingo, Heredia; 200 mts norte y 900 mts este. Apto 103-1100, Costa Rica