Backups y restores “al vuelo” sin almacenamiento intermedio

Backups y restores “al vuelo” sin almacenamiento intermedio

Seguramente los más “senior” recordarán la posibilidad que existía en versiones SQL Server antiguas de realizar backups utilizando named pipes. Cuando hablo de versiones antiguas, me refiero a “antiguas de verdad”, ya que esta funcionalidad fue marcada como obsoleta en SQL Server 7, se mantuvo en SQL 2000 pero ya se eliminó de SQL Server 2005 y posteriores. (más…)

Combinando NGrams y FullText Search

Combinando NGrams y FullText Search

Con bastante frecuencia nos encontramos que nuestros clientes sufren problemas de rendimiento debido a filtros sobre campos de texto. Es bastante habitual que se quiera permitir filtrados “libres” sobre textos, descripciones, documentos, etc. pero no se tenga en cuenta que, en función del patrón de búsqueda, esto puede ser bastante pesado para SQL Server. (más…)

Curiosidades con Heaps y entornos con alto consumo de CPU

Curiosidades con Heaps y entornos con alto consumo de CPU

Es bastante habitual encontrarnos con el siguiente diálogo al aterrizar en un cliente:

  • SolidQ: ¿Me puedes comentar o mostrar los gráficos del consumo de CPU del servidor X?
  • Cliente: De CPU vamos bien, no es problema.
  • SolidQ: Si no te importa, ¿puedes mostrarme los datos que tienes al respecto?
  • Cliente: Claro. Mira, aquí puedes ver que tenemos medias (en periodos de 5 minutos) del 60% de CPU y en los momentos de más carga no pasamos del 85% de media. Está correcto, ¿verdad?

El problema de esta aproximación a la hora de interpretar a la utilización de recursos es que, intuitivamente, no solemos ser conscientes de qué implicaciones tienen estos grados de utilización tan altos. No debemos confundir la interpretación respecto a la que tendríamos del % de uso de memoria o del % de uso de disco, que únicamente indican cuanta cantidad de memoria/espacio estamos utilizando, pero no el grado de utilización de dicho recurso.

(más…)

Técnicas de apoyo a la indexación tradicional. SQL Server

Técnicas de apoyo a la indexación tradicional. SQL Server

Cuando los problemas de rendimiento empiezan a surgir uno de los primeros pensamientos que solemos tener está relacionado con la indexación. En SQL Server disponemos de diversos tipos de índices, pero existen circunstancias donde no son especialmente eficientes para el tipo de búsqueda requerido.

En este tipo de situaciones el ingenio entra en juego y podemos plantearnos alternativas que se ajusten mejor a nuestras necesidades. Por comentar algunas, podemos implementar mapas de bits, digrams/trigrams, checksums/hashes, materializaciones de funciones, etc. (más…)

Prueba gratis la herramienta que analiza el rendimiento de tus consultas

Prueba gratis la herramienta que analiza el rendimiento de tus consultas

En SolidQ estamos a punto de lanzar una nueva herramienta y queremos darte la oportunidad de que la pruebes antes que nadie. Su nombre en clave es TSQL-CSI-DW y es ni mas ni menos que el datawarehouse de análisis de rendimiento de tus consultas. La idea es sencilla: activas una traza de eventos extendidos con el template que te diremos, y nosotros lo procesamos dentro de un Datawarehouse para que lo explotes tú desde un PowerBI que te expondremos para ello.

(más…)

Generación de código para proyectos de base de datos

Generación de código para proyectos de base de datos

En ingeniería de software, hace bastantes años que Microsoft nos hizo un gran aporte con las herramientas de gestion de proyectos de base de datos a través de Visual Studio. Gracias a ello, los administradores y desarrolladores de BBDD podemos utilizar Visual Studio para gestionar el ciclo de vida de las BBDD en entornos corporativos, permitiéndonos hacer el mismo seguimiento y evolución con nuestras BBDD al que están acostumbrados los equipos de desarrollo cuando hablamos de aplicaciones. Ya sabes…integración continua, despliegues con tests unitarios,….

Al hilo de esto, en un proyecto bastante grande en el que estoy metido últimamente ha surgido la necesidad de generar automáticamente ciertas partes de código, y dado que es un proyecto siguiendo una metodología de desarrollo Agil con Scrum y Visual Studio con proyectos de BBDD, he podido aprovechar una de las características que siempre me han gustado mas de Visual Studio…las plantillas de generación de código T4.

(más…)

Query_hash + eventos extendidos = captura de waitstats granular

Query_hash + eventos extendidos = captura de waitstats granular

Cuando hablamos de waitstats lo primero que viene a la mente la mayoría de los DBA, en función de cuantos años lleven usándolos, es el comando DBCC SQLPERF(waitstats) o la DMV sys.dm_os_wait_stats. En ocasiones la captura de esta información de forma global tiene mucho sentido, para obtener por ejemplo una “foto” de las esperas que afectan a nuestra instancia de forma global. Sin embargo, en otros casos lo que nos interesa es conocer las esperas que afectan a una parte muy concreta de nuestra carga y es ahí donde los eventos extendidos junto a un filtrado por firma de consulta (query_hash) nos ofrece el mejor resultado.

(más…)