Vientos de cambio

En los últimos 15 años ha surgido una cantidad considerable de nuevas tecnologías de base de datos. Los profesionales de la ingeniería del software, debemos familiarizarnos con ellas, ya que esto nos permitirá hacer una correcta elección ante determinados escenarios, permitiéndonos hacer uso de la herramienta más adecuada para superar nuevos desafíos.

Sigue leyendo

Cloud SQL en Google Cloud Platform

Recientemente he estado considerando la opción de Cloud SQL para SQL Server ofrecida por Google Cloud Platform (GCP). Esta es la plataforma de servicios en la nube ofrecida por el gigante Google. En terminos de servicios cloud, parece que aún no está al nivel de Amazon Web Services (AWS) o Microsoft Azure. Sin embargo, el crecimiento de GCP en los último años dos años ha sido significativo. Sigue leyendo

Creando nuestro laboratorio de Elasticsearch con Hyper-V

Para crear nuestro laboratorio de Elasticsearch en un equipo Windows, con el que poder experimentar más adelante 😊, una buena opción es usando Hyper-V. Este es un software de virtualización que ofrece Microsoft y que se puede instalar en varias versiones de Windows 10 de forma gratuita.

Objetivo

Vamos a crear un cluster con las siguientes características:

  • Nombre del cluster: es-cluster-lab
  • Número de nodos: 3
  • Nombre de los nodos: elasticsearch-lab-{1..3}.localdomain

Sigue leyendo

Query Store: Ejemplos prácticos

En mi primer artículo sobre Query Store, hace ya bastante tiempo, comenté que escribiría otro incluyendo ejemplos de configuraciones, monitorización y consumo de recursos. Bien, ese día ha llegado!

Código de ejemplo de configuración

USE master;
GO

ALTER DATABASE [NombreDeTuDB]
	SET QUERY_STORE = ON
	(
		OPERATION_MODE = READ_WRITE
		, CLEANUP_POLICY = (STALE_QUERY_THRESHOLD_DAYS = 14)
		, DATA_FLUSH_INTERVAL_SECONDS = 600
		, INTERVAL_LENGTH_MINUTES = 10
		, MAX_STORAGE_SIZE_MB = 512
		, QUERY_CAPTURE_MODE = AUTO
		, SIZE_BASED_CLEANUP_MODE = AUTO
		, MAX_PLANS_PER_QUERY = 7
	);

Puedes ver que los parámetros se explican en el citado artículo. Como siempre, te recomiendo probar bien la configuración en entornos de pre-producción, ya que la carga de trabajo de tu Base de Datos influye de forma directa. Dicho esto, este ejemplo de configuración es funcional y no he tenido problemas con ello.

Código de ejemplo para monitorizar el uso de disco de Query Store

Este código lo vamos a desglosar por pasos:
1) Creamos una base de datos (opcional) y una nueva tabla para guardar los datos que vamos a monitorizar:

USE master;
GO

CREATE DATABASE DBA_Admin;
GO

USE DBA_Admin;
GO

CREATE TABLE dbo.QueryStoreSizeHistory (
	current_storage_size_mb	BIGINT NOT NULL
	, max_storage_size_mb	BIGINT NOT NULL
	, date_time				DATETIME2(2) DEFAULT(GETDATE()) NOT NULL
);

2) A continuación podemos crear un SQL Agent Job, que se lance cada N horas, y que  sólo va a ejecutar el siguiente código de T-SQL:

USE DBA_Admin;
GO
INSERT INTO dbo.QueryStoreSizeHistory (
current_storage_size_mb
, max_storage_size_mb
)
SELECT current_storage_size_mb
, max_storage_size_mb
FROM MiDB.sys.database_query_store_options;

Fíjate que la vista del sistema sys.database_query_store_options existe a nivel de la Base de datos donde QS está configurado. Por lo que hace falta usar la referencia en tres partes (NombreDB.NombreEsquema.NombreTabla).

3) Finalmente tras dejar pasar un tiempo, puedes comprobar como se ha ido usando el espacio asignado a Query Store:

SELECT *
	FROM DBA_Admin.dbo.QueryStoreSizeHistory
	ORDER BY date_time;

Mencionar que esta tabla de monitorización no tiene índices de ningún tipo ni PK. Esto es así poque su tamaño no debería superar unos pocos MBytes. Está pensanda para una comprobación inicial sobre cómo de rápido se llena el espacio de QStore. Si quieres mantener esta monitorización de forma indefinida, mi recomendación sería incluir un paso de limpieza/borrado de los registros más antiguos.

Tras un tiempo, con QS en funcionamiento, deberías echar un vistazo a los informes en tu Base de Datos a través de la interfaz de SQL Server Management Studio (SSMS):

2019-04-26_00h56_29

Lo recomendable en este punto, es que lo pruebes y veas por ti mismo lo útil que puede llegar a ser. Puedes usar también los ejemplos que utilicé en mi última presentación sobre Query Store , mira el link en la sección de comentarios.

Aparte de los informes predefinidos de SSMS, te recomiendo echar un vistazo a las consultas del sistema que vienen como parte de Query Store, y que te brinda toda la personalización que se te ocurra en tus comprobaciones. En la documentación de MSSQL puedes encontrar un buen puñado de ejemplos que usan esas vistas del sistema. Resultan especialmente interesantes las consultas bajo la sección Performance Auditing and Troubleshooting.

Y eso es todo por hoy, espero que te haya sido de ayuda. Cualquier pregunta, puedes enviarme un mensaje o dejar un comentario.

¡Hasta el próximo artículo!