Hi all,
I'm doing some performance test against 2 identical virtual machine (each VM has the same virtual resources and use the same physical hardware).
The 1° VM has Windows Server 2008R2 and SQL Server 2008R2 Standard Edition
the 2° VM has Windows Server 2012R2 and SQL Server 2012 SP2 + CU1 Standard Edition
I'm using hammerDB (http://hammerora.sourceforge.net/) has benchmark tool to simulate TPC-C test.
I've noticed a significative performance difference between SQL2008R2 and SQL2012, 2008R2 does perform better. Let's explain what I've found:
I use a third VM as client where HammerDB software is installed, I run the test against the two SQL Servers (one server at a time), in SQL2008R2 I reach an higher number of transaction per minutes.
HammerDB creates a database on each database server (so the database are identical except for the compatibility level), and then HammerDB execute a sequence of query (insert-update) simulating the TPC-C standard, the sequence is identical on both servers.
Using perfmon on the two servers I've found a very interesting thing:
In the disk used by the hammerDB database's log (I use separate disk for data and log) I've monitored the Avg. Disk Bytes/Write and I've noticed tha the SQL2012 writes to the log with smaller packet (let's say an average of 3k against an average of 5k written by the SQL 2008R2).
I've also checked the value of Log flushes / sec on both servers and noticed that SQL2012 do, on average, more log flushes per second, so more log flushes of less bytes...
I've searched for any documented difference in the way log buffers are flushed to disk between 2008r2 and 2012 but found no difference.
Anyone can piont me in the correct direction?