About the Authors |
|
xi | |
About the Technical Reviewers |
|
xiii | |
Introduction |
|
xv | |
|
|
1 | (74) |
|
Chapter 1 The Journey to Hyperscale Architecture in Azure SQL |
|
|
3 | (34) |
|
|
5 | (2) |
|
|
5 | (2) |
|
Azure SQL Platform as a Service |
|
|
7 | (15) |
|
|
9 | (1) |
|
Purchasing Models and Service Tiers |
|
|
10 | (3) |
|
Availability Models and Redundancy |
|
|
13 | (2) |
|
Standard Availability Model: Locally Redundant Availability |
|
|
15 | (1) |
|
General Purpose Service Tier: Zone-Redundant Availability |
|
|
16 | (2) |
|
Premium and Business Critical Service Tier: Locally Redundant Availability |
|
|
18 | (1) |
|
Premium and Business Critical Service Tier: Zone-Redundant Availability |
|
|
19 | (2) |
|
Protecting Against Regional Outages Using Failover Groups with Geo-redundant Availability |
|
|
21 | (1) |
|
The Hyperscale Service Tier |
|
|
22 | (13) |
|
Hyperscale Architecture Overview |
|
|
24 | (1) |
|
Deploying Your First Hyperscale Database |
|
|
25 | (9) |
|
|
34 | (1) |
|
|
35 | (2) |
|
Chapter 2 Azure SQL Hyperscale Architecture Concepts and Foundations |
|
|
37 | (38) |
|
Hyperscale Azure SQL Scalability and Durability |
|
|
38 | (2) |
|
Foundations of Azure SQL Hyperscale |
|
|
40 | (9) |
|
The Buffer Pool Extension |
|
|
41 | (1) |
|
The Resilient Buffer Pool Extension |
|
|
41 | (1) |
|
Investigating the Size of RBPEX |
|
|
41 | (4) |
|
Row Versioning-Based Isolation Level |
|
|
45 | (3) |
|
Accelerated Database Recovery |
|
|
48 | (1) |
|
Multitier Architecture Concepts in Hyperscale |
|
|
49 | (25) |
|
|
50 | (8) |
|
|
58 | (3) |
|
|
61 | (7) |
|
|
68 | (2) |
|
How Do the Tiers Work Together? |
|
|
70 | (4) |
|
|
74 | (1) |
|
Part II Planning and Deployment |
|
|
75 | (264) |
|
Chapter 3 Planning an Azure SQL DB Hyperscale Environment |
|
|
77 | (48) |
|
Considerations When Planning for Hyperscale |
|
|
77 | (47) |
|
The Azure SQL Database Logical Server |
|
|
78 | (3) |
|
Considerations for Reliability |
|
|
81 | (13) |
|
Considerations for Network Connectivity |
|
|
94 | (14) |
|
Considerations for Security |
|
|
108 | (11) |
|
Considerations for Operational Excellence |
|
|
119 | (5) |
|
|
124 | (1) |
|
Chapter 4 Deploying a Highly Available Hyperscale Database into a Virtual Network |
|
|
125 | (34) |
|
An Example Hyperscale Production Environment |
|
|
126 | (3) |
|
|
129 | (10) |
|
The Starting Environment Deployment Script |
|
|
131 | (2) |
|
Deploying the Starting Environment Using the Azure Cloud Shell |
|
|
133 | (3) |
|
Creating a SQL Administrators Group |
|
|
136 | (3) |
|
Deploying a Highly Available Hyperscale Database into a Virtual Network |
|
|
139 | (16) |
|
Basic Configuration of the Database |
|
|
141 | (5) |
|
Configuring Network Connectivity |
|
|
146 | (4) |
|
The Final Configuration Tasks and Deployment |
|
|
150 | (5) |
|
Deleting the Example Environment |
|
|
155 | (2) |
|
|
157 | (2) |
|
Chapter 5 Administering a Hyperscale Database in a Virtual Network in the Azure Portal |
|
|
159 | (12) |
|
Administering a Hyperscale Database in a Virtual Network |
|
|
160 | (10) |
|
Deploying a Management VM and Azure Bastion |
|
|
163 | (4) |
|
Using the Management VM with an Azure Bastion |
|
|
167 | (3) |
|
|
170 | (1) |
|
Chapter 6 Configuring Transparent Data Encryption to Bring Your Own Key |
|
|
171 | (16) |
|
Enabling Customer-Managed Key Transparent Data Encryption |
|
|
172 | (13) |
|
Creating a User-Assigned Managed Identity |
|
|
174 | (1) |
|
Granting the Key Vault Crypto Officer Role to a User |
|
|
175 | (3) |
|
Generating a Key in the Azure Key Vault |
|
|
178 | (2) |
|
Granting Access to the Key by the User-Assigned Managed Identity |
|
|
180 | (2) |
|
Assigning the User-Assigned Managed Identity to the Logical Server |
|
|
182 | (2) |
|
Enabling Customer-Managed TDE |
|
|
184 | (1) |
|
|
185 | (2) |
|
Chapter 7 Enabling Geo-replication for Disaster Recovery |
|
|
187 | (16) |
|
Deploying a Hyperscale Geo Replica |
|
|
188 | (12) |
|
Creating a Logical Server in the Failover Region |
|
|
189 | (2) |
|
Connecting a Logical Server to a Virtual Network with Private Link |
|
|
191 | (5) |
|
Enabling the Customer-Managed Key TDE |
|
|
196 | (2) |
|
Enabling Geo-replication of a Hyperscale Database |
|
|
198 | (2) |
|
|
200 | (3) |
|
Chapter 8 Configuring Security Features and Enabling Diagnostic and Audit Logs |
|
|
203 | (10) |
|
Enabling Microsoft Defender for SQL |
|
|
204 | (2) |
|
Storing Diagnostic and Audit Logs |
|
|
206 | (5) |
|
Sending Audit Logs to a Log Analytics Workspace |
|
|
207 | (2) |
|
Sending Database Diagnostic Logs to Log Analytics |
|
|
209 | (2) |
|
|
211 | (2) |
|
Chapter 9 Deploying Azure SQL DB Hyperscale Using PowerShell |
|
|
213 | (28) |
|
Introduction to Infrastructure as Code |
|
|
214 | (1) |
|
Imperative vs. Declarative Infrastructure as Code |
|
|
215 | (1) |
|
Deploying Hyperscale Using Azure PowerShell |
|
|
216 | (23) |
|
The Azure PowerShell Modules |
|
|
216 | (2) |
|
Deploying the Starting Environment |
|
|
218 | (1) |
|
The Complete Deployment PowerShell Script |
|
|
218 | (2) |
|
Azure PowerShell Commands in Detail |
|
|
220 | (19) |
|
|
239 | (2) |
|
Chapter 10 Deploying Azure SQL DB Hyperscale Using Bash and Azure CLI |
|
|
241 | (26) |
|
Deploying Hyperscale Using the Azure CLI |
|
|
241 | (23) |
|
|
242 | (1) |
|
Deploying the Starting Environment |
|
|
243 | (2) |
|
The Complete Deployment Bash Script |
|
|
245 | (2) |
|
Azure CLI Commands in Detail |
|
|
247 | (17) |
|
|
264 | (3) |
|
Chapter 11 Deploying Azure SQL DB Hyperscale Using Azure Bicep |
|
|
267 | (18) |
|
|
268 | (1) |
|
Deploying Using Azure Bicep |
|
|
268 | (16) |
|
A Complete Azure Bicep Deployment |
|
|
268 | (3) |
|
Hyperscale Resources in Azure Bicep |
|
|
271 | (13) |
|
|
284 | (1) |
|
Chapter 12 Testing Hyperscale Database Performance Against Other Azure SQL Deployment Options |
|
|
285 | (54) |
|
|
286 | (50) |
|
HammerDB TPROC-C Workload |
|
|
287 | (1) |
|
|
287 | (14) |
|
Schema Build Performance Metrics |
|
|
301 | (11) |
|
|
312 | (24) |
|
|
336 | (3) |
|
Part III Operation and Management |
|
|
339 | (68) |
|
Chapter 13 Monitoring and Scaling |
|
|
341 | (20) |
|
Monitoring Platform Metrics |
|
|
342 | (9) |
|
Viewing Metrics with the Metrics Explorer |
|
|
342 | (2) |
|
Streaming Metrics to a Log Analytics Workspace |
|
|
344 | (1) |
|
Alerting on Platform Metrics |
|
|
345 | (6) |
|
Monitoring and Tuning Database Performance |
|
|
351 | (2) |
|
Monitoring Query Performance |
|
|
351 | (1) |
|
Performance Recommendations |
|
|
352 | (1) |
|
Automatically Tuning Database Performance |
|
|
352 | (1) |
|
Gathering Insights from the Database |
|
|
353 | (1) |
|
|
354 | (3) |
|
Scaling a Hyperscale Database |
|
|
357 | (3) |
|
Manually Scaling Up a Hyperscale Database |
|
|
358 | (1) |
|
Manually Scaling Out a Hyperscale Database |
|
|
359 | (1) |
|
Autoscaling a Hyperscale Database |
|
|
360 | (1) |
|
|
360 | (1) |
|
Chapter 14 Backup, Restore, and Disaster Recovery |
|
|
361 | (20) |
|
Hyperscale Database Backups |
|
|
361 | (7) |
|
|
362 | (3) |
|
Backup Storage Redundancy |
|
|
365 | (2) |
|
Monitoring Backup Storage Consumption with Azure Monitor Metrics |
|
|
367 | (1) |
|
Hyperscale Database Restores |
|
|
368 | (9) |
|
Example 1 Restore to Same Region, LRS to LRS |
|
|
369 | (2) |
|
Example 2 Restore to Same Region, LRS to GRS |
|
|
371 | (1) |
|
Example 3 Restore to the Same Region, GRS to GRS |
|
|
372 | (1) |
|
Example 4 Geo Restore to Different Region, GRS to LRS |
|
|
372 | (1) |
|
Example 5 Geo-restore to Different Region, GRS to GRS |
|
|
373 | (2) |
|
Comparing Restore Performance of Hyperscale to Traditional Azure SQL Databases |
|
|
375 | (2) |
|
|
377 | (2) |
|
|
379 | (2) |
|
Chapter 15 Security and Updating |
|
|
381 | (18) |
|
Azure SQL Database Security Overview |
|
|
381 | (15) |
|
|
384 | (3) |
|
|
387 | (3) |
|
Auditing and Azure Threat Detection |
|
|
390 | (2) |
|
|
392 | (4) |
|
Updating and Maintenance Events |
|
|
396 | (2) |
|
|
398 | (1) |
|
Chapter 16 Managing Costs |
|
|
399 | (8) |
|
|
399 | (2) |
|
|
401 | (2) |
|
Purchasing Reserved Capacity |
|
|
401 | (1) |
|
Estimating Reserved Capacity Benefits |
|
|
402 | (1) |
|
|
402 | (1) |
|
Scaling In and Scaling Down Replicas |
|
|
403 | (2) |
|
|
405 | (2) |
|
|
407 | (54) |
|
Chapter 17 Determining Whether Hyperscale Is Appropriate |
|
|
409 | (10) |
|
Key Considerations for Hyperscale |
|
|
409 | (9) |
|
|
410 | (3) |
|
|
413 | (1) |
|
|
413 | (3) |
|
|
416 | (2) |
|
|
418 | (1) |
|
Chapter 18 Migrating to Hyperscale |
|
|
419 | (30) |
|
|
419 | (28) |
|
In-Place Conversion of an Azure SQL Database to Hyperscale |
|
|
421 | (4) |
|
Migrating to Hyperscale with Data Migration Assistant |
|
|
425 | (7) |
|
Migrating to Hyperscale with the Azure Database Migration Service |
|
|
432 | (11) |
|
Migrating with ADS with the Azure SQL Migration Extension |
|
|
443 | (1) |
|
Migrating to Hyperscale Using Import Database |
|
|
444 | (2) |
|
Migrating to Hyperscale Using a Data Sync and Cutover |
|
|
446 | (1) |
|
|
447 | (2) |
|
Chapter 19 Reverse Migrating Away from Hyperscale |
|
|
449 | (10) |
|
Reverse Migration Methods |
|
|
450 | (6) |
|
Reverse Migration Using the Azure Portal |
|
|
450 | (3) |
|
Reverse Migration Using Transact SQL |
|
|
453 | (1) |
|
Reverse Migration Using Azure CLI |
|
|
454 | (2) |
|
Common Pitfalls of the Reverse Migration Process |
|
|
456 | (1) |
|
Migrating to an Unsupported Service Tier |
|
|
456 | (1) |
|
Database Not Eligible for Reverse Migration |
|
|
457 | (1) |
|
|
457 | (2) |
|
|
459 | (2) |
Index |
|
461 | |