In visiting with customers, a common misconception that I have encountered is with the understanding of how Single Instance Store (SIS) works in Exchange 2007. Unlike Exchange 2003, SIS is only used to reduce the size of the database when an attachment is sent to two or more users that share the same database. To illustrate this, I have setup my lab to send large attachments to several users, exported the attachments to a PST file, and then imported the attachments back into the database.

Note: As you may already be aware, single instance storage has been removed from Exchange 2010 all together because of how the database has been designed.

Lab Environment

1 – All Roles Exchange 2007 SP2

1 – 2008 domain controller

15 files ranging from File1.txt – file15.txt

sis1

 

Each file is 7.52MB

sis2

Test users – asmith, bmith, and mboring

There is no mail content in the user’s mailbox before the test.

The sender mboring is on a different mailbox server than asmith and bsmith.

The database only contains the test user accounts and the size of the database before any mail is sent is:

sis3

Database Settings

sis4

sis5

Test

– Sent files 1 – 5 to both asmith and bsmith

sis6

– Sent files 6 – 10 just to asmtih

sis7

– Sent files 11-15 just to bsmith

sis8

– Current size of the database

sis9

sis10

– Export all the mailbox out of both asmtih and bsmith

sis11

sis12

– Size of PST file on disk

sis13

– Let Online maintenance run

sis14

sis15

– Current database size

sis16

– Ran eseutil /d against the database

sis17

– Current database size

sis18

– Imported the content from the PST files for both asmith and bsmith back into the database

sis19

sis20

– The database size is now

sis21

As you can tell the database was a 124MB before exporting and importing the data from the PST files. Once the data was imported back in, the size of the database grew to 163 MB. This is because the pointers in the database were broken when the data was exported. When an attachment is sent to two or more mailboxes in the same database, only one copy of the file is stored within the database. A pointer is used to link the mailboxes to the file thus reducing the overall size of the database. Once the data is exported the link is broken and when the data is imported back into the database a new reference is created for the attachment.

sis22

As this illustration shows, the two mailboxes share the same file on disk, thus reducing the overall size of the database.

On the link is broken the size of the database will double because each mailbox will store an instance of the same file.

sis23