Why do we need to purchase SQL Server Enterprise Edition?
SQL Server Enterprise Edition has few great internal features that can help any organization to run safest and fastest database environment.
Ask participants what matters to them? Are they willing to have all?
Explain as following:-
Manageability: That’s great if the DBA can manage every single database within the SQL Server farm from one workstation or apply some policy to avoid some development mistakes. SQL Server enterprise edition provides some features for better and easier manageability of databases such as policy base management, resource governor, management data warehouse, master and slave agents and so on.
Performance: Enterprise edition provides high performance due to having some unique internal features which is discussed in the next slides.
Storage Space: By using Enterprise edition, you do not need to have huge amount of storage space, you can reduce the storage size by 50%.
Disaster Recovery: We are not going to talk about HADR, we are here to talk about database corruption recovery that other editions are not able to support it.
Cost: Emm… To gain mentioned benefits, for sure you need to spend some money! Nothing comes free.
Explain audience that why they should not believe in high end hardware.
Mention that high end hardware does not change SQL Server behavior towards data and transaction management. So if even the hardware is with high specs, it does not make any changes on the SQL Server behavior.
For example:
Corrupted I/O can happened in the high back end hardware and it can cause SQL Server database to be suspended.
1- Advance Scan (Merry Go Round Algorithm): This feature allows multiple tasks to share full table scans. If the execution plan of a Transact-SQL statement requires a scan of the data pages in a table and the Database Engine detects that the table is already being scanned for another execution plan, the Database Engine joins the second scan to the first, at the current location of the second scan. The Database Engine reads each page one time and passes the rows from each page to both execution plans. This continues until the end of the table is reached. Without advanced scanning, each user would have to compete for buffer space and cause disk arm contention. The same pages would then be read once for each user, instead of read one time and shared by multiple users, slowing down performance and taxing resources.
2- Fast Recovery: Fast Recovery allows a database to come online as soon as the REDO phase completes, before UNDO is run. This is made possible by lock logging, which records the locks that were applied by a transaction in the associated log record.
3- Prefetching: The leaf rows of a non-clustered index contain pointers to the data rows that contain each specific key value. As the storage engine reads through the leaf pages of the non-clustered index, it also starts scheduling asynchronous reads for the data rows whose pointers have already been retrieved.
4- Single Scatter Scan: The SQL Server storage engine scans the intermediate index page and builds a list of the leaf pages that must be read. The storage engine then schedules all the reads in key order. It also recognizes that for instance pages 308/465 and 488/489 are contiguous and performs a single scatter read to retrieve the adjacent pages in a single operation.
5- Automatic Matching: The Query Optimizer automatically matches the computed column definition to an existing scalar expression in a query.
6- Role Reversal: In Hash Join, after the build input is hashed, the second table, called the probe input, will be read and compared to the hash table. If rows are matched they will be returned. On the execution plan, the table at the top will be used as the build input, and the table at the bottom as the probe input. If the Query Optimizer is not able to correctly estimate which of the two inputs is smaller, the build and probe roles may be reversed at execution time, and this will not be shown on the execution plan.
7- Partitioning: You can transfer or access subsets of data quickly and efficiently, while maintaining the integrity of a data collection. For example, an operation such as loading data from an OLTP to an OLAP system takes only seconds, instead of the minutes and hours the operation takes when the data is not partitioned. And it improve query performance, based on the types of queries you frequently run and on your hardware configuration. For example, the query optimizer can process equi-join queries between two or more partitioned tables faster when the partitioning columns in the tables are the same, because the partitions themselves can be joined.
8- Data Compression: This feature is to reduce the size of the database. In addition to saving space, data compression can help improve performance of I/O intensive workloads because the data is stored in fewer pages and queries need to read fewer pages from disk.
9- Deferred Transaction: A deferred transaction is a transaction that is uncommitted when the roll forward phase finishes and that has encountered an error that prevents it from being rolled back. Because the transaction cannot be rolled back, it is deferred. In other editions, a corrupted transaction causes database startup to fail.
10- Vardecimal Storage Formatting: This storage format can be enabled at a table-level granularity. When enabled, SQL Server stores decimal and numeric data in the variable portion of the row instead the fixed portion. You can use vardecimal storage format to reduce the size of your database if you have tables with decimal and numeric data types.
1- Advance Scan (Merry Go Round Algorithm): This feature allows multiple tasks to share full table scans. If the execution plan of a Transact-SQL statement requires a scan of the data pages in a table and the Database Engine detects that the table is already being scanned for another execution plan, the Database Engine joins the second scan to the first, at the current location of the second scan. The Database Engine reads each page one time and passes the rows from each page to both execution plans. This continues until the end of the table is reached. Without advanced scanning, each user would have to compete for buffer space and cause disk arm contention. The same pages would then be read once for each user, instead of read one time and shared by multiple users, slowing down performance and taxing resources.
2- Fast Recovery: Fast Recovery allows a database to come online as soon as the REDO phase completes, before UNDO is run. This is made possible by lock logging, which records the locks that were applied by a transaction in the associated log record.
3- Prefetching: The leaf rows of a non-clustered index contain pointers to the data rows that contain each specific key value. As the storage engine reads through the leaf pages of the non-clustered index, it also starts scheduling asynchronous reads for the data rows whose pointers have already been retrieved.
4- Single Scatter Scan: The SQL Server storage engine scans the intermediate index page and builds a list of the leaf pages that must be read. The storage engine then schedules all the reads in key order. It also recognizes that for instance pages 308/465 and 488/489 are contiguous and performs a single scatter read to retrieve the adjacent pages in a single operation.
5- Automatic Matching: The Query Optimizer automatically matches the computed column definition to an existing scalar expression in a query.
6- Role Reversal: In Hash Join, after the build input is hashed, the second table, called the probe input, will be read and compared to the hash table. If rows are matched they will be returned. On the execution plan, the table at the top will be used as the build input, and the table at the bottom as the probe input. If the Query Optimizer is not able to correctly estimate which of the two inputs is smaller, the build and probe roles may be reversed at execution time, and this will not be shown on the execution plan.
7- Partitioning: You can transfer or access subsets of data quickly and efficiently, while maintaining the integrity of a data collection. For example, an operation such as loading data from an OLTP to an OLAP system takes only seconds, instead of the minutes and hours the operation takes when the data is not partitioned. And it improve query performance, based on the types of queries you frequently run and on your hardware configuration. For example, the query optimizer can process equi-join queries between two or more partitioned tables faster when the partitioning columns in the tables are the same, because the partitions themselves can be joined.
8- Data Compression: This feature is to reduce the size of the database. In addition to saving space, data compression can help improve performance of I/O intensive workloads because the data is stored in fewer pages and queries need to read fewer pages from disk.
9- Deferred Transaction: A deferred transaction is a transaction that is uncommitted when the roll forward phase finishes and that has encountered an error that prevents it from being rolled back. Because the transaction cannot be rolled back, it is deferred. In other editions, a corrupted transaction causes database startup to fail.
10- Vardecimal Storage Formatting: This storage format can be enabled at a table-level granularity. When enabled, SQL Server stores decimal and numeric data in the variable portion of the row instead the fixed portion. You can use vardecimal storage format to reduce the size of your database if you have tables with decimal and numeric data types.