My last entry provided some recommendations regarding the use of ZFS
with databases. Time now to share some updated numbers.
Before we go to the numbers, it is
important to note that these results are for the OLTP/Net workload,
which may or may not represent your
workload. These results are also specific to our system configuration,
and may not be true for all system configurations. Please test your own
workload before drawing any conclusions. That said, OLTP/Net is based
on well known standard benchmarks, and we use it quite extensively to
study performance on our rigs.
Filesystem
|
FS
Checksum
|
Database
Checksum1
|
Normalized
Throughput2
|
| UFS
Directio |
N/A
|
No
|
1.12 |
| UFS
Directio |
N/A
|
Yes
|
1.00
|
ZFS
|
Yes
|
No
|
0.94 |
1 Both block checksumming as well as block checking
2 Bigger is better
Databases usually checksum its blocks
to maintain data integrity.
Oracle for example, uses a per-block checksum. For Oracle, checksum
checking is on by default. This is typically recommended as most
filesystems do not have a checksumming feature. With ZFS checksums are
enabled by default. Since
databases are not tightly integrated with the filesystem/volume
manager, a checksum error is handled by the database. Since ZFS
includes volume manager functionality, a checksum error will be
transparently handled by ZFS (i.e if you have some kind of redundancy
like mirroring or raidz), and the situation is corrected before
returning a read error to the database. Moreover ZFS will repair
corrupted
blocks via self-healing. While
RAS
experts will note that end-to-end
checksum at the database level is slightly better than end-to-end
checksum at
the ZFS level, ZFS checksums give you unique advantages while providing
almost the same level of RAS.
If you do not penalize ZFS with
double checksums, you can note that we
are within 6% of our best UFS number. So 6% gives you
provable data integrity, unlimited snapshots, no fsck, and all the
other good features. Quite good in my book

Of course, this number
is
only going to get better as more performances enhancements make it into
the
ZFS code.
More about the workload.
The tests were done with OLTP/Net
with a
72
CPU Sun Fire E25K connected to 288
15k rpm spindles. We ran the test with around 50% idle time to simulate
real customers. The test was done on
Solaris
Nevada build 46. Watch
this space for numbers with the latest build of Nevada.
Posted by selim on February 09, 2007 at 04:09 AM PST #