Menu

Comparison to InnoDB

2012-01-08
2012-10-04
  • Jonathon Coombes

    Looking at some simple comparisons to InnoDB to get a gauge of where the
    performance bottlenecks are occurring.
    These tests are based on a simple server (quad-core 64bit 4GB on single disk).
    The first one is read-only comparison.

    sysbench --num-threads=8 --test=oltp --oltp-table-size=1000000 --oltp-dist-
    type=uniform --oltp-table-name=sbtest --forced-shutdown=1 --max-requests=0
    --max-time=120 --mysql-host=127.0.0.1 --mysql-user=root --mysql-port=3306
    --mysql-db=sbtest --mysql-table-engine=SOLIDDB --oltp-read-only=on --mysql-
    engine-trx=yes run
    sysbench 0.4.12: multi-threaded system evaluation benchmark

    No DB drivers specified, using mysql
    Running the test with following options:
    Number of threads: 8
    Forcing shutdown in 121 seconds

    Doing OLTP test.
    Running mixed OLTP test
    Doing read-only test
    Using Uniform distribution
    Using "BEGIN" for starting transactions
    Using auto_inc on the id column
    Threads started!
    Time limit exceeded, exiting...
    (last message repeated 7 times)
    Done.

    OLTP test statistics:
    queries performed:
    read: 1526868
    write: 0
    other: 218124
    total: 1744992
    transactions: 109062 (908.83 per sec.)
    deadlocks: 0 (0.00 per sec.)
    read/write requests: 1526868 (12723.67 per sec.)
    other operations: 218124 (1817.67 per sec.)

    Test execution summary:
    total time: 120.0022s
    total number of events: 109062
    total time taken by event execution: 959.5918
    per-request statistics:
    min: 1.51ms
    avg: 8.80ms
    max: 1536.74ms
    approx. 95 percentile: 6.49ms

    Threads fairness:
    events (avg/stddev): 13632.7500/337.64
    execution time (avg/stddev): 119.9490/0.00

    root@quadi:/usr/local/src/mysql-5.5.17-soliddb# sysbench --num-threads=8
    --test=oltp --oltp-table-size=1000000 --oltp-dist-type=uniform --oltp-table-
    name=sbtest_innodb --forced-shutdown=1 --max-requests=0 --max-time=120
    --mysql-host=127.0.0.1 --mysql-user=root --mysql-port=3306 --mysql-db=sbtest
    --mysql-table-engine=INNODB --oltp-read-only=on run
    sysbench 0.4.12: multi-threaded system evaluation benchmark

    No DB drivers specified, using mysql
    Running the test with following options:
    Number of threads: 8
    Forcing shutdown in 121 seconds

    Doing OLTP test.
    Running mixed OLTP test
    Doing read-only test
    Using Uniform distribution
    Using "BEGIN" for starting transactions
    Using auto_inc on the id column
    Threads started!
    Time limit exceeded, exiting...
    (last message repeated 7 times)
    Done.

    OLTP test statistics:
    queries performed:
    read: 1619380
    write: 0
    other: 231340
    total: 1850720
    transactions: 115670 (963.89 per sec.)
    deadlocks: 0 (0.00 per sec.)
    read/write requests: 1619380 (13494.41 per sec.)
    other operations: 231340 (1927.77 per sec.)

    Test execution summary:
    total time: 120.0038s
    total number of events: 115670
    total time taken by event execution: 959.5311
    per-request statistics:
    min: 1.50ms
    avg: 8.30ms
    max: 2842.54ms
    approx. 95 percentile: 9.40ms

    Threads fairness:
    events (avg/stddev): 14458.7500/216.88
    execution time (avg/stddev): 119.9414/0.00

    So close comparison to start which is not bad considering the lack of
    development of SolidDB for the last few years.

     
  • Jonathon Coombes

    It was interesting that after I had to restart my server I thought I would try
    the test again on a "fresh" machine. The results were actually quite different
    so I ran the tests multiple times for each engine with close the same result
    each time.

    sysbench --num-threads=8 --test=oltp --oltp-table-size=1000000 --oltp-dist-
    type=uniform --oltp-table-name=sbtest --forced-shutdown=1 --max-requests=0
    --max-time=120 --mysql-host=127.0.0.1 --mysql-user=root --mysql-port=3306
    --mysql-db=sbtest --mysql-table-engine=SOLIDDB --oltp-read-only=on --mysql-
    engine-trx=yes run
    sysbench 0.4.12: multi-threaded system evaluation benchmark

    No DB drivers specified, using mysql
    Running the test with following options:
    Number of threads: 8
    Forcing shutdown in 121 seconds

    Doing OLTP test.
    Running mixed OLTP test
    Doing read-only test
    Using Uniform distribution
    Using "BEGIN" for starting transactions
    Using auto_inc on the id column
    Threads started!
    Time limit exceeded, exiting...
    (last message repeated 7 times)
    Done.

    OLTP test statistics:
    queries performed:
    read: 2426620
    write: 0
    other: 346660
    total: 2773280
    transactions: 173330 (1444.38 per sec.)
    deadlocks: 0 (0.00 per sec.)
    read/write requests: 2426620 (20221.29 per sec.)
    other operations: 346660 (2888.76 per sec.)

    Test execution summary:
    total time: 120.0032s
    total number of events: 173330
    total time taken by event execution: 959.4520
    per-request statistics:
    min: 1.80ms
    avg: 5.54ms
    max: 40.55ms
    approx. 95 percentile: 7.04ms

    Threads fairness:
    events (avg/stddev): 21666.2500/383.74
    execution time (avg/stddev): 119.9315/0.00

    sysbench --num-threads=8 --test=oltp --oltp-table-size=1000000 --oltp-dist-
    type=uniform --oltp-table-name=sbtest_innodb --forced-shutdown=1 --max-
    requests=0 --max-time=120 --mysql-host=127.0.0.1 --mysql-user=root --mysql-
    port=3306 --mysql-db=sbtest --mysql-table-engine=INNODB --oltp-read-only=on
    --mysql-engine-trx=yes run
    sysbench 0.4.12: multi-threaded system evaluation benchmark

    No DB drivers specified, using mysql
    Running the test with following options:
    Number of threads: 8
    Forcing shutdown in 121 seconds

    Doing OLTP test.
    Running mixed OLTP test
    Doing read-only test
    Using Uniform distribution
    Using "BEGIN" for starting transactions
    Using auto_inc on the id column
    Threads started!
    Time limit exceeded, exiting...
    (last message repeated 7 times)
    Done.

    OLTP test statistics:
    queries performed:
    read: 2088744
    write: 0
    other: 298392
    total: 2387136
    transactions: 149196 (1243.24 per sec.)
    deadlocks: 0 (0.00 per sec.)
    read/write requests: 2088744 (17405.37 per sec.)
    other operations: 298392 (2486.48 per sec.)

    Test execution summary:
    total time: 120.0057s
    total number of events: 149196
    total time taken by event execution: 959.4558
    per-request statistics:
    min: 1.72ms
    avg: 6.43ms
    max: 80.76ms
    approx. 95 percentile: 9.13ms

    Threads fairness:
    events (avg/stddev): 18649.5000/148.58
    execution time (avg/stddev): 119.9320/0.00

    Not the tables have turned and SolidDB is performing at a higher throughput
    that InnoDB. I realise this has no specific tuning available for the engines
    yet, simply setting the buffer size to be around the recommended size for the
    engines, but it is a good starting comparison.

     
  • Jonathon Coombes

    It seems the read/write (RW) test has given a much different comparison in
    speed with SolidDB coming out on top!

    sysbench --num-threads=8 --test=oltp --oltp-table-size=1000000 --oltp-dist-
    type=uniform --oltp-table-name=sbtest --forced-shutdown=1 --max-requests=0
    --max-time=120 --mysql-host=127.0.0.1 --mysql-user=root --mysql-port=3306
    --mysql-db=sbtest --mysql-table-engine=SOLIDDB --oltp-read-only=off --mysql-
    engine-trx=yes run
    sysbench 0.4.12: multi-threaded system evaluation benchmark

    No DB drivers specified, using mysql
    Running the test with following options:
    Number of threads: 8
    Forcing shutdown in 121 seconds

    Doing OLTP test.
    Running mixed OLTP test
    Using Uniform distribution
    Using "BEGIN" for starting transactions
    Using auto_inc on the id column
    Threads started!
    Time limit exceeded, exiting...
    (last message repeated 7 times)
    Done.

    OLTP test statistics:
    queries performed:
    read: 72380
    write: 25794
    other: 10323
    total: 108497
    transactions: 5153 (42.71 per sec.)
    deadlocks: 17 (0.14 per sec.)
    read/write requests: 98174 (813.75 per sec.)
    other operations: 10323 (85.57 per sec.)

    Test execution summary:
    total time: 120.6441s
    total number of events: 5153
    total time taken by event execution: 963.0285
    per-request statistics:
    min: 106.88ms
    avg: 186.89ms
    max: 9300.04ms
    approx. 95 percentile: 264.16ms

    Threads fairness:
    events (avg/stddev): 644.1250/1.62
    execution time (avg/stddev): 120.3786/0.24

    sysbench --num-threads=8 --test=oltp --oltp-table-size=1000000 --oltp-dist-
    type=uniform --oltp-table-name=sbtest_innodb --forced-shutdown=1 --max-
    requests=0 --max-time=120 --mysql-host=127.0.0.1 --mysql-user=root --mysql-
    port=3306 --mysql-db=sbtest --mysql-table-engine=INNODB --oltp-read-only=off
    --mysql-engine-trx=yes run
    sysbench 0.4.12: multi-threaded system evaluation benchmark

    No DB drivers specified, using mysql
    Running the test with following options:
    Number of threads: 8
    Forcing shutdown in 121 seconds

    Doing OLTP test.
    Running mixed OLTP test
    Using Uniform distribution
    Using "BEGIN" for starting transactions
    Using auto_inc on the id column
    Threads started!
    Time limit exceeded, exiting...
    (last message repeated 7 times)
    Done.

    OLTP test statistics:
    queries performed:
    read: 33614
    write: 12005
    other: 4802
    total: 50421
    transactions: 2401 (19.95 per sec.)
    deadlocks: 0 (0.00 per sec.)
    read/write requests: 45619 (379.11 per sec.)
    other operations: 4802 (39.91 per sec.)

    Test execution summary:
    total time: 120.3313s
    total number of events: 2401
    total time taken by event execution: 962.4001
    per-request statistics:
    min: 71.86ms
    avg: 400.83ms
    max: 2087.14ms
    approx. 95 percentile: 1475.68ms

    Threads fairness:
    events (avg/stddev): 300.1250/2.98
    execution time (avg/stddev): 120.3000/0.07

     
  • Jonathon Coombes

    Increased InnoDB buffer space to 2x default (128M) and results were better. It
    seems InnoDB is faster, but it requires more memory to be faster. Still doing
    some tests and seeing where things could be configured to work faster.

     
  • iwan

    iwan - 2012-04-03

    Hi,

    Great to see this project live again. Some month ago I do a test/benchmark
    with this database, but no luck, database crashed happened.

    Do you want continue to maintain this project? What can I do to help you?

    -aris

     
  • Jonathon Coombes

    Hi Aris,
    I am trying to keep the project going and moving forward to improve it. I do
    it in my spare time which is not often, so any help would be appreciated. Let
    me know what areas of knowledge you have where you can help. One area would be
    compiling the Windows binary package for distribution as I don't work with
    Windows that much :)

    • Jon
     

Log in to post a comment.

MongoDB Logo MongoDB