Small Datum
- Posts
- 794 from 23 Feb 2014 to 20 Jun 2026
- Posting
- weekly (45 in the last year)
- Kind
- personal blog
- Feed
- https://smalldatum.blogspot.com/feeds/posts/default
2026 33
- CPU-bound sysbench on a large server: Postgres 12 to 19 beta1
- The insert benchmark on a small server, IO-bound workload : Postgres 19 beta1
- HammerDB tproc-c on a large server, Postgres 14 to 19 beta1
- Write-heavy sysbench tests, a large server, modern Postgres and MySQL
- The insert benchmark on a small server, cached workload : Postgres 19 beta1
- Postgres 19 beta1 vs sysbench on a small server
- MySQL 9.7.0 vs sysbench on a small server
- Sysbench vs MySQL on a small server: another way to view the regressions
- The Insert Benchmark vs MariaDB 10.2 to 13.0 on a 32-core server
- The Insert Benchmark vs MariaDB 10.2 to 13.0 on a 24-core server
- Sysbench vs MariaDB on a small server: using the same charset for all versions
- CPU-bound sysbench on a large server: Postgres, MySQL and MariaDB
- gcc vs clang for sysbench on a small server with Postgres, MySQL and MariaDB
- The insert benchmark on a small server : Postgres 12.22 through 18.3
- Selecting a character set for MySQL and MariaDB clients
- Sysbench vs MySQL on a small server: no new regressions, many old ones
- MariaDB innovation: binlog_storage_engine, 32-core server, Insert Benchmark
- MariaDB innovation: binlog_storage_engine, 48-core server, Insert Benchmark
- CPU efficiency for MariaDB, MySQL and Postgres on TPROC-C with a small server
- The first rule of database fight club: admit nothing
- MariaDB innovation: vector index performance
- Explaining why throughput varies for Postgres with a CPU-bound Insert Benchmark
- MariaDB innovation: binlog_storage_engine, small server, Insert Benchmark
- MariaDB innovation: binlog_storage_engine
- HammerDB tproc-c on a large server, Postgres and MySQL
- HammerDB tproc-c on a small server, Postgres and MySQL
- CPU-bound Insert Benchmark vs Postgres on 24-core and 32-core servers
- IO-bound Insert Benchmark vs MySQL on 24-core and 32-core servers
- CPU-bound Insert Benchmark vs MySQL on 24-core and 32-core servers
- Debugging regressions with Postgres in IO-bound sysbench
- Postgres vs tproc-c on a small server
- SSDs, power loss protection and fsync latency
- Common prefix skipping, adaptive sort
2025 63
- Performance for RocksDB 9.8 through 10.10 on 8-core and 48-core servers
- IO-bound sysbench vs Postgres on a 48-core server
- IO-bound sysbench vs MySQL on a 48-core server
- Performance regressions in MySQL 8.4 and 9.x with sysbench
- Sysbench for MySQL 5.6 through 9.5 on a 2-socket, 24-core server
- The insert benchmark on a small server : MySQL 5.6 through 9.5
- The insert benchmark on a small server : Postgres 12.22 through 18.1
- RocksDB performance over time on a small Arm server
- Using db_bench to measure RocksDB performance with gcc and clang
- Using sysbench to measure how Postgres performance changes over time, November 2025 edition
- Using sysbench to measure how MySQL performance changes over time, November 2025 edition
- Challenges compiling old C++ code on modern Linux
- How efficient is RocksDB for IO-bound, point-query workloads?
- Determine how much concurrency to use on a benchmark for small, medium and large servers
- Why is RocksDB spending so much time handling page faults?
- Is it time for TPC-BLOB?
- Postgres 18.0 vs sysbench on a 32-core server
- My time at Oracle: functional and design specification reviews
- Measuring scaleup for Postgres 18.0 with sysbench
- Measuring scaleup for MariaDB with sysbench
- Postgres 18.0 vs sysbench on a 24-core, 2-socket server
- Postgres 18.0 vs sysbench on a small server
- Postgres 18rc1 vs sysbench
- Postgres 18 beta3, large server, sysbench
- Postgres 18 beta3, small server, sysbench
- MySQL 5.6 thru 9.4: small server, Insert Benchmark
- Sysbench for MySQL 5.6 thru 9.4 on a small server
- Postgres 18 beta2: large server, Insert Benchmark, part 2
- Postgres 18 beta2: large server, sysbench
- Postgres 18 beta2: large server, Insert Benchmark
- Postgres 18 beta1: small server, IO-bound Insert Benchmark (v2)
- Postgres 18 beta1: small server, CPU-bound Insert Benchmark (v2)
- Postgres 18 beta1: large server, IO-bound Insert Benchmark
- Postgres 18 beta1: large server, CPU-bound Insert Benchmark
- Postgres 18 beta1: large server, Insert Benchmark, bad configurations
- Postgres 18 beta1: small server, IO-bound Insert Benchmark
- Postgres 18 beta1: small server, cached Insert Benchmark
- Postgres 18 beta1: large server, sysbench
- Postgres 18 beta1: small server, sysbench, IO-bound
- Postgres 18 beta1: small server, sysbench
- RocksDB 10.2 benchmarks: large & small servers with a cached workload
- RocksDB 10.2 benchmarks: large server
- The impact of innodb_doublewrite_pages in MySQL 8.0.41
- Battle of the Mallocators: part 2
- Battle of the Mallocators
- Postgres 17.4 vs sysbench on a large server, revisited part 2
- At what level of concurrency do MySQL 5.7 and 8.0 become faster than 5.6?
- Postgres 17.4 vs sysbench on a large server, revisited
- Postgres 17.4 vs sysbench on a large server
- Feedback from the Postgres community about the vector index benchmarks
- How to find Lua scripts for sysbench using LUA_PATH
- My database communities
- Vector indexes, large server, dbpedia-openai dataset: MariaDB, Qdrant and pgvector
- Vector indexes, MariaDB & pgvector, large server, dbpedia-openai dataset
- Vector indexes, MariaDB & pgvector, large server, large dataset: part 1
- Vector indexes, MariaDB & pgvector, large server, small dataset: part 2
- Vector indexes, MariaDB & pgvector, large server, small dataset: part 1
- Evaluating vector indexes in MariaDB and pgvector: part 2
- Evaluating vector indexes in MariaDB and pgvector: part 1
- Sysbench performance over time for InnoDB and MyRocks: part 4
- Sysbench performance over time for InnoDB and MyRocks: part 3
- Sysbench performance over time for InnoDB and MyRocks: part 2
- Sysbench performance over time for InnoDB and MyRocks: part 1
2024 102
- Speedb vs RocksDB on a large server
- RocksDB on a big server: LRU vs hyperclock, v2
- RocksDB benchmarks: large server, universal compaction
- Fixing some of the InnoDB scan perf regressions in a MySQL fork
- RocksDB benchmarks: large server, leveled compaction
- RocksDB on a big server: LRU vs hyperclock
- RocksDB benchmarks: small server, universal compaction
- Too many performance regressions for InnoDB in MySQL 8.0.29 and 8.0.30
- Trying out Advanced MySQL
- RocksDB benchmarks: small server, leveled compaction
- InnoDB busy-wait loops changed in MySQL 8.0.30
- The impact of PGO, LTO and more for MySQL on a small CPU: insert benchmark
- MySQL 8.0.40 does not fix the regressions I hoped it would fix
- The impact of PGO, LTO and more for MySQL on a small CPU
- Sysbench vs c-state on an AMD 4700u
- Code bloat vs memory system bloat : why is something getting slower
- I recently published results with
- Managing CPU frequency for AMD on Ubuntu 22.04
- What does "perf stat" tell us about MySQL performance regressions on an AMD Threadripper CPU
- What does "perf stat" tell us about MySQL performance regressions on an Intel Xeon CPU
- What does "perf stat" tell us about MySQL performance regressions on a Ryzen 7 7735HS CPU
- What does "perf stat" tell us about MySQL performance regressions on a Ryzen 7 4700u CPU
- How to run MySQL with text in huge pages
- InnoDB code bloat in MySQL 8.0 makes me sad
- Configuration options that make writes faster or slower with MySQL and Postgres
- The size of the mysqld binary as a proxy for innovation
- Why do table scans get slower with MySQL from 5.6 to 8.0?
- Ubuntu 22.04, Linux kernels and me
- MySQL and Postgres vs the Insert Benchmark on a large server
- HTAP benchmarks: trying out HATrick with MySQL
- MySQL + InnoDB vs sysbench on a large server
- InnoDB, compiler options and sysbench
- Postgres 17rc1 vs sysbench on small & large servers: looking great
- RocksDB benchmarks: cached database
- Postgres 17beta3 vs sysbench on a large server: looking great
- Trying out a dedicated server from Hetzner
- Postgres 17beta3 vs the Insert Benchmark on a medium server: looking good
- Postgres 17beta3 vs sysbench on a small server: looking good
- Postgres 17beta3 vs sysbench on a medium server: looking good
- MySQL regressions: delete vs InnoDB
- MySQL regressions: update-nonindex vs InnoDB
- MySQL regressions: skip_concurrency_ticket
- MySQL regressions: binlog_log_row
- Sysbench on a medium server: MariaDB is faster than MySQL
- Searching for regressions in RocksDB with db_bench: part 2
- MyRocks vs InnoDB on cached sysbench: revised
- MySQL 8.0.38 vs cached Sysbench on a medium server
- Searching for regressions in RocksDB with db_bench
- Make MyRocks 2X faster by changing the CPU frequency governor
- MySQL 8.0.38 vs the Insert Benchmark on a medium server
- Postgres 17beta2 vs the Insert Benchmark on a medium server:: looking good
- MyRocks vs InnoDB on cached sysbench
- Postgres 17beta2 vs sysbench: looking good
- The journey to explain performance regressions in MySQL
- The impact of PGO for MySQL
- The impact of link time optimization for MySQL with sysbench
- A simple test to measure CPU per IO
- The Insert Benchmark: Postgres 17beta1, large server, IO-bound
- Stalls from TRIM after deleting a lot of data
- The Insert Benchmark vs MyRocks and InnoDB, small server, IO-bound database
- The Insert Benchmark vs MyRocks and InnoDB, small server, cached database
- MyRocks and InnoDB vs sysbench on a small server
- The Insert Benchmark, Postgres 17beta1, a large server and cached database
- Postgres 17beta1 vs sysbench on a large server
- Postgres 17beta1 vs sysbench on a small server
- Does disabling full_page_writes reduce variance for Postgres with a cached Insert Benchmark
- The Insert Benchmark, Postgres 17beta1, a small server and cached database
- Sysbench on a new small server: MariaDB vs MySQL
- Space vs CPU tradeoffs with universal compaction in RocksDB
- The Insert Benchmark: MariaDB, MySQL, new small server, cached workload, some concurrency
- The Insert Benchmark: MariaDB, MySQL, small server, cached workload, some concurrency
- Changes to managing turbo boost in Ubuntu 22.04 and Linux 6.5
- The Insert Benchmark: MariaDB, MySQL, small server, cached workload
- Sysbench on a (less) small server: MariaDB and MySQL
- Sysbench on a small server: MariaDB and MySQL
- Comparing Postgres and MySQL on the insert benchmark with a small server
- Yet another Insert Benchmark result: MyRocks, MySQL and a small server
- Yet another Insert Benchmark result: MySQL, InnoDB and a small server
- Trying to tune Postgres for the Insert Benchmark: small server
- Perf regressions in Postgres from 9.0 to 16 with sysbench and a small server
- Perf regressions in MySQL from 5.6.21 to 8.0.36 using sysbench and a small server
- It wasn't a performance regression in Postgres 14
- Updated Insert benchmark: InnoDB/MySQL 5.6, 5.7 and 8.0, small server, IO-bound database
- Updated Insert benchmark: Postgres 9.x to 16.x, large server, cached database
- Explaining a performance regression in Postgres 14
- Updated Insert benchmark: Postgres 9.x to 16.x, small server, IO-bound database
- Updated Insert benchmark: InnoDB/MySQL 5.6, 5.7 and 8.0, small server, cached database
- Updated Insert benchmark: Postgres 9.x to 16.x, small server, cached database, v3
- Updated Insert benchmark: MyRocks 5.6 and 8.0, medium server, IO-bound database, v2
- Updated Insert benchmark: MyRocks 5.6 and 8.0, small(est) server, cached database, v2
- Updated Insert benchmark: MyRocks 5.6 and 8.0, small server, cached database, v2
- Updated Insert benchmark: MyRocks 5.6 and 8.0, medium server, cached database, v2
- Updated Insert benchmark: Postgres 9.x to 16.x, small server, cached database, v2
- Explaining changes in RocksDB performance for IO-bound workloads
- RocksDB 8.x benchmarks: large server, IO-bound
- innodb_log_writer_threads and the Insert Benchmark
- Updated Insert benchmark: MyRocks 5.6 and 8.0, small server, cached database
- Updated Insert benchmark: Postgres 9.x to 16.x, small server, cached database
- Updated Insert benchmark: MyRocks 5.6 and 8.0, medium/large server, cached database
- Updated Insert benchmark: MyRocks 5.6 and 8.0, medium server, cached database
- Updated Insert benchmark: InnoDB, MySQL 5.6 to 8.0, medium server, cached database
- Updated Insert benchmark: MyRocks 5.6 and 8.0, large server, cached database
2023 130
- Updated Insert benchmark: InnoDB, MySQL 5.6 to 8.0, large server, cached database
- Updates for the Insert Benchmark, December 2023
- RocksDB 8.x benchmarks: large server, cached database
- Create InnoDB indexes 2X faster with this simple trick
- What is the cost of the performance schema in MySQL 5.7 and 8.0: small server, cached database, simple queries
- Perf regressions in MySQL from 5.6 to 8.0 using the Insert Benchmark and a small server, Dec23: part 1
- Explaining changes in MySQL performance via hardware perf counters: part 4
- Explaining changes in MySQL performance via hardware perf counters: part 3
- Explaining changes in MySQL performance via hardware perf counters: part 2
- Explaining changes in MySQL performance via hardware perf counters: part 1
- Checking RocksDB 8.x for performance regressions on a large server, part 2
- Perf regressions in MySQL from 5.6.21 to 8.0.34 using the Insert Benchmark and a medium server, part 1
- Fixing bug 109595 makes MySQL almost 4X faster on the Insert Benchmark
- Checking RocksDB 4.x thru 8.x for performance regressions on a small server: IO-bound with O_DIRECT
- Checking RocksDB 4.x thru 8.x for performance regressions on a small server: IO-bound with buffered IO
- Checking RocksDB 4.x thru 8.x for performance regressions on a small server: cached workload
- Debugging perf changes in RocksDB 8.6 on a small server
- Postgres vs MySQL: the impact of CPU overhead on performance
- Perf regressions in MySQL from 5.6.21 to 8.0.35 using sysbench and a medium server, part 5
- Perf regressions in MySQL from 5.6.21 to 8.0.35 using sysbench and a medium server, part 4
- Perf regressions in MySQL from 5.6.21 to 8.0.35 using sysbench and a medium server, part 3
- Perf regressions in MySQL from 5.6.21 to 8.0.35 using sysbench and a medium server, part 2
- Perf regressions in MySQL from 5.6.21 to 8.0.35 using sysbench and a medium server, part 1
- Perf regressions for MySQL/InnoDB vs the Insert Benchmark: 8.0.28 to 8.0.30
- Checking RocksDB 7.x and 8.x for performance regressions on a large server
- Variance in RocksDB benchmarks
- Perf regressions in MySQL from 5.6.21 to 8.0.34 using the Insert Benchmark and a small server, part 2
- Variance in peak RSS with jemalloc 5.2.1, part 2
- Postgres versions 11, 12, 13, 14, 15, and 16 vs sysbench with a medium server
- Trying out OrioleDB
- Checking MyRocks 5.6 for regressions with the Insert Benchmark and a large server, revisited
- Checking Postgres for perf regressions from 11.21 to 16.0 with sysbench and a small server
- Variance in peak RSS with jemalloc 5.2.1
- Postgres 16.0, sysbench and a medium server
- Postgres 16.0, sysbench and a small server
- Hello world!
- Perf regressions in MySQL from 5.6.21 to 8.0.34 using the Insert Benchmark and a small server
- Postgres 16.0 vs the Insert Benchmark on a medium server
- Postgres 16.0 vs the Insert Benchmark on a small server
- Perf regressions in MySQL from 5.6.21 to 8.0.34 using sysbench and a small server
- Checking jemalloc versions for RSS regressions with MyRocks and the Insert Benchmark
- Chasing a performance regression in MyRocks vs the Insert Benchmark
- Postgres 16, sysbench and a small server
- RocksDB and glibc malloc don't play nice together
- Postgres 16 beta3 and the Insert Benchmark on a small server
- Checking MyRocks 5.6 for regressions with the Insert Benchmark and a large server
- Checking MyRocks 5.6 for regressions with sysbench and a small server, part 2
- The impact from hyperthreading for RocksDB db_bench on a medium server
- Checking MyRocks 5.6 for regressions with sysbench and a medium server, part 3
- Checking MyRocks 5.6 for regressions with the Insert Benchmark and a small server, part 2
- Checking MyRocks 5.6 for regressions with the Insert Benchmark and a medium server, part 2
- Tuning Postgres 15.2 and 15.3 for the Insert Benchmark on a small server
- Postgres 16 beta3 and the Insert Benchmark on a medium server
- Compiling all MySQL 5.7 versions on modern Ubuntu
- Tuning MyRocks to reduce MVCC GC debt
- InnoDB vs the Insert Benchmark on a medium server, includes Percona Server
- Tuning InnoDB for the Insert Benchmark on a small server
- One path for an open source database project
- Checking MyRocks 5.6 for regressions with the Insert Benchmark and a medium server
- Tuning Postgres and the Insert Benchmark, round 6
- Checking MyRocks 5.6 for regressions with the Insert Benchmark and a small server
- Tuning InnoDB for the Insert Benchmark on a large server
- Tuning MyRocks for the Insert Benchmark on a large server
- Tuning MyRocks for the Insert Benchmark on a small server
- How do you limit MVCC GC debt?
- Insert benchmark perf over time for MyRocks 5.6 on a large server
- MyRocks, InnoDB and Postgres as a queue
- Tuning InnoDB for the insert benchmark on a medium server, part 2
- my.cnf options that influence create index performance
- Keeping up with the SQL DBMS market
- Insert+delete benchmark, medium server and MyRocks, part 2
- Tuning Postgres and the new insert benchmark on a small server, part 2
- Tuning Postgres and the new insert benchmark, round 5
- Write stalls with RocksDB from a too small block cache and/or too many block cache shards
- innodb_page_cleaners, part 2: big server, database not cached
- Fun with innodb_page_cleaners
- Dynamic leveled compaction in RocksDB
- Insert+delete benchmark, medium server and MyRocks
- Universal Compaction in RocksDB and me
- Tuning Postgres and the new insert benchmark, round 4
- Tuning Postgres and the new insert benchmark on a small server
- Tuning InnoDB for the insert benchmark on a medium server
- Insert+delete benchmark: small server, MyRocks and IO-bound
- Create index, MyRocks and memory
- Tuning Postgres and the new insert benchmark, round 3
- Tuning Postgres and the new insert benchmark, round 2
- Insert+delete benchmark, small server and MyRocks
- Updates to the insert benchmark
- Postgres 16beta1 looks good vs sysbench
- Tuning Postgres and the new insert benchmark
- Compiling all releases of MySQL 8.0
- Summary of another round of benchmarks
- The Insert Benchmark, MySQL 5.6, 5.7, 8.0 and a small server
- Understanding the insert benchmark results: variance and write stalls
- The Insert Benchmark, MySQL 5.6, 5.7, 8.0 and a big server
- The insert benchmark, Postgres versions 11 to 15, a big server
- The insert benchmark, Postgres versions 11 to 15, a small server
- Time to compile Postgres, MySQL and MyRocks
- Perf regressions in MySQL/InnoDB, a big server & sysbench, part 2
- Perf regressions in MySQL/InnoDB, a big server & sysbench
- Revisiting perf regressions in Postgres, a larger server and sysbench, part 2
- Revisiting perf regressions in Postgres, a larger server and sysbench
- Perf regressions in MyRocks with the insert benchmark
- The case of the missing NVMe device
- GC for MVCC - MyRocks, InnoDB and Postgres
- MyRocks vs InnoDB with sysbench
- Impact of writes on read performance
- Perf regressions in MyRocks, a larger server and sysbench
- Perf regressions in MyRocks, a small server & sysbench
- Perf regressions in MySQL/InnoDB, a small server & sysbench
- Perf regressions in Postgres, a larger server and sysbench
- Searching for performance regressions in Postgres
- How I run sysbench
- Huge pages with Postgres & InnoDB: better perf, but a bit more work
- Compiler optimizations, MyRocks and a small server
- Adventures in compiling MySQL: RelWithDebInfo vs Release
- Can RocksDB use all of the IOPs from fast storage?
- Sysbench, Arm & x86, public cloud
- I'd prefer not to update firmware for Samsung SSD on Linux
- CMAKE_BUILD_TYPE: RelWithDebInfo vs Release for MySQL
- Adventures in compiling MySQL
- Sysbench with huge pages for Postgres & InnoDB
- The value of the InnoDB change buffer
- RocksDB microbenchmarks: compilers, Arm and x86
- Statistical rigor and database benchmarks
- The insert benchmark on ARM and x86 cloud servers
- clang, gcc & compiler flags vs the insert benchmark & ARM
- Insert benchmark on an 8-core AMD server
- RocksDB microbenchmarks: crc32c, xxh3 and lz4 uncompress
- Variance in RocksDB benchmarks on cloud HW
2022 46
- Benchmark(et)ing RocksDB vs SplinterDB
- Compiling MySQL 5.6 & 5.7 on Ubuntu 22.04
- Insert benchmark: Postgres, InnoDB and MyRocks with low concurrency
- SSD read response time: raw device vs a filesystem
- s/optimal/better/g - on reviewing conference papers
- Quantifying storage on Linux
- Small servers for performance testing, v4
- Early lock release and InnoDB
- Hyping the hyper clock cache in RocksDB
- Reasons for writeback with an update-in-place B-Tree
- Magma, a new storage engine for Couchbase
- Storage engines, efficiency and large documents, rows, objects
- Understanding some jemalloc stats for RocksDB
- Configuring the RocksDB block cache
- How to ask questions
- Using SPIN to validate the InnoDB read-write lock
- How I do RocksDB performance tests, part 2
- When is a secondary index-only query not index-only for InnoDB and Postgres?
- How I do performance tests for RocksDB
- The impact of max_background_threads, part 2
- The impact of max_background_jobs on write throughput for RocksDB
- Setting up a server on GCP
- Fixing mmap performance for RocksDB
- Insert Benchmark for Postgres 12, 13, 14 and 15: part 2
- Insert Benchmark for Postgres 12, 13, 14 and 15
- The benefit of lz4 and zstd for Postgres WAL compression
- Defining "X has too many options"
- RocksDB internals: LRU
- Performance bugs: p50 vs p99
- Using mmap with RocksDB
- To compress or not compress
- clang vs crc32c in RocksDB
- Becoming less confused about perf record
- Examples of the RocksDB trivial move optimization
- One problem with flamegraphs
- The db_bench mixgraph benchmark
- RocksDB externals: avoiding problems with db_bench --seed
- RocksDB externals: the series
- RocksDB internals: trivial move and benchmarks
- RocksDB internals: trivial move
- RocksDB internals: the series
- RocksDB internals: prefetch and/or readahead
- RocksDB internals: write rate limiter
- RocksDB internals: compaction stall counters
- RocksDB internals: intra-L0 compaction
- RocksDB internals: bytes pending compaction
2021 36
- Summarizing the different implementations of tiered compaction
- Sysbench: MySQL 5.6, 5.7 & 8.0 on a small server
- Sysbench: PostgreSQL 12, 13 and 14 on a small server
- Insert benchmark: MySQL 5.6, 5.7 & 8.0 on a small server
- Insert benchmark: PostgreSQL 12, 13 and 14 on a small server
- Welll actually, LSM and B-tree
- DeWitt Clause vs the public cloud
- Compatible with MySQL or Postgres?
- The other way to compress InnoDB: outsource it
- Automating memory management in a DBMS
- Developer experience, what about the other stakeholders?
- Review of DiffKV
- Happy 15th to Percona
- On storage engines
- Sequential IO and an LSM tree
- How to submit a PR for RocksDB
- More on read-only benchmarks and an LSM
- Read-only benchmarks with an LSM are complicated
- Still not finding CPU regressions in RocksDB
- Not finding CPU regressions across RocksDB releases
- Summary of my search for regressions with MySQL & Postgres
- Sysbench: MySQL vs Postgres for an IO-bound workload
- Sysbench: IO-bound and InnoDB
- Sysbench: IO-bound and Postgres
- Sysbench: in-memory scans for MyRocks, InnoDB and Postgres
- Sysbench: IO-bound and MyRocks
- Insert Benchmark: InnoDB
- Insert Benchmark: Postgres is still boring
- Insert benchmark: MyRocks
- T is for Tuning amplification
- Sysbench: Postgres vs MySQL and the impact of regressions
- Sysbench: in-memory Postgres, Postgres is boring
- Sysbench: in-memory InnoDB, MySQL 5.6, 5.7 & 8.0, take 3
- Sysbench: in-memory MyRocks, MySQL 5.6 & 8.0, take 3
- Sysbench: in-memory MyRocks, MySQL 5.6 & 8.0, take 2
- Sysbench: in-memory InnoDB, MySQL 5.6 & 8.0, take 2
2020 60
- Sysbench: IO-bound InnoDB in MySQL 5.6, 5.7 and 8.0
- Sysbench: in-memory InnoDB in MySQL 5.6, 5.7 and 8.0
- Sysbench: IO-bound MyRocks in 5.6 vs 8.0
- Sysbench: MyRocks in MySQL 5.6 vs 8.0
- Tuning for the Insert Benchmark: Postgres, InnoDB & MyRocks
- Tuning for the Insert Benchmark: MyRocks
- Tuning for the Insert Benchmark: Postgres
- Tuning for the Insert Benchmark: InnoDB
- Blind-writes and an LSM
- Max row per group, sad answers only
- InnoDB, fsync and fdatasync - reducing commit latency
- Overloading the meaning of "copy-on-write" for index structures
- LSM local secondary indexes (LSM LSI)
- Self-aware DBMS, RID-lists for LSM trees
- MyRocks in MySQL 5.6 and 8.0
- Better vs optimal
- Comments on: The Unwritten Contract of Solid State Drives
- MySQL 8 is greater with MyRocks
- Comments on: Optimizing Databases by Learning Hidden Parameters of Solid State Drives
- Performance results and DBMS experts
- When is it OK to lose a commit?
- iostat output format changes again
- Review of PrismDB: Read-aware LSM Tree for Heterogeneous Storage
- Over fetching in a DBMS
- Sustaining high insert rates despite secondary indexes
- Postgres, vacuum and the insert benchmark
- Review of -- TimescaleDB: SQL made scalable for time-series data
- Indexing and write-heavy workloads
- Review: The Design of the Postgres Storage System
- Updates for the insert benchmark
- Something changed for the better in create index between MySQL 8.0.18 and 8.0.20
- Java GC and Linkbench
- Avoiding reads in write-optimized index structures
- Reviving mstat
- Creating performance reports
- Compiling from source for Amazon Linux 2
- kernel lockdown vs blktrace
- Insert Benchmark v3
- Tuning space and write amplification to minimize cost
- Review of Benchmarking RocksDB Key-Value Workloads at Facebook
- Building MySQL 5.6 from source on Ubuntu 18.04
- RDBMS != SQL DBMS
- New school vs old school DBMS
- Describing replication
- Benchmarks vs real workloads
- Short guide to MongoDB monitoring
- How long should you wait for a JVM JIT before attaching a CPU profiler?
- Websites that report your browsing to Facebook
- Podcasts I love
- Durability vs Availability
- Copyleft vs the DeWitt Clause
- Aggregate PMP call stacks for one thread
- Deletes are fast and slow in an LSM
- Comparative benchmarks and a question about describing data
- PMP for on-cpu profiling?
- The slow perf movement
- Setting up Ubuntu 18.04 server on an Intel NUC
- 480p is my friend - video streaming when you don't have fiber
- It is all about the constant factors
- From disk to flashcache to flash
2019 62
- What is the future of off-cpu analysis?
- Readahead
- Slides for talks I have given on MySQL, MongoDB and RocksDB
- Historical - summary of the Google MySQL effort
- Historical - InnoDB IO Performance
- Historical - Patch for MySQL 5.0
- Historical - Make User Delayed
- Historical - Adding Roles to MySQL
- Historical - changes to my.cnf
- Historical - SHOW INNODB STATUS
- Historical - SHOW STATUS changes
- Historical - design doc for semisync replication
- Historical - SemiSync replication
- Historical - SQL changes for MySQL
- Historical - Transactional Replication
- Historical - UserTable Monitoring
- Historical - InnoDB SMP performance
- Fixing the InnoDB RW-lock
- Still web scale
- iostat output changes in Ubuntu 18.04
- Throttling writes: LSM vs B-Tree
- The delta+main index structure
- Always be upgrading
- My theory on technical debt and OSS
- The joy of database configuration
- Using an LSM for analytics
- Linux syscall performance regressions explained
- Jungle - LSM plus copy-on-write B-Tree
- Revisiting Kudu
- Fun setting up Ubuntu on Win 10 Home
- USL, universal scalability law, is good to know
- Review of "5 Minute rule - thirty years later"
- Nitpicking papers in the LSM space
- Tuning space and write amplification to minimize cost
- Write vs space amplification for an LSM and index+log
- A review of uDepot - keeping up with fast storage
- How many storage devices does a workload require?
- Just put the cold data over there
- Learned indexes for an LSM?
- Reducing write and space amplification in a b-tree
- Review of Spanner: Becoming a SQL System
- Optimal Tuning for an LSM
- FoundationDB Record Layer
- Vinyl - the LSM in Tarantool
- Adapting TPC-C for MongoDB - reviewing a VLDB paper
- Tunable Consistency in MongoDB - reviewing a VLDB paper
- InnoDB repeatable read in a nutshell
- Open Core Summit and OSS glue code
- Interesting indexing in Rockset and MongoDB
- index+log: implementations
- index+log: open issues
- Index+log, v2
- CRUM conjecture - read, write, space and cache amplification
- A research paper on Optane performance
- Less "mark" in MySQL benchmarking
- Optimal configurations for an LSM and more
- Bugs in Windows 10 parental controls
- Geek code for LSM trees
- LSM math: fixing mistakes in my last post
- LSM math: revisiting the number of levels that minimizes write amplification
- Define "better"
- Review of LSM-based Storage Techniques: A Survey
2018 36
- New small servers for performance testing
- LSM math - size of search space for LSM tree configuration
- LSM math - how many levels minimizes write amplification?
- Pixelbook review
- Review of TRIAD: Creating Synergies Between Memory, Disk and Log in Log Structured Key-Value Stores
- Converting an LSM to a B-Tree and back again
- Combining tiered and leveled compaction
- Minimizing write amplification in an LSM
- Describing tiered and leveled compaction
- Transaction Processing in NewSQL
- Durability debt
- Bloom filter and cuckoo filter
- Review of SlimDB from VLDB 2018
- 5 things to set when configuring RocksDB and MyRocks
- Name that compaction algorithm
- Review of "Concurrent Log-Structured Memory" from VLDB 2018.
- Default configuration benchmarks
- Lock elision, pthreads and MySQL
- Fast shutdown, fast startup
- Tiered or leveled compaction, why not both via adaptive compaction?
- Default options in MyRocks
- Index+log - an alternative to LSM
- CPU overheads for RocksDB queries
- The original LSM paper
- Geek code for database algorithms
- Where to ask questions about MyRocks and RocksDB
- MyRocks, malloc and fragmentation -- a strong case for jemalloc
- Fun with caching_sha2_password in MySQL 8.0.11
- Index Structures, Access Methods, whatever
- Missing documentation
- Cache amplification
- Sharded replica sets - MySQL and MongoDB
- Meltdown vs storage
- Meltdown vs MySQL part 2: in-memory sysbench and a core i5 NUC
- XFS, nobarrier and the 4.13 Linux kernel
- Meltdown vs MySQL part 1: in-memory sysbench and a core i3 NUC
2017 84
- MyRocks and InnoDB: a summary
- Sysbench: IO-bound and a fast server, part 2
- Sysbench: IO-bound and a fast server
- Sysbench: in-memory and a fast server, part 2
- Sysbench: in-memory and a fast server
- Insert benchmark: IO-bound, high-concurrency, fast server, part 2
- Insert benchmark: IO-bound, high-concurrency, fast server
- Insert benchmark: in-memory, high-concurrency, fast server - part 2
- Insert benchmark: in-memory, high-concurrency, fast server
- Insert benchmark: in-memory, low-concurrency, fast server
- tpcc-mysql, IO-bound, high-concurrency: MyRocks, InnoDB and TokuDB
- Linkbench: IO-bound, small server, MyRocks and InnoDB
- Linkbench: in-memory, small server, MyRocks and InnoDB
- tpcc-mysql, in-memory, low-concurrency: MyRocks and InnoDB
- IO-bound linkbench and a fast server: MyRocks, InnoDB and TokuDB
- In-memory linkbench and a fast server: MyRocks, InnoDB and TokuDB
- Sysbench, IO-bound, small server: MyRocks and InnoDB
- Marketing and the Dunning-Kruger effect
- Sysbench, IO-bound, small server: MyRocks over time
- Concurrent large allocations: glibc malloc, jemalloc and tcmalloc
- Sysbench: IO-bound, InnoDB, a small server, MySQL 5.0 to 8.0
- A new optimization in gcc 5.x and MySQL
- Sysbench, in-memory, small server: MyRocks over time
- Sysbench, in-memory, small server: InnoDB & MyRocks
- Sysbench: in-memory, InnoDB and a small server, MySQL 5.0 to 8.0
- Sysbench: in-memory, MyISAM and a small server, MySQL 5.0 to 8.0
- Advice on advice
- IO-bound insert benchmark for InnoDB on a small server: MySQL 5.0 to 8.0
- In-memory insert benchmark for InnoDB on a small server: MySQL 5.0 to 8.0
- Questions I have about workloads with high write rates
- Insert benchmark for MyISAM from MySQL 5.0 to 8.0
- Insert benchmark, IO-bound, Intel NUC: MyRocks vs InnoDB
- Insert benchmark, in-memory, Intel NUC: MyRocks vs InnoDB
- Wearing out an SSD
- Linkbench: IO-bound, large server
- Making it easier to read Linux perf output
- Linkbench - in-memory, low-concurrency
- IO-bound table scan performance for MyRocks, InnoDB and TokuDB
- Timing load & index for sysbench tables
- Write-heavy workloads with MyRocks
- In-memory sysbench and a small server
- In-memory sysbench, a larger server and contention - part 2
- All things RocksDB at Percona Live Europe 2017
- In-memory sysbench, a larger server and contention - part 1
- How to build MongoRocks for MongoDB 3.4
- In-memory sysbench and a large server
- IO-bound sysbench on a smaller server
- Sysbench, a large server and fast SSD vs MyRocks, InnoDB and TokuDB: part 2
- Sysbench, a large server and fast SSD vs MyRocks, InnoDB and TokuDB
- MyRocks my.cnf changes from June 16 to Aug 15
- I overstated the CPU regression in MySQL 5.7
- One more time with sysbench, a small server & MySQL 5.6, 5.7 and 8.0
- MyISAM, small servers and sysbench at low concurrency
- Linux perf and the CPU regression in MySQL 5.7
- Impact of perf schema on sysbench at low concurrency
- Sysbench for MySQL 5.0, 5.1, 5.5, 5.6, 5.7 and 8
- Linkbench, IO-bound & Intel NUC for MySQL 5.6, 5.7 & 8
- Summary of recent performance tests for MySQL 5.6, 5.7 and 8
- Linkbench, in-memory & Intel NUC for MySQL 5.6, 5.7 & 8
- All about Linkbench
- Insert benchmark, IO-bound & Intel NUC for MySQL 5.6, 5.7 & 8
- Insert benchmark, in-memory & Intel NUC for MySQL 5.6, 5.7 and 8
- The Insert Benchmark
- Sysbench, IO-bound & Intel NUC for MySQL 5.6, 5.7 & 8
- Sysbench, in-memory & Intel NUC
- Short guide on using performance_schema for user & table stats
- The history of low-concurrency performance regressions in MySQL 5.6, 5.7 and 5.8
- MyRocks in MariaDB 10.2.6
- Small servers for database performance tests
- Database IO performance tests
- InnoDB, MyRocks and TokuDB on the insert benchmark
- Benchmark(et)ing with InnoDB redo log size
- How to build MongoRocks for MongoDB 3.4
- Part 5: sysbench, a larger server, and IO-bound database and really fast storage
- Part 4: sysbench, a large server and small database
- Part 3: sysbench, a large server and small database
- Part 2 - sysbench, MyRocks, InnoDB and a small server
- Using modern sysbench to compare MyRocks and InnoDB on a small server
- MyRocks, InnoDB and in-memory insert performance
- Why MyRocks?
- Compaction stalls: something to make better in RocksDB
- The value of write efficiency for the insert benchmark
- Insert benchmark, MyRocks and InnoDB
- MyRocks, MongoRocks and RocksDB at Percona Live 2017
2016 36
- The MyRocks community in 2016
- MyRocks: use less IO on writes to have more IO for reads
- Why is MyRocks more write-efficient than InnoDB?
- Sysbench, InnoDB, transaction isolation and the performance schema
- Benchmarketing MyRocks
- Make MyRocks 2X less slow
- scons verbose command line
- MongoRocks and WiredTiger versus linkbench on a small server
- Making the case for MyRocks. It is all about efficiency.
- MyRocks, MongoRocks, RocksDB and Mr. Mime
- MyRocks and InnoDB with large objects and compression
- Peak benchmarketing season for MySQL
- Excited about Percona Live Amsterdam
- zlib vs zstd for MyRocks running Linkbench
- Tuning the RocksDB block cache
- Web-scale MySQL back in the day
- RocksDB, InnoDB and the insert benchmark
- smartctl and Samsung 850 EVO
- Fun with scons while building MongoDB from source
- TRIM, iostat and Linux
- Using jemalloc heap profiling with MySQL
- MyRocks and sql-bench
- Concurrent transaction performance in RocksDB
- Less slow versus faster
- RocksDB, InnoDB and TokuDB vs sysbench
- RocksDB vs the world for loading Linkbench tables
- Compaction priority in RocksDB
- Concurrent inserts and the RocksDB memtable
- MyRocks vs InnoDB with Linkbench over 7 days
- How to build MongoRocks for MongoDB 3.2
- MyRocks vs InnoDB, the insert benchmark and a disk array
- The advantages of an LSM vs a B-Tree
- MyRocks vs InnoDB via Linkbench with a disk array
- Faster loads for MyRocks
- Even more write amplification when InnoDB meets flash GC
- RocksDB vs InnoDB via Linkbench : performance and efficiency
2015 51
- IO-bound linkbench for MongoDB 3.2
- Read, write & space amplification - B-Tree vs LSM
- Read, write & space amplification - pick 2
- How does MongoDB do on Linkbench with concurrency?
- Define better for a small-data DBMS
- MongoDB 3.2 vs Linkbench
- Losing it?
- Problems not worth fixing
- MyRocks versus allocators: glibc, tcmalloc, jemalloc
- Wanted: a file system on which InnoDB transparent page compression works
- Third day with InnoDB transparent page compression
- Linkbench for MySQL 5.7.8 with an IO-bound database
- Second day with InnoDB transparent page compression
- Cached linkbench performance for MySQL 5.7.8, 5.6, WebScale and MyRocks
- First day with InnoDB transparent page compression
- Single-threaded linkbench performance for MySQL 5.7, 5.6, WebScale and MyRocks
- How to use iTunes family sharing
- Transactions with RocksDB
- Reducing write amplification in MongoRocks
- Insert benchmark and queries on slow storage for MongoDB
- Different kinds of copy-on-write for a b-tree: CoW-R, CoW-S
- Insert benchmark & queries for MongoDB on fast storage
- Reducing the overhead of secondary index maintenance with write-optimized database engine
- Write-heavy workload vs the MongoDB optimizer
- Linkbench, MongoDB and a disk array, now with TokuMX
- Performance impact from too-small RAID stripes
- Summary of Linkbench for MongoDB & MySQL
- Linkbench, MongoDB and a disk array
- Linkbench for MySQL and MongoDB with a large database
- WiredTiger improvements from MongoDB 3.0 to 3.1
- The impact of long-running transactions on Linkbench QPS: InnoDB vs RocksDB
- LinkBenchX and MongoDB on a small server
- Linkbench for MySQL & MongoDB with a cached database
- Examining performance for MongoDB and the insert benchmark
- Insert benchmark for MongoDB, memory allocators and the oplog
- RocksDB & ForestDB via the ForestDB benchmark: cached database
- RocksDB & ForestDB via the ForestDB benchmark: IO-bound and SSD
- RocksDB & ForestDB via the ForestDB benchmark: IO-bound and disks
- RocksDB & ForestDB via the ForestDB benchmark, part 1
- Comparing LevelDB and RocksDB, take 2
- Much ado about nothing
- Big numbers for web scale MySQL
- How to win at IO-bound benchmarks
- Capacity planning and QPS
- Compared to what?
- Fast index create
- A few possibly true facts about indexes in MongoDB, RocksDB and WiredTiger
- Formal methods in the real world
- Helping make MySQL better
- Storage efficiency
- I don't get marketing
2014 55
- malloc and MongoDB performance
- Storage overhead for attribute names in MongoDB
- Read-modify-write optimized
- Aurora for MySQL is coming
- Updates with secondary index maintenance: 5.7 vs previous releases
- Sysbench IO-bound updates: MySQL 5.7 vs previous releases
- Sysbench cached updates: MySQL 5.7 vs previous releases
- Page read performance: MySQL 5.7 vs previous releases
- Low-concurrency performance for updates with InnoDB: MySQL 5.7 vs previous releases
- Low-concurrency performance for updates and the Heap engine: MySQL 5.7 vs previous releases
- Details on range scan performance regression in MySQL 5.7
- Impact from adaptive hash index and innodb_thread_concurrency in MySQL 5.7.5
- Low-concurrency performance for range queries: MySQL 5.7 vs previous releases
- Low-concurrency performance for point lookups: MySQL 5.7.5 vs previous releases
- Single thread performance in MySQL 5.7.5 versus older releases via sql-bench
- Sync replication in MySQL 5.X
- Get help from an MBA - MySQL Benchmark Advisors
- VLDB & MySQL in China
- The InnoDB Mutex, part 3
- The InnoDB Mutex, part 2
- The InnoDB mutex
- Bug marketing - fixing MongoDB replication bugs in TokuMX
- How to answer questions
- Benchmarking the leveldb family
- Benchmark(et)ing
- Write amplification from log writes
- Overhead of reading the Nth attribute in a document for MongoDB & TokuMX
- The impact of read ahead and read size on MongoDB, TokuMX and MySQL
- Concurrent, read-only, not cached: MongoDB, TokuMX, MySQL
- RW locks are hard
- Concurrent, read-only & cached: MongoDB, TokuMX, MySQL
- Hierarchical CPU profiling for MongoDB
- Biebermarks
- TokuMX, MongoDB and InnoDB, IO-bound update-only with fast storage
- Types of writes
- More details on disk IO-bound, update only for MongoDB, TokuMX and InnoDB
- MongoDB, TokuMX and InnoDB for disk IO-bound, update-only by PK
- Why aren't you using X, version 2
- MongoDB, TokuMX and InnoDB for concurrent inserts
- Why aren't multi-object updates atomic?
- MongoDB, TokuMX and InnoDB for disk IO-bound, read-only point queries
- Notes on the storage stack
- Insert benchmark on disks, part 2
- Insert benchmark for flash, part 2
- TokuMX, MongoDB and InnoDB on IO-bound point queries
- TokuMX, MongoDB and InnoDB versus the insert benchmark with disks
- Redo logs in MongoDB and InnoDB
- A few comments on MongoDB and InnoDB replication
- Insert benchmark for InnoDB, MongoDB and TokuMX and flash storage
- Bigger data
- When does MongoDB make a transaction visible?
- Exceptions versus returning an error code
- Write Amplification: write-optimized versus update-in-place
- Notes on MongoDB space allocation
- Use case?