Share via


Understanding the Mailbox Database Cache

 

Applies to: Exchange Server 2010 SP3, Exchange Server 2010 SP2

The Extensible Storage Engine (ESE) engine uses database cache to reduce I/O operations. In general, the more database cache that is available, the less I/O that is generated on a Microsoft Exchange Server 2010 Mailbox server. The database I/O reduction primarily depends on the amount of database cache available to the server and the user message profile.

Improved Database Cache Effectiveness

The database cache effectiveness has been improved in Exchange 2010 due to several technical changes. One of the most significant changes is increasing the log checkpoint depth target. The log checkpoint depth target is used to ensure that changes made to the log/database cache are written to the database file in a reasonable amount of time. It has been increased from 20 MB per database to 100 MB per database when a database has more than one copy (in a database availability group, or DAG). The following table provides the default log checkpoint depth targets for Exchange 2010.

Default log checkpoint depth target configuration per mailbox database

Database configuration Log checkpoint depth target (MB)

Stand-alone (one database copy)

20

Mailbox resiliency: Active database copy with two or more copies (DAG)

100

Passive database copy

5

Due to this change, the database write I/O for an active database with two or more copies can be up to 40 percent less than the database write I/O for a stand-alone database. When the database has a higher checkpoint depth target, it's able to retain database file changes in memory for a longer period; thus, improving its ability to combine I/Os (coalescing) and by reducing repeated write I/Os (I/Os that can be saved by delaying the write long enough so multiple database changes can be made in memory prior to writing the change to the database file).

This change was only made for mailbox resiliency solutions because a deeper checkpoint depth target can significantly increase the time it takes the active database to recover the failed database after a failure. This problem has been addressed in mailbox resiliency configurations because if the active database fails, a failover is automatically triggered to another healthy copy. Log replay operations will resume when the failed database is recovered.

The checkpoint depth target has subsequently been reduced on passive database copies to reduce the time a database switchover/failover takes. A passive database copy with a 5 MB checkpoint depth target can be activated much faster than a copy with a higher checkpoint depth target (there are fewer logs to play through when transitioning between the passive and active state). A passive database copy does not have transactional I/O so there is spare capacity to handle the additional write I/O with the lower Checkpoint Depth Target.

Database Cache Minimum Requirements

To ensure the ESE database has sufficient memory to work effectively, there is a required minimum amount of physical memory per server based on database count. These requirements apply to both active and passive database copies. See the following table for the requirements.

Required minimum memory per mailbox server

Database count Exchange 2010 minimum required physical memory

1-10

2 GB

11-20

4 GB

21-30

6 GB

31-40

8 GB

41-50

10 GB

51-60

12 GB

61-70

14 GB

71-80

16 GB

81-90

18 GB

91-100

20 GB

Database Cache Metrics

In previous versions of Exchange, one of the key metrics needed for sizing storage was the amount of database I/O per second (IOPS) consumed by each user. The two most important factors that can be used to predict Exchange 2010 Mailbox IOPS are the amount of database cache per mailbox and the number of messages each user sends and receives per day.

The following table provides estimated values for IOPS per mailbox based on message activity and database cache. You can use the information in the table to help predict baseline Exchange 2010 mailbox I/O requirements.

These estimates are only valid for database cache sizes between 3 MB and 30 MB per mailbox. These estimates have been validated with users with the following characteristics: High percentage Exchange Cache Mode clients in either Microsoft Office Outlook 2007 or Outlook 2010; 2-GB mailboxes; and a high percentage of Exchange ActiveSync usage. The average message size used for the estimates is 75 KB, but message size isn't a primary factor for IOPS. Other client types and usage scenarios may yield inaccurate results.

Estimated IOPS per mailbox based on message activity and mailbox database cache

Messages sent/received per mailbox per day (~75KB average message size) Database cache per user (MB) Single database copy (Stand-alone): Estimated IOPS per mailbox Multiple database copies (mailbox resiliency): Estimated IOPS per mailbox

50

3

.060

.050

100

6

.120

.100

150

9

.180

.150

200

12

.240

.200

250

15

.300

.250

300

18

.360

.300

350

21

.420

.350

400

24

.480

.400

450

27

.540

.450

500

30

.600

.500

After you have determined the database cache size requirements, the next step is to determine the minimum memory requirements per server to ensure the database cache size requirements can be met. The database cache size must be factored in to the sizing process to ensure the amount of physical memory per server is adequate to meet the needs of the mailbox count with a given user profile.

The following table lists the default mailbox database cache sizes for both single role Mailbox servers as well as multiple role servers.

Default mailbox database cache sizes

Server physical memory (RAM) Database cache size: (Mailbox role only) Database cache size: Multiple-role (for example, Mailbox + Hub Transport)

2GB

512 MB

Not supported

4GB

1 GB

Not supported

8GB

3.6 GB

2 GB

16GB

10.4 GB

8 GB

24GB

17.6 GB

14 GB

32GB

24.4 GB

20 GB

48GB

39.2 GB

32 GB

64GB

53.6 GB

44 GB

96GB

82.4 GB

68 GB

128GB

111.2 GB

92 GB

Note

You can modify the default database cache size values by making changes to the msExchESEParamCacheSizeMax and msExchESEParamCacheSizeMin attributes in Active Directory. For additional details, see How to modify the Store Database maximum cache size in Exchange 2000 Server. Use 32KB pages for the cache sizing calculations.

To determine server memory requirements, see Exchange 2010 Mailbox Server Role Design Example, which provides information about designing your Mailbox Server role to determine the appropriate memory, capacity, I/O, and CPU performance.

 © 2010 Microsoft Corporation. All rights reserved.