arch: server | C/S | Embedded | Embedded or traditional C/S? |
arch: run in browser? | no | yes | It also known as a client-side database, is a database that is stored and managed within a user's web browser, rather than on a remote server. |
arch: clustering/HA | Always On Aaliablity Group, Failover clustering | | |
arch: in-memory support | In-memory OLTP (Hekaton) | | |
arch: Multi-master support? | no | | if multi-master support? |
arch: primary/read replica? | yes | | if primary + mulitiple read replica supported |
replication: sync/async | both | | Can commits wait or w/o wait for replicas to acknowledge |
replication: WAL shipping | yes | | Uses write-ahead log (WAL) shipping for replication |
replication: quorum-based commit | yes | | Multiple synchronous replicas with quorum for commit |
tables: max number per database | MAXINT Tables, views, triggers etc are objects in SQL Server. They the same an integer range as object ID, so maximal number of tables is at most MAXINT if there is no other objects. | | |
partitions: methods | Range, List, Hash, Composite (nested partitioning supported since 2016). | | Supported partitioning strategies (range, list, hash, etc.). |
rows: max rows per table | undefined | | The actual number depends on storage etc |
index: max allowed index | 999 v14-17 allows 999, and 8 is allowed before that | | Max number of indices allowed per table |
index: max allowable size | 900 clustered index, 1700 non-clustered index | | Max index record size (bytes). This constraint is mainly coming from the fact of the database page size: if we exclude blob data types, database engine usally do not allow a record expand more than one page. |
index: max number of fields | v14-17 allows 32 and 16 is allowed before that | | Max number of columns allowed in one index |
partition: max allowed partitions | 15000 In versions earlier than SQL Server 2012 (11.x), the number of partitions was limited to 1,000 by default.
The reason it struggles to increase the limit is due to the challenges I listed. | | Meta data challenge: 1M partitions just like 1M tables, system have to hold them in memory.
Optimizer challenge: O(N) algorithm may lead to very long planning time if there are excessive partitions. |
ACID | yes/yes | | for DML and DDL |
ACID: max isolation level | Serializable SQL Server implements traditional two phase locking (2PL) locking for serializability. It also supports SI, similar to Oracle, it is not serializable. | | |
ACID: max ANSI isolation level | Serializable | | |
ACID: durability | yes | yes | |
Materialized View: support? | yes | no | |