Details

    Description

      Check RocksDB performance for common database operations (reads/writes). Especially how it compares to InnoDB in terms of throughput and storage needs.

      Attachments

        1. MDEV-13845.ods
          104 kB
        2. MDEV-13845-B.ods
          109 kB
        3. MDEV-13845-upstream.ods
          96 kB
        4. my.cnf
          1 kB

        Issue Links

          Activity

            axel Axel Schwenke added a comment -

            Hi mdcallag. Some answers to your questions:

            Questions about HW:
            how much RAM in test server?
            how many CPU cores (real, and then with HT enabled)?
            what is the storage device?

            The test server has 128G of RAM, so the test uses only a small portion. There are 16 physical cores (in 2 sockets), HT is on, so Linux sees 32 cores. The storage is two SATA SSD (INTEL SSDSC2BB300H4) in RAID0 (Linux md, 1M chunks) formatted with ext4 (relatime,data=ordered).

            Things that might help me:
            what version of InnoDB is used by MariaDB 10.3? Is it most similar to 5.6, 5.7 or 5.8?
            what version of MyRocks is used?

            InnoDB in MariaDB 10.3 is from MySQL 5.7.21, MyRocks reports "rocksdb_version=5.8.0"

            axel Axel Schwenke added a comment - Hi mdcallag . Some answers to your questions: Questions about HW: how much RAM in test server? how many CPU cores (real, and then with HT enabled)? what is the storage device? The test server has 128G of RAM, so the test uses only a small portion. There are 16 physical cores (in 2 sockets), HT is on, so Linux sees 32 cores. The storage is two SATA SSD (INTEL SSDSC2BB300H4) in RAID0 (Linux md, 1M chunks) formatted with ext4 (relatime,data=ordered). Things that might help me: what version of InnoDB is used by MariaDB 10.3? Is it most similar to 5.6, 5.7 or 5.8? what version of MyRocks is used? InnoDB in MariaDB 10.3 is from MySQL 5.7.21, MyRocks reports "rocksdb_version=5.8.0"

            RocksDB 5.8 is from December, 2017. While that is now ~1 year old, it has many of the important fixes. So I won't suggest it is too old.
            https://github.com/facebook/rocksdb/tree/5.8.fb

            For 16 cores and 32 HW threads I am not that interested in throughput for an in-memory workload and 128 or 256 concurrent clients running without think time. Alas, I also want to know that MyRocks doesn't fall over (QPS collapse) at that point and perhaps it does in this case. PMP stack traces might help to debug it.

            mdcallag Mark Callaghan added a comment - RocksDB 5.8 is from December, 2017. While that is now ~1 year old, it has many of the important fixes. So I won't suggest it is too old. https://github.com/facebook/rocksdb/tree/5.8.fb For 16 cores and 32 HW threads I am not that interested in throughput for an in-memory workload and 128 or 256 concurrent clients running without think time. Alas, I also want to know that MyRocks doesn't fall over (QPS collapse) at that point and perhaps it does in this case. PMP stack traces might help to debug it.
            psergei Sergei Petrunia added a comment - - edited

            > InnoDB in MariaDB 10.3 is from MySQL 5.7.21, MyRocks reports "rocksdb_version=5.8.0"
            axel, how do you get that? I don't see any status variable named rocksdb_version ?
            I do see this when I look into DATADIR/#rocksdb/LOG :

            2018/12/05-21:30:18.574825 7f1c7e9c1740 RocksDB version: 5.14.0
            2018/12/05-21:30:18.574829 7f1c7e9c1740 Git sha rocksdb_build_git_sha:@@
            

            (we should look at printing a value for rocksdb_build_git_sha... But there is @@rocksdb_git_hash status variable also, which gives one the git hash of the RocksDB's revision)

            psergei Sergei Petrunia added a comment - - edited > InnoDB in MariaDB 10.3 is from MySQL 5.7.21, MyRocks reports "rocksdb_version=5.8.0" axel , how do you get that? I don't see any status variable named rocksdb_version ? I do see this when I look into DATADIR/#rocksdb/LOG : 2018/12/05-21:30:18.574825 7f1c7e9c1740 RocksDB version: 5.14.0 2018/12/05-21:30:18.574829 7f1c7e9c1740 Git sha rocksdb_build_git_sha:@@ (we should look at printing a value for rocksdb_build_git_sha... But there is @@rocksdb_git_hash status variable also, which gives one the git hash of the RocksDB's revision)
            axel Axel Schwenke added a comment -

            psergey how do you get that?

            I looked in the OPTIONS* file in the RocksDB datadir. But I made a mistake. 5.8.0 is the RocksDB version in MariaDB 10.3.6. It's indeed 5.14.0 in 10.3.10.

            I'd like to have the RocksDB version printed to the server error log at startup, just like InnoDB does. Want a MDEV for that?

            axel Axel Schwenke added a comment - psergey how do you get that? I looked in the OPTIONS* file in the RocksDB datadir. But I made a mistake. 5.8.0 is the RocksDB version in MariaDB 10.3.6. It's indeed 5.14.0 in 10.3.10. I'd like to have the RocksDB version printed to the server error log at startup, just like InnoDB does. Want a MDEV for that?
            axel Axel Schwenke added a comment -

            I added results from a comparison between RocksDB in MariaDB 10.3.10 and RocksDB from Facebook 5.6.35. The file is MDEV-13845-upstream.ods

            Observations:

            • for read-only workload, MariaDB outperforms Facebook
            • for mixed workload, Facebook is faster; even more in the IO bound case
            • MariaDB scales better to higher thread numbers

            I also tested InnoDB performance in both variants (sheet #2 in the document). In MariaDB InnoDB is mostly better when it has enough memory and uses many threads, but slower if it runs IO bound.

            axel Axel Schwenke added a comment - I added results from a comparison between RocksDB in MariaDB 10.3.10 and RocksDB from Facebook 5.6.35. The file is MDEV-13845-upstream.ods Observations: for read-only workload, MariaDB outperforms Facebook for mixed workload, Facebook is faster; even more in the IO bound case MariaDB scales better to higher thread numbers I also tested InnoDB performance in both variants (sheet #2 in the document). In MariaDB InnoDB is mostly better when it has enough memory and uses many threads, but slower if it runs IO bound.

            People

              axel Axel Schwenke
              axel Axel Schwenke
              Votes:
              0 Vote for this issue
              Watchers:
              8 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Git Integration

                  Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.