The mailbox database is the primary component in Exchange Server 2016. Unlike previous Exchange Server versions, which also contained public folder databases, Exchange Server 2016 works only with mailbox databases.
Mailbox databases contain data, data definitions, indexes, checksums, flags, and other information that constitute mailboxes in Exchange Server 2016. Mailbox databases hold individual users’ private data, and also contain the mailbox folders that Exchange Server generates when you create mailboxes for those users. You can host the mailbox database on a single server, or you can distribute it across multiple mailbox servers if you have deployed database availability groups (DAGs).
Exchange Server 2016 stores the mailbox database in a database file, also known as an Exchange database (.edb) file. In addition to the .edb file, Exchange Server 2016 uses a set of data files to host and maintain the mailbox database. These files include:
· Mailbox database (.edb file). This is the main repository for mailbox data. The Extensible Storage Engine (ESE) accesses this file directly. The .edb file has a B-tree structure that facilitates quick access and enables users to access data on any page within just one input-output cycle.
· Transaction log (.log file). Exchange Server 2016 records in the transaction log file each operation that should be performed on a database, such as sending or receiving a message. These operations are called transactions. Operations that are committed to the transaction log are later written to the database itself (in an .edb file). Until the transaction is committed to the mailbox database, the only existence of this data is in the random access memory (RAM) and in the transaction logs. Exchange Server logs all transactions, complete or incomplete, to maintain data integrity in case of a service interruption. Each database has its own set of transaction logs.
· Checkpoint file (.chk). Checkpoint files store data that indicate when a transaction is successfully committed to the database. The purpose of the checkpoint file is to help the ESE replay log files on an inconsistent database in case of database recovery. By using information from the checkpoint file, the ESE starts with the transaction that is present in the log file, but is not yet written to the checkpoint file. Each database’s log prefix determines its checkpoint file name. For example, the checkpoint file name for a database with the prefix E00 would be E00.chk. This checkpoint file is several kilobytes in size and does not increase in size.
· Temporary file (Tmp.edb). This is a temporary location used for processing transactions. Tmp.edb contains temporary information that is deleted when all stores in the storage group are dismounted, or the Exchange Information Store service is stopped. This file does not exceed 1 megabyte (MB).
· Reserve log files (E##res0001.jrs - E##res000A.log per database, where ## is the log prefix). These files are reserve space for additional log files in case the disk that stores log files becomes full. Exchange Server 2016 only uses these files as emergency storage when the disk becomes full, and it cannot write new transactions to disk. When Exchange Server 2016 runs out of disk space, it writes the current transaction to disk, using up the space reserved by the 10 reserve transaction logs, and then dismounts the database. The reserved transaction logs ensure minimal loss of data that is in transit to the database. The reserved transaction logs are always 1 MB each.
Although it is important to understand the purpose of each mailbox database file, you will rarely interact directly with these files. Exchange Server automatically manages these files, so they do not require administrator intervention, except in cases of database backup and restore.