EmergencyEMERGENCY? Get 24/7 Help Now!

Introducing tpce-like workload for MySQL


Posted on:

|

By:


PREVIOUS POST
NEXT POST
Share Button

We have been using tpcc-mysql benchmark for long time, and there many results published in our blog, but that’s just single workload. That’s why we are looking into different benchmarks, and one
of them is TPCE. Yasufumi made some efforts to make TPCE working with MySQL, and we are making it available for public consideration.

You can download it from our Lauchpad Percona-tools project, it’s

Important DISCLAIMER:
Using this package you should agree with TPC-E License Agreement,
which in human words is:

  • You can’t name results as “TPC Benchmark Results”
  • You can’t compare results with results published on http://www.tpc.org/ and you can’t pretend the results are compatible with published by TPC.

And we are not going to do anything from that, your primary goals is XtraDB/InnoDB performance research and/or compare with available Storage Engines for MySQL.

The workload in tpce is quite different from tpcc. Tpcc is write intensive, while tpce
is read oriented.
To give more details, there is stats for 10 seconds:

The result is quite chatty,

but it allows you to see count of 11 different transactions per 10 secs and 90% response time.

and final result

where you can see count of successful TR (TradeResult) transactions, and
the summary result in TpsE (transactions per seconds).

Expect our results soon!

Share Button
PREVIOUS POST
NEXT POST


Vadim Tkachenko

Vadim leads Percona's development group, which produces the Percona Server, Percona Server for MongoDB, Percona XtraDB Cluster and Percona XtraBackup. He is an expert in solid-state storage, and has helped many hardware and software providers succeed in the MySQL market.



Tags:

Categories:
Benchmarks, MySQL


Comments
  • Martin Dimitrov

    Thank you guys for publishing this work and for distributing your mysqltpce kit.

    The last couple of days I have been trying to get your kit to work with MySQL.
    I have followed the steps outlined in the provided README files – I have been able to create the database, load the data, create indexes etc.

    However, when I try to kick of a run using EGenSimpleTest, I get the following error:

    ./bin/EGenSimpleTest -c 2000 -a 2000 -d 200 -r 10 -t 300 -u 12
    EGen v1.9.0
    (for MySQL)
    (Prepared Statement)

    Using the following settings:

    Input files location: flat_in
    Database server: localhost
    Database name: tpce
    Database user: tpce
    Database password: tpce
    Configured customer count: 2000
    Active customer count: 2000
    Scale Factor: 500
    #Days of initial trades: 200
    Load unit size: 1000
    Test duration (sec): 300
    Ramp up duration (sec): 10
    # of Users: 12
    Waiting for Trade-Cleanup transaction finished…
    safe_mutex: Trying to lock unitialized mutex at my_thr_init.c, line 299
    safe_mutex: Trying to lock unitialized mutex at my_thr_init.c, line 299
    safe_mutex: Trying to lock unitialized mutex at my_thr_init.c, line 299
    Aborted

    Any insight will be highly appreciated.

    Thank you,
    Martin

    Reply

  • Martin Dimitrov

    I think I have moved past this problem.
    I think it was an issue with the mysqlclient_r library.
    I also think that it was related to a bug: http://bugs.mysql.com/bug.php?id=30274

    I recompiled mysql without debug, and I replaced the mysqlclient_r in /usr/local/lib with the newly compiled one.

    Thanks
    Martin

    Reply

  • Somehow the tool doesn’t issue transaction. I’m enabled general log and only see prepare statements.

    Reply

  • I am encountering the following crash when trying to run EGenSimpleTest, it ran successfully a couple of times, but fails often with the error below.

    sudo /home/jenkins/workspace/run_benchmark/bin/tpce-mysql/bin/EGenSimpleTest -e /home/jenkins/workspace/run_benchmark/bin/tpce-mysql/flat_in -P -S localhost -D tpce1000 -U root -c 1000 -a 1000 -d 300 -r 30 -t 10 -u 25
    EGen v1.9.0
    (for MySQL)
    (Prepared Statement)

    Using the following settings:

    Input files location: /home/jenkins/workspace/run_benchmark/bin/tpce-mysql/flat_in
    Database server: localhost
    Database name: tpce1000
    Database user: root
    Database password:
    Configured customer count: 1000
    Active customer count: 1000
    Scale Factor: 500
    #Days of initial trades: 300
    Load unit size: 1000
    Test duration (sec): 10
    Ramp up duration (sec): 30
    # of Users: 25
    Waiting for Trade-Cleanup transaction finished…
    … done
    *** glibc detected *** /home/jenkins/workspace/run_benchmark/bin/tpce-mysql/bin/EGenSimpleTest: corrupted double-linked list: 0x00007f86300d1a80 ***
    ======= Backtrace: =========
    /lib64/libc.so.6[0x31ba275296]
    /lib64/libc.so.6[0x31ba277f44]
    /usr/lib64/libstdc++.so.6(_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE8overflowEi+0x167)[0x31bf2979a7]
    /usr/lib64/libstdc++.so.6(_ZNSt15basic_streambufIcSt11char_traitsIcEE6xsputnEPKcl+0x35)[0x31bf29bab5]
    /usr/lib64/libstdc++.so.6(_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l+0x1b5)[0x31bf292935]
    /usr/lib64/libstdc++.so.6(_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc+0x2f)[0x31bf292baf]
    /home/jenkins/workspace/run_benchmark/bin/tpce-mysql/bin/EGenSimpleTest[0x448d7e]
    /home/jenkins/workspace/run_benchmark/bin/tpce-mysql/bin/EGenSimpleTest[0x444956]
    /home/jenkins/workspace/run_benchmark/bin/tpce-mysql/bin/EGenSimpleTest[0x4331f8]
    /home/jenkins/workspace/run_benchmark/bin/tpce-mysql/bin/EGenSimpleTest[0x43484e]
    /home/jenkins/workspace/run_benchmark/bin/tpce-mysql/bin/EGenSimpleTest[0x40538c]
    /lib64/libpthread.so.0[0x31baa077f1]
    /lib64/libc.so.6(clone+0x6d)[0x31ba2e5ccd]
    ======= Memory map: ========
    00400000-00470000 r-xp 00000000 fd:02 10097140 /home/jenkins/workspace/run_benchmark/bin/tpce-mysql/bin/EGenSimpleTest
    0066f000-00671000 rw-p 0006f000 fd:02 10097140 /home/jenkins/workspace/run_benchmark/bin/tpce-

    Reply

  • I forgot to mention that I was able to track down the error to the EGenLogFormatter.cpp at line 183. The error moves a bit around that line but it is centered around the logmsg.

    Reply

  • Moussa Ba – I am running into the same issue on RHEL6.2. I have successfully built and loaded the database. However, when I run, EGenSimpleTest crashes:

    *** glibc detected *** EGenSimpleTest: corrupted double-linked list: 0x00007f96c4021150 ***
    ======= Backtrace: =========
    /lib64/libc.so.6[0x31c64750c6]
    terminate called after throwing an instance of ‘std::length_error’
    /lib64/libc.so.6[0x31c6477bf4]
    what(): basic_string::_S_create
    /usr/lib64/libstdc++.so.6(_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE8overflowEi+0x167)[0x3190e979a7]
    Aborted (core dumped)

    Any ideas on how to proceed ?

    Reply

  • Thanks for the post. It would be great if you could provide step by step details on how to run this benchmark.

    These are my commands:

    ./bin/EGenLoader -c 1000 -t 1000 -w 3
    mysql -u root -e “CREATE DATABASE tpce;”
    mysql -u root tpce < scripts/mysql/1_create_table.sql
    mysql -u root tpce < scripts/mysql/2_load_data.sql
    mysql -u root tpce < scripts/mysql/3_create_index.sql
    mysql -u root tpce < scripts/mysql/4_create_fk.sql
    mysql -u root tpce < scripts/mysql/5_create_sequence.sql
    ./bin/EGenSimpleTest -U root -P "" -D tpce -c 1000 -a 1000 -d 3 -r 10 -t 300 -u 12

    Here is my output:

    CCESUT::CustomerPosition() failed.
    ODBCERR at CCESUT::SecurityDetail()
    [../src/SecurityDetailDB.cpp:237] Native=0, SQLState=00000 :
    CCESUT::SecurityDetail() failed.
    ODBCERR at CCESUT::SecurityDetail()
    [../src/SecurityDetailDB.cpp:237] Native=0, SQLState=00000 :
    CCESUT::SecurityDetail() failed.
    ODBCERR at CCESUT::TradeStatus()
    [../src/TradeStatusDB.cpp:221] Native=0, SQLState=00000 :
    CCESUT::TradeStatus() failed.
    ODBCERR at CCESUT::CustomerPosition()
    [../src/CustomerPositionDB.cpp:214] Native=0, SQLState=00000 :
    CCESUT::CustomerPosition() failed.
    ODBCERR at CCESUT::TradeOrder()
    [../src/TradeOrderDB.cpp:106] Native=0, SQLState=00000 :
    CCESUT::TradeOrder() failed.
    ODBCERR at CCESUT::SecurityDetail()
    [../src/SecurityDetailDB.cpp:237] Native=0, SQLState=00000 :
    CCESUT::SecurityDetail() failed.
    ODBCERR at CCESUT::TradeStatus()
    [../src/TradeStatusDB.cpp:221] Native=0, SQLState=00000 :
    CCESUT::TradeStatus() failed.
    ODBCERR at CCESUT::TradeStatus()
    [../src/TradeStatusDB.cpp:221] Native=0, SQLState=00000 :


    Reply

Leave a Reply

Percona’s widely read Percona Data Performance blog highlights our expertise in enterprise-class software, support, consulting and managed services solutions for both MySQL® and MongoDB® across traditional and cloud-based platforms. The decades of experience represented by our consultants is found daily in numerous and relevant blog posts.

Besides specific database help, the blog also provides notices on upcoming events and webinars.

Want to get weekly updates listing the latest blog posts? Subscribe to our blog now! Submit your email address below.

No, thank you. Please do not ask me again.