Download Powerpoints
Document related concepts
Transcript
Patrones de escalalidad en Microsoft Azure SQL Database Expositor: Eduardo Castro, PhD. PASS Regional Mentor. SQL Server MVP Moderador: Kenneth Ureña Gracias a nuestros auspiciadores Database Security as Easy as A-B-C http://www.greensql.com Hardcore Developer and IT Training SQL Server Performance Try PlanExplorer today! http://www.pluralsight.com http://www.sqlsentry.com Próximos SQL Saturday 6 de Diciembre de 2014 https://www.sqlsaturday.com/351/register.aspx 24 de Enero de 2015 https://www.sqlsaturday.com/346/register.aspx 18 de Abril de 2015 https://www.sqlsaturday.com/368/register.aspx 9 de Mayo de 2015 https://www.sqlsaturday.com/373/register.aspx Capítulo Global PASS en Español Reuniones semanales todos los miércoles a las 12PM UTC-5 (Hora de Colombia) https://www.facebook.com/SpanishPASSVC 4 4 Asistencia Técnica Si requiere asistencia durante la sesión debe usar la sección de preguntas que esta en el menú de la derecha. Use el botón de Zoom para ajustar su pantalla al tamaño deseado 5 Escriba sus preguntas en la sección de preguntas que esta en el menú de la derecha Eduardo Castro Eduardo Castro cuenta con más de 17 años de experiencia con herramientas Microsoft y ha sido reconocido como Most Valuable Professional de Microsoft SQL Server en más de 10 ocasiones. Eduardo es un orador activo en las comunidades técnicas de Microsoft y ha sido experto invitado y conferencista en eventos tales como SQL Server Pass Summit, el Congreso Mundial de Arquitectura (IWS de IASA), The OpenGroup Enterprise Architecture Conference, IEEE Congress. 6 6 Fuentes de esta presentación MSDN Channel 9 Microsoft Azure SQL Databases SQL Azure Scalability 7 Microsoft Azure SQL Databases Overview Microsoft Azure Elastic Scale La plataforma de datos de Microsoft Azure Data Services para soluciones Plataforma Microsoft SQL Nube Híbrida Menor costo compartido On Premises Plataforma como un Servicio SQL SQL SQL Base de datos SQL Azure Bases de datos virtualizados Infraestructura como Servicio SQL SQL SQL SQL Server en Azure VM Máquinas virtualizadas Virtual SQL SQL SQL SQL Server Private Cloud Máquinas virtualizadas Físico Dedicado costo más alto SQL SQL Server Máquinas físicas (hierro en bruto) Fuera de las instalaciones Administración Superior Baja la Administración 10 Base de datos SQL Azure Base de datos relacional -como-un-servicio, totalmente administrado por Microsoft Diseñado para aplicaciones en la nube Plataforma de base de datos de nivel empresarial con la economía nube 11 SQL Database - Niveles de servicio de base de datos • • •• •• ••• ••• Rendimiento predecible Básico / Standard / Premium Web / Business Máquina DB 2 DB 4 DB 7 DB 7 DB 55 DB DB 8 DB 8 Memoria DB 2 DB 3 DB 6 DB 6 DB 9 DB 9 DB 1 Delimitadores eliminan vecinos ruidosos DB 4 DB 5 DB 3 DB 6 DB 9 DB 7 DB 8 Memoria Lee DB 4 Vecino ruidoso! Lee Escribe DB 1 DB 3 Escribe DB 2 DB 1 Máquina Opciones de escalabilidad en la base de datos SQL Azure Rendimiento previsible: escalamiento hacia arriba o hacia abajo (vertical) • Cambie de niveles de servicio para una base de datos dada, con base en las necesidades de capacidad / rendimiento Escalamiento elástico: Horizontal • Añadir o eliminar bases de datos como más o menos capacidad / rendimiento según sea necesario 14 Escala hacia arriba / abajo Opciones de escalabilidad en la base de datos SQL Azure Premium Premium Estándar Estándar Básico Básico Básico Básico Escalamiento OUT / IN 15 Básico Básico Básico Rendimiento escalable • Básico,Estándar, y Premium proporcionan el aumento de los niveles de rendimiento • El rendimiento se expresa en unidades de rendimiento de base de datos (DTU) DTU es una medida combinada de la CPU, IO lectura, IO escritura, y la memoria • Escala de rendimiento arriba / abajo a través del portal, las API, PS, o T-SQL para reflejar la demanda real o anticipada P3 • Base de datos permanece en línea, durante el cambio • Facturación por hora P2 P1 B S0 DTU S1 5 10 20 S2 50 100 16 200 800 Unidad de Rendimiento de Base de Datos- DTU Monitoreo % De Nivel de rendimiento actual Cuadro delimitador Calcular 50% 60% Leer 50% 75% DB carga de trabajo Lee Escribe Utilización Escribir UPC Memoria Memoria Representa la capacidad relativa (recursos) asignado a la base de datos Medida de CPU, la memoria, y lecturas y escrituras Simplifica las opciones selección de rendimiento 17 Nuevos niveles de rendimiento Básico Estándar Prima Niveles de Desempeño (DTU) 5 S0: 10 S1: 20 S2: 50 P1: 100 P2:200 P3: 800 Resultados de ASDB 16600 tx/hora S1: ,520 tx/minuto S1: ,940 tx/minuto S2: 2570 tx/minuto P1: 105 tx/segundo P2: 228 tx/segundo P3: 735 tx/segundo El tamaño máximo de DB 2GB 250GB 500GB Precio * por hora (mes) 0,0069 dólares (~ $ 5) S0: 0,0208 dólares (~ $ 15) S1: $ 0,0417 (~ $ 30) S2: 0,1042 dólares (~ $ 75) P1: 0,6458 dólares (~ $ 465) P2: $ 1.292 (~ $ 930) P3: $ 5.167 (~ $ 3720) * A partir de 1 de noviembrest 18 Gobernanza de Recursos Las solicitudes de recursos no se rechazan, pero se ponen en cola La sobrecarga puede dar lugar a transacciones de larga ejecución o posiblidad de timeout UPC UPC UPC Escribe Escribe Escribe SELECT * FROM a JOIN b ON … RESULTADO Lee Lee Lee 19 La elección de los niveles de desempeño La migración desde on Premises Crear escenarios de prueba La migración desde Web & Business Utilice master.sys.resource_stats El cambio entre los niveles Utilice userdb.sys.dm_db_resource_stats Afinamiento de consultas sys.dm_exec_query_stats sys.dm_exec_query_sql_text() sys.dm_exec_query_plan sys.dm_exec_requests sys.dm_exec_sessions 20 Cómo cambiar el Nivel de Rendimiento PowerShell Set-AzureSqlDatabase REST Update Database / ServiceLevelObjectiveId .NET Microsoft.WindowsAzure.Management.Sql. SqlManagementClient client.Databases.Update(...) T-SQL ALTER DATABASE … MODIFY (EDITION = …) 21 Administración de cuotas Cuota por servidor 6 Servidores por suscripción Cuotas por DB 1600 DTU 150 bases de datos Ejemplos 2 P3 = 2x800 DTU = 1600 DTU 160 S0 = 160x10 DTU = 1600 DTU 200 S2 = 200x50 DTU = 10000 DTU 1 P3, 14 S2,10 S0 ... = 1.600 DTU / 25 DB 22 Monitoreo de las base de datos • Monitorear el consumo de recursos y establecer alertas y notificaciones para guiar las decisiones de escalablidad • Métricas incluyen el uso de DTU, el uso de recursos, el tamaño de la base de datos, la salud de conexión • Dashboard para ver resumen del rendimiento 23 Monitoreo de recursos master.sys.resource_stats 5 minutos promedio userdb.sys.dm_db_resource_stats 15 segundos promedios 24 Eslastic Scale en SQL Azure • Escalamiento hasta miles de bases de datos utilizando el patrón de base de datos fragmentadas (Sharding) • Soporta añadir, divider y combinar “shards” con el movimiento de datos • Los clientes pueden combinar resultados de la consulta de múltiples “shards” Shards de SQL Database 25 Conceptos (2) Sharding Clave (3) Shard Map Manager (6) Tabla fragmentada (8) Shardlet Tabla Cliente ID de cliente Nombre 1 Alicia 2 Bob ... Tabla DataCenter ID DataCenter Nombre DC 1 Boston 2 Miami (1) Base de Datos (4) Shard (7) Tabla 26 (5) Shard Set (4) Shard Uso de escalamiento por Sharding API de cliente .NET Shard Map Management (SMM) • Define grupos de shards para su aplicación • Maneja mapeo de llaves de enrutamiento Data Dependent Routing (DDR) Aplicación Desarrollador Aplicación .NET • Enruta solicitudes entrantes para el shard correcto, por ejemplo, dado un ID de cliente • Información de enrutamiento se guarda en caché por eficiencia Multi-Shard Query (MSQ) • Procesamiento interactivo a través de varios Shards • La misma sentencia ejecutada en todos los shards con UNION ALL 27 Admin / DevOps Servicio de Gestión Data Dependent Routing (DDR) using (SqlConnection conn = ShardMap.OpenConnectionForKey( shardingKey, connectionString, ConnectionOptions.Validate)); { using (SqlCommand cmd = new SqlCommand() { cmd.Connection = conn; cmd.CommandText = "SELECT * FROM customers WHERE customer ID = 104"; SqlDataReader sdr = cmd.ExecuteReader(); } } 28 Data Dependent Routing (DDR) Caché: mejora el rendimiento de las operaciones de Shards • Global Shard Map (GSM) - estado de todos los Shards en el Shard Map • Local Shard Map (LSM) - estado de todos los Shards en un Shard concreto • Client Cache (eager/lazy) - estado de todos los Shards en los Shard Maps / Shards conocidos Desarrollador Shard Map Manager Client App DDR API Cache GSM DB 29 LSM Multi-Shard Query Shard Map Manager Cliente App MSQ API Aplicación Revelador SELECT count(*) FROM customers UNION ALL result set DB1 DB2 DB3 DB4 DB5 DB6 [0-100) [100-200) [200-300) [300-400) [400-500) [500-600) 30 ... DBn [N - n + 100) Consulta de multiples Shards using (MultiShardConnection conn = new MultiShardConnection(m_shardMap.GetAllShards(null), MultiShardTestUtils.GetTestSqlCredential())) { using (MultiShardCommand cmd = conn.CreateCommand()) { cmd.CommandText = "SELECT count(*) FROM customers"; cmd.CommandType = CommandType.Text; cmd.Policy = MultiShardPolicy.PartialResults; using (MultiShardDataReader sdr = cmd.ExecuteReader(includeShardNameColumn: true)) { while (sdr.Read()) { // Now consume results from the data reader… } } } } 31 Combinación y división de Shards • Dividir: crear dos shards con base en uno • Combinar: crear un shards de dos shards distintos • Mover a un punto: mover un solo tenand a un shard específico Merge Split DB1 DB2 DB3 DB4 DB5 DB6 [0-100) [100-200) [200-300) [300-400) [400-500) [500-600) DB2.1 DB5.1 DB5.2 [0-200) [400-450) [450-500) 32 ... DBn [N - n + 100) Geo-Replicación DB1 DB1 DB1 DB1 DB1 33 Preguntas? A continuación … Backup y Restore SQL Server 2014 German Cayo Gracias por participar