About
HammerDB is the most trusted Free and open source database benchmarking application to the global database industry hosted by the TPC-Council on GitHub.
Learn why HammerDB is better than other database benchmark tools from the Percona Live '21 presentation by the project lead.
Key Features:
Next Steps: Join the HammerDB community and contribute to the HammerDB project hosted on GitHub by the TPC.
View Benchmarks published by Industry Leaders.
FAQ
- What is HammerDB used for?
HammerDB is a database load testing and benchmarking tool. You use HammerDB to create a test schema, load it with data and simulate the workload of multiple virtual users against the database for both transactional and analytic scenarios. This workload can then be used to derive meaningful information about your environment such as hardware performance comparisons and software configurations.
- Who uses
HammerDB?
HammerDB is used by all leading database and technology
companies. It has been downloaded hundreds of thousands of times
to more than 180 countries in the world. Example usage can be
seen in the the
Benchmarks section from companies such as Oracle, IBM,
Intel, Dell/EMC HPE, Huawei, Lenovo and hundreds more.
- Where do I start with HammerDB?
Firstly go to the downloads
page to download HammerDB for your favorite database, then
follow the installation guide and quick start guide in the documentation.
The binary releases are downloadable from the downloads
page on this site. Do not download the binary releases of HammerDB from any
third party site or other location, there is no guarantee that
HammerDB from any other source has not been modified. The source code can be downloaded from the TPC Council on GitHub
On the HammerDB GitHub Project Releases page. Checksum information such as the following will be shown against which you can validate the file you have downloaded. More information on generating checksums is available in the documentation
- Where is the source code for HammerDB?
All HammerDB source code is included with every download and
installation. This source code can be browsed in the
src and modules directories. Source code is
committed into the TPC HammerDB GIT repository
where changes between each release can be viewed. HammerDB
is released with pre-compiled database library extensions
for Windows and Linux, the source code for these extensions is
available from their respective websites.
- How is HammerDB licensed and copyrighted?
HammerDB is licensed under the GPL v3, which is included with every release in the file hammerdb.license and copyright notice in the file COPYRIGHT, these files must be included with any redistribution.
- Can I use the HammerDB Logo?
Yes, you can use the HammerDB logo under the following conditions. The HammerDB Logo and HammerDB 'H' Logo are protected under copyright law with all rights reserved. The HammerDB logos may be reproduced in their original color form only. The logo may be reproduced without links however where the logo has a "clickable" link it must lead directly to http://www.hammerdb.com.
- How do I get help with HammerDB?
Support
is given through the HammerDB GitHub Issues
accessed through the Support
page. Each support request is alerted to the developers.
Assistance is given typically during European daytime hours
according to workload. Every support request is answered
however as support is not a paid service please allow for the
level of resources to focus on support.
- What other software does HammerDB need?
HammerDB requires the installation of client libraries provided
by the database vendor to enable connection to your database
environment. Note that in the case of Oracle, SQL Server and Db2
these libraries are proprietary and not permitted for
redistribution, you must therefore download and install them
yourself. Client libraries are nearly always included with a
full database installation and therefore do not usually require
a separate install if the database has been installed on the
same system as HammerDB. Only the client libraries for the
database you are working with are required however this client
library must match exactly the operating system and HammerDB
software whether 32 or 64-bit. You must also correctly specify
the PATH environment variable for Windows and LD_LIBRARY_PATH
environment variable for Linux for HammerDB to be able to find
the correct library. On Windows a reboot may be required between
modifying settings for the correct library to be located. If a
library error is seen on running HammerDB consult the
documentation on how to troubleshoot using the command line
tool.
- Where do I find published benchmarks?
Known pulbished benchmarks and white papers using HammerDB are
referenced in the
Benchmarks section of the HammerDB website. Due to the
extensive number of these published benchmarks HammerDB does not
approve or validate any publications and these links are shared
for the database testing community to share information.
- Can I publish my own benchmarks?
Approval is not required for HammerDB benchmarks and no
restrictions are placed on publication by HammerDB. Consequently
with open source database benchmarks you are free to publish the
results of any of your tests as you wish. However commercial
databases often contain a clause commonly known as a "De Witt"
clause that prevents the external publication of benchmarks
against their database, Considerable information is available
regarding these clauses and HammerDB does not offer legal
guidance on compliance or otherwise.
- What databases
does HammerDB support?
HammerDB
currently supports Oracle, SQL Server, Db2, TimesTen, MySQL,
MariaDB, PostgreSQL, Greenplum, Postgres Plus Advanced Server,
Amazon Aurora and Redshift. HammerDB also includes deprecated workloads for Redis and Trafodion.
- Will HammerDB support my database?
HammerDB
receives multiple requests to support additional databases.
All of these requests are considered on merit. In particular
whether the client for the database is available for both
Windows and Linux (support for both platforms is essential)
and whether the software is freely available for download
without restriction and cost to ensure that support can be
provided. After these requirements have been met the potential
size of the userbase is considered. HammerDB uses the
db-engines website to assess popularity and it is unlikely
that a database lying outside of the top 20 databases will be
considered for inclusion in HammerDB.
- Does HammerDB support NoSQL/Non-relational Databases?
HammerDB extended support to both Redis and Trafodion SQL on Hadoop to assess the viability of supporting further NoSQL and non-relational databases. As HammerDB focuses upon workloads designed for testing relational databases, support for further NoSQL databases is not planned at the current time.
- HammerDB is a GUI tool, is there a command-line version?
Yes, a command-line version was introduced a version 3.0.
- How do I use HammerDB to do a comparison of cloud database services?
Oracle have used HammerDB to compare Oracle and Amazon Redshift databases. This functionality is included in HammerDB and available in the section Cloud Analytic Testing in the documentation
- Why is HammerDB not written in Python?
Python has a 'feature' called the Global Interpreter Lock or GIL - "the global interpreter lock, or GIL, is a mutex that prevents multiple native threads from executing Python bytecodes at once. This lock is necessary mainly because CPython's memory management is not thread-safe"
- What language is HammerDB written in and why?
HammerDB development is done in the languages C and TCL . Low level Native database interfaces written in C are used for all databases. TCL and TK are used to build the GUI and enable these database interfaces to be accessed by a scripting language. TCL threads are then used to simulate the virtual users. This results in a lightweight yet highly scalable load testing environment. TCL was chosen as the key language for HammerDB for three key reasons. Firstly it was designed from the ground up to interface well with C enabling native database interfaces to be used. Secondly it is scripted with a scripted interface essential for any load testing tool to allow users to modify tests and finally and it has the most complete and mature multithreading interface of all scripting languages. In particular TCL's threading model is uniquely suited to simulating virtual users. TCL is incredibly lightweight and therefore each thread or virtual user loads their own exclusive interpreter and database interface making HammerDB non-blocking. This means that HammerDB offers linear scalability from 1 to thousands of threads (note when displaying output Windows and Linux displays are not thread safe and therefore all output is sent to the display by a single thread). At the same time all of HammerDB's interfaces are thread-safe ensuring that HammerDB remains robust and stable even when loading millions of transactions per minute. It is without doubt that the TCL based implementation unperpins HammerDBs ability to scale far beyond the capabilities of other load testing tools.
- What platforms does HammerDB support?
HammerDB is developed on and supported on Linux and Windows x86
and x86-64 platforms. Both Linux and Windows are primary
development platforms of equal importance. Oracle
VM VirtualBox is a key development tool used for testing
databases on multiple platforms.
- Is HammerDB different on Windows and Linux?
No, HammerDB uses almost exactly the same code on both Windows
and Linux. The only changes are to implement very minor
differences in the GUI to tailor the view to Windows or Linux -
however on both systems the code is identical with the
differences dynamically chosen at run time. For example you can
take the hdb-components directory on Windows or Linux and copy
it to the other operating system and HammerDB will run the same.
Other minor changes are the addition of bat files for startup on
Windows and the interface to capture CPU statistics. Finally the
TCL and TK engines and database interfaces use the same source
code however have been compiled for the different platforms,
therefore building on non Windows or Linux platforms should be
possible but has not been tested.
- Do you support building HammerDB on UNIX or Mainframe?
HammerDB development does not have access to UNIX or Mainframe
systems and therefore the opportunity to build, test and provide
ongoing support for these platforms is limited. Nevertheless
assistance is provided on a best endeavors basis to anyone
trying to build the required packages to run on these systems.
Similarly the testing of databases on non Windows or Linux
platforms has not been tested but supported on a best endeavours
basis. In a scenario where HammerDB does not run against these
platforms it is advisable to check to see whether the feature
set is different on your testing platform compared to Linux or
Windows, for example Db2 for Mainframe is known to have
different features to Db2 on LUW. in this case the feature set
on LUW has been tested.
- Does HammerDB implement a real TPC-C or TPC-H benchmark?
No, this should be absolutely clear from the documentation. From v4.0 the
workloads have been renamed TPROC-C and TPROC-H to make the distinction explicit.
HammerDB does not implement full TPC-C (OLTP) and TPC-H
(Analytics) benchmarks as the opportunity to run full
simulations is incredibly limited, in particular due to the data
set size required. HammerDB does not use official TPC
terminology such as tpmC or QphH@Size and to do so is
inaccurate. Instead the HammerDB methodology recognizes that
both TPC-C and TPC-H are incredibly well-designed benchmarks and
have demonstrated a level of scalability unparalleled in the
industry before or since. As the TPC publish their benchmarks
at no cost to the public HammerDB takes the essence of these
benchmarks and implements in an intensive way that anyone can
run. Time has demonstrated that this methodology has proved
remarkably accurate at predicting official TPC results at a
fraction of the cost. This methodology has also proved perfectly
suited to testing cloud environments.
- Will HammerDB support TPC-E?
Yes, HammerDB has planned support for TPC-E once there are
official approved TPC-E benchmarks puilshed for the top 3
commercial databases Oracle, SQL Server and Db2. Currently only
SQL Server data is available and therefore Oracle and Db2
publications are outstanding. Once these benchmarks are
published and reviewed HammerDB will implement the workload. As
noted previously HammerDB has proved highly accurate at
simulating a methodology to bring TPC-C and TPC-H within the
reach of all database users. Without official publications from
key database vendors it is difficult to develop a new
methodology that provides accurate comparisons. As accurate
comparisons are the bedrock of load testing a lack of
publications makes TPC-E support difficult. If no publications
outside of SQL Server are made TPC-E support may be evaluated
however due to the extensive testing and validation there are no
plans to do so at the current time. .
- What is TPM and can I compare TPM between databases?
TPM stands for Transactions per Minute and cannot be compared
between differenet databases for the OLTP test. TPM is the value
displayed in the online transaction counter and at the end of a
timed test as the TPM value. This value cannot be consistent
between databases as different databases report different
transaction rate metrics in their own online tools - for example
Oracle Enterprise Manager reports user commits + user rollbacks
whereas SQL Server reports Batches/sec - for consistency with
the database vendors own tools HammerDB reports metrics that are
the same, for example in Oracle HammerDB TPM is the same as that
shown in an AWR report. This is at the cost of using a
different value that is only consistent within HammerDB. Also
note that HammerDB reports all transactions occurring in the
database and therefore if other workloads are taking place these
will be shown in the TPM figure as well. For consistency across
databases see NOPM.
- What is NOPM and can I compare NOPM between databases?
NOPM stands for New Orders per Minute and is a database
independent value extracted from the schema itself. For this
reason NOPM reported at the end of a timed test is the only way
to compare OLTP performance
across different database platforms.
- Why is TPM shown in the transaction counter but not NOPM?
As detailed TPM is extracted from the database vendor's transaction data, however NOPM is extracted from the schema. For this reason TPM can be accessed from in-memory read-only data without impacting any test that is running. NOPM however can only be extracted from the schema and doing so on a regular basis has the potential to impact the tests with different databases responding in different ways with locking etc, for this reason only TPM is reported to minimise the impact that reporting has on testing.
- My transaction rate in the online transaction counter is not flat why is this?
The online transaction counter reports the transaction rate
extracted from the database. With an optimal configuration and
once most of the data is cached in memory the transaction rate
will be consistent and the transaction counter flat. If the
reported transaction rate is not flat troubleshoot with database
diagnostic tools to pinpoint the issue with your configuration.
- Can HammerDB be used for automated software testing?
Yes HammerDB includes an Autopilot feature that enables
running multiple load tests in sequence with different numbers
of virtual users. This feature is fully automated enabling
lights-out testing to occur over many hours.
- How do you contact the project team?
The HammerDB project team can be contacted using
the HammerDB GitHub site.Support requests should be
also be directed through this sire. Not only is the
project team alerted immediately but other users benefit from
being able to see previously raised and resolved support issues
reducing the support effort and ensuring more time is spent on
development.
- Are the
HammerDB developers available for public speaking
engagements?
Yes, the developers have spoken at numerous technology events
worldwide such as Oracle Openworld, Linuxcon, Microsoft SQL
Relay and HPE TES. For further information contact the project
team through the gitHub site.