Dedicated SQL Pools in Azure Synapse Analytics (Synapse SQL Pool for short) are optimized for the implementation of a more traditional Enterprise Data Warehouse. To enable this, a Synapse SQL Pool is provisioned using a combination of resources. The three bundled resources are CPU, Memory, and IO. These bundled units are called DWUs (Data Warehousing Units). In other words, DWUs are standardized units of performance for Synapse SQL Pool.
This means that in order to increase the performance, we will have to increase the number of DWUs provisioned. Also, going form a lower service level to a higher service level increases the number of DWUs provisioned and vice versa. To keep things simple, changing the DWUs has no effect on the storage costs, since storage is billed separately.
Besides, there are other settings provided to optimize the cost and performance of Synapse SQL Pool. One such setting is the Service Level Objective (SLO). The service levels for Synapse SQL Pool Gen2 are measured in cDWUs (Compute Data Warehousing Units). This is represented by appending a “c” at the end of the unit number e.g. DW2000c (DW2000 in Gen 1).
- Gen1 Synapse SQL Pools are measured in DWUs
- Gen2 Synapse SQL Pools are measured in cDWUs
Both Gen1 and Gen2 support pausing the Data Warehouse compute (DWU/cDWU) resources when the usage of the DW is not needed. This can be done on-demand by issuing a Synapse SQL or PowerShell command. These will be discussed in a future post.
Another important point to note is that Gen2 uses a local-disk based cache, which gets invalidated every time the Synapse SQl Pool is either paused or scaled (cDWU allocation is increased or decreased). So, with Gen2, after the resumption (unpause or cDWU allocation update) there will be a period of cache warming before the performance of the Synapse SQL Pool reaches an optimal level.