Skip to content

Benchmarking MongoDB from 3.6 to 8.0 - Part 2

Jean da Silva
Published date:
5 min read

Introduction

Welcome to part two of this benchmarking series!

If you have landed here and are not fully aware of what is going on, this is a two-part blog post in which I share my results after benchmarking MongoDB from version 3.6 to 8.0.

In this post, I’m not going to describe the main idea behind this series, the environment, or how the tests were conducted. For that, we have the first part, which covers all those points with all the details I could think of.

If you want to get more context and understand further details behind the tests, you can find the link below to that first part:

How to use

Here, it’s a guide about the data and how to use/interpret it.

Below, you will see five tabs that you can access to see the results for each number of threads tested and the scenarios.

Once you expand the tab, you will see a table with the operations tested (Scenario) on the far left column, and the result across all versions on the right.

For example:

For more details on the methodology, please refer to the section that further explains it in Part 1.

To help you with the analysis, the tables hold a few features for that.

1. You can easily compare results by selecting the version of your preference and hovering the mouse over the other release.

For example - Let’s pick version 8.0 as a reference.

After that, once you hover your mouse on that same line, it will show the percentage difference when compared to 8.0:

- For that same scenario, MongoDB 7.0 performed 33.19% fewer operations when compared to 8.0.

2. You can enable/disable the “Highlight Version” 

The idea was pretty simple. Since it’s a benchmark test, I wanted not only to compare the results, as previously, but also to see which release won for each scenario. 

When we enable that option, it highlights which version had better performance for each scenario:

3. Last but not least, if you want to study those numbers, you can easily copy and paste the tables into the software of your preference.

Alongside that, Search is also enabled, so you can filter out the operations of your preference for that table to narrow the analysis by having only the matching results.

Benchmark Results

1 Thread
Scenario
Aggregation.FindProjectionDottedField.Indexed 549.82 520.79 83.22 537.70 520.07 523.60 351.54 526.16
Aggregation.FindProjectionThreeFieldsCovered 535.65 183.56 159.52 529.55 529.75 528.35 327.46 90.28
Aggregation.IntNonIdFindOne 116.02 551.54 501.36 540.36 528.13 505.94 387.63 544.00
Aggregation.IntNonIdFindOneProjection 517.51 526.85 479.84 534.33 528.77 494.39 449.53 213.48
Aggregation.IntNonIdFindOneProjectionCovered 555.07 549.38 523.55 534.96 530.24 522.73 342.03 504.77
Aggregation.ProjectExclude_LargeArray 1.66 1.39 1.67 66.94 68.00 69.29 372.20 381.89
Aggregation.RegexPrefixFindOne 165.54 558.66 539.90 553.90 526.83 530.12 235.84 522.72
Aggregation.TwoInts 514.38 513.78 500.85 543.10 521.65 518.79 251.29 526.85
Insert.BigKeyIndex 214.76 240.43 207.19 252.84 247.83 249.84 198.47 43.71
Insert.Empty 566.56 547.60 463.79 460.09 482.58 495.54 559.98 564.84
Insert.EmptyCapped 584.92 546.28 481.33 438.35 440.79 504.15 561.89 559.95
Insert.EmptyCapped.SeqIntID 555.33 450.80 530.16 562.73 541.74 387.68 555.56 561.15
Insert.IntIDUpsert 522.43 452.06 552.94 548.09 525.90 434.35 539.75 543.87
Insert.IntVector 414.49 424.03 405.78 437.02 419.40 415.26 436.54 479.75
Insert.JustID 576.85 525.46 493.94 352.15 477.87 516.43 547.72 563.17
Insert.JustNum 576.93 487.78 373.13 343.41 454.00 521.79 565.08 570.71
Insert.JustNumIndexed 576.42 535.18 360.27 334.95 451.65 470.25 550.88 558.24
Insert.LargeDocVector 14.94 20.21 74.30 79.14 78.82 77.55 98.73 116.84
Insert.MultiIndex.Contested.Rnd 502.40 511.48 361.62 539.11 537.31 519.49 331.44 214.71
Insert.MultiIndex.Uncontested.Rnd 489.47 532.98 344.57 532.32 549.89 521.17 329.89 447.74
Insert.MultiKeyIndex.Contested.Rnd 548.16 492.78 477.98 567.00 541.48 506.64 341.35 191.92
Insert.MultiKeyIndex.Uncontested.Rnd 557.14 530.25 412.90 562.42 540.95 543.55 375.91 100.63
Insert.SeqIntID.Indexed 585.13 522.91 476.73 391.06 422.20 521.61 549.32 557.84
Insert.SingleIndex.Contested.Rnd 573.26 547.45 559.17 550.02 545.32 534.08 448.52 539.75
Insert.SingleIndex.Seq 526.23 315.77 554.81 451.10 388.56 399.83 552.73 429.90
Insert.SingleIndex.Uncontested.Rnd 526.29 440.80 456.23 566.68 548.37 519.84 339.83 500.81
Insert.UniqueIndex 165.56 542.75 535.93 322.08 492.41 502.58 540.50 557.43
Insert.UniqueIndexCompound 188.58 210.20 546.26 552.93 555.67 509.03 539.88 554.93
Insert.UniqueIndexCompoundReverse 102.53 163.63 543.38 557.24 555.83 509.60 554.51 538.09
InsertIndexedStringsNonSimpleCollation 329.29 281.01 540.61 552.08 523.32 486.55 527.48 562.05
InsertIndexedStringsSimpleCollation 546.33 369.81 533.37 552.25 539.91 535.66 551.73 566.70
Queries.FindProjectionDottedField.Indexed 549.21 72.39 158.51 535.46 537.07 514.66 293.15 527.41
Queries.FindProjectionThreeFieldsCovered 560.71 369.78 524.34 543.33 533.79 533.62 436.69 101.86
Queries.IdentityView.FindProjectionDottedField.Indexed 537.89 81.74 78.71 524.89 508.26 507.72 271.09 509.93
Queries.IdentityView.FindProjectionThreeFieldsCovered 538.56 122.63 391.09 526.62 516.86 516.84 319.15 170.78
Queries.IdentityView.IntNonIdFindOne 335.00 421.46 450.12 435.18 529.54 449.29 506.23 413.62
Queries.IdentityView.IntNonIdFindOneProjection 517.99 529.67 523.89 530.39 519.40 499.02 280.82 518.35
Queries.IdentityView.IntNonIdFindOneProjectionCovered 536.97 503.37 500.88 525.81 527.24 507.81 295.71 522.36
Queries.IdentityView.ProjectExclude_LargeArray 1.33 1.38 1.65 68.87 68.71 67.80 349.69 408.48
Queries.IdentityView.RegexPrefixFindOne 97.58 546.43 520.64 525.20 528.20 516.53 325.64 526.84
Queries.IdentityView.TwoInts 374.13 436.14 484.26 528.24 529.67 453.33 526.11 363.43
Queries.IntNonIdFindOne 485.43 471.08 382.73 411.20 540.67 443.52 525.01 373.50
Queries.IntNonIdFindOneProjection 558.90 519.49 520.02 541.13 536.00 520.64 446.48 514.00
Queries.IntNonIdFindOneProjectionCovered 564.50 527.29 527.84 548.61 534.64 505.21 308.50 73.51
Queries.PartialIndex.AllInFilter.FilteredRange 1,016.58 1,027.46 1,008.08 1,083.24 1,030.15 963.53 595.77 1,047.29
Queries.PartialIndex.AllInFilter.FullRange 877.69 951.39 985.13 1,088.98 807.65 996.49 1,062.30 885.71
Queries.PartialIndex.FilteredRange 847.42 1,009.93 990.39 1,072.03 895.80 972.34 1,066.83 897.38
Queries.PartialIndex.FullRange 619.66 625.38 546.02 640.35 560.24 581.58 586.29 597.16
Queries.PartialIndex.NonFilteredRange 666.40 668.26 444.71 647.84 635.52 546.42 319.47 653.80
Queries.ProjectExclude_LargeArray 423.44 431.91 363.66 70.55 69.60 54.49 394.25 423.78
Queries.RegexPrefixFindOne 193.83 562.40 545.05 552.52 532.41 531.98 409.62 525.37
Queries.TwoInts 392.47 476.05 509.03 524.54 536.26 468.69 534.67 416.26
Remove.IntId 856.03 826.40 762.41 568.77 521.78 674.67 808.94 818.19
Remove.IntNonIdIndex 843.72 732.79 806.83 783.11 749.87 753.86 719.10 784.46
Remove.IntNonIdNoIndex 675.69 622.43 639.29 629.90 644.00 609.97 638.51 670.34
Remove.IntNonIdUniqueIndex 842.53 558.57 791.74 809.70 786.76 713.49 617.42 808.91
Update.FieldAtOffset 232.05 258.14 241.52 237.68 232.53 233.82 238.22 251.93
Update.IncFewLargeDoc 104.51 459.23 541.27 515.06 518.36 412.10 520.54 526.52
Update.IncFewLargeDocLongFields 557.03 292.26 508.68 515.78 531.15 264.50 529.23 526.41
Update.IncFewSmallDoc 159.39 409.16 516.18 527.58 535.26 400.68 522.48 530.12
Update.IncFewSmallDocLongFields 276.10 402.41 507.62 509.14 507.92 466.05 523.97 527.33
Update.IncNoIndex 499.40 558.83 457.77 520.38 522.89 523.50 508.88 535.76
Update.IncNoIndexUpsert 158.57 550.74 550.81 517.87 538.80 524.89 510.19 528.23
Update.IncWithIndex 306.39 555.70 533.02 509.65 490.94 499.15 417.74 531.58
Update.IncWithIndexUpsert 102.69 537.14 543.84 519.59 534.45 531.61 518.67 536.07
Update.ManyElementsWithinArray 245.78 261.74 252.38 256.30 268.81 253.42 247.93 256.78
Update.MatchedElementWithinArray 494.91 448.77 488.96 480.85 456.09 430.08 483.18 489.39
Update.SetWithIgnoredIndex.Random 496.61 554.84 439.08 529.83 477.93 481.88 464.14 187.95
Update.SetWithIgnoredIndex.String 556.54 540.68 383.08 531.86 519.18 463.27 346.73 513.00
Update.SetWithIndex.Random 519.43 549.11 534.27 537.61 517.77 528.40 331.01 495.23
Update.SetWithMultiIndex.Random 515.38 542.17 478.18 533.26 478.35 457.40 480.88 183.60
Update.SetWithMultiIndex.String 486.35 473.08 497.44 496.37 488.16 501.20 288.72 498.67
Update.SingleDocFieldAtOffset 778.08 815.97 663.70 803.50 755.28 790.42 699.73 798.43
Update.UniqueIndex 486.70 523.22 536.65 510.24 524.99 509.60 465.73 527.29
Update.UniqueIndexCompoundReverse 491.75 511.95 533.13 492.98 519.22 511.90 383.37 525.34
2 Threads
Scenario
Aggregation.FindProjectionDottedField.Indexed 1,074.18 612.68 1,041.88 1,062.28 1,042.37 1,019.98 890.62 1,034.04
Aggregation.FindProjectionThreeFieldsCovered 1,079.55 647.14 1,066.45 1,037.92 1,034.55 1,004.32 907.86 1,049.77
Aggregation.IntNonIdFindOne 971.15 911.72 899.08 1,083.66 1,003.34 1,043.04 846.55 1,083.36
Aggregation.IntNonIdFindOneProjection 1,072.76 795.91 1,044.28 1,054.26 1,050.39 1,023.28 819.69 1,024.42
Aggregation.IntNonIdFindOneProjectionCovered 283.32 184.07 920.08 1,032.99 1,033.22 1,028.96 631.80 1,049.66
Aggregation.ProjectExclude_LargeArray 2.26 2.27 2.20 90.35 95.15 95.29 793.04 264.68
Aggregation.RegexPrefixFindOne 968.88 907.53 761.27 1,081.50 1,051.19 1,035.95 1,044.09 552.33
Aggregation.TwoInts 1,050.76 888.59 730.81 1,043.44 939.90 907.74 945.32 171.69
Insert.BigKeyIndex 353.18 358.73 272.71 361.16 360.16 356.57 240.56 363.60
Insert.Empty 1,107.45 1,039.66 1,091.18 1,112.87 1,071.99 1,055.44 1,061.53 1,106.78
Insert.EmptyCapped 1,110.82 1,042.36 1,084.44 1,101.31 1,062.96 1,076.40 1,068.71 1,108.80
Insert.EmptyCapped.SeqIntID 1,130.11 1,103.96 1,097.97 1,099.69 1,020.15 788.33 1,047.51 1,100.21
Insert.IntIDUpsert 1,125.52 1,064.67 1,049.49 1,065.14 923.99 870.45 1,067.61 1,058.47
Insert.IntVector 803.65 751.05 769.26 807.42 796.07 747.42 775.42 861.57
Insert.JustID 1,112.35 1,060.25 1,114.48 1,073.54 1,064.46 934.47 1,046.29 1,091.43
Insert.JustNum 1,113.80 1,055.19 1,048.37 1,104.74 1,043.13 1,059.35 1,025.21 1,091.63
Insert.JustNumIndexed 1,108.05 1,025.87 1,065.67 1,098.39 1,079.96 944.42 1,045.64 1,083.59
Insert.LargeDocVector 131.77 113.94 85.53 100.51 95.40 98.89 124.49 176.30
Insert.MultiIndex.Contested.Rnd 1,006.27 957.08 844.44 985.35 1,065.86 949.07 947.03 967.60
Insert.MultiIndex.Uncontested.Rnd 873.26 989.65 1,035.44 1,101.13 1,065.50 1,002.71 912.19 1,039.72
Insert.MultiKeyIndex.Contested.Rnd 956.00 960.36 1,029.59 992.49 1,085.07 899.73 898.27 1,056.98
Insert.MultiKeyIndex.Uncontested.Rnd 941.90 850.20 910.12 912.88 912.31 889.32 958.21 1,039.13
Insert.SeqIntID.Indexed 1,117.08 1,069.80 1,068.12 1,078.91 1,075.75 1,035.14 1,042.25 1,109.99
Insert.SingleIndex.Contested.Rnd 1,062.99 998.46 1,064.73 1,104.49 991.63 939.09 907.46 1,041.03
Insert.SingleIndex.Seq 1,012.22 1,089.71 813.89 1,116.81 1,074.50 1,042.03 756.80 1,052.63
Insert.SingleIndex.Uncontested.Rnd 1,020.16 955.89 886.22 1,064.64 1,006.45 895.93 990.91 1,029.24
Insert.UniqueIndex 1,089.73 1,049.43 1,075.41 1,074.22 937.61 1,047.29 1,044.29 1,075.61
Insert.UniqueIndexCompound 1,123.80 1,098.49 1,100.55 1,082.22 971.43 905.28 1,074.65 1,040.61
Insert.UniqueIndexCompoundReverse 1,135.03 1,104.63 1,085.85 1,068.16 1,071.46 902.79 1,085.87 1,070.36
InsertIndexedStringsNonSimpleCollation 1,119.74 1,098.11 1,066.01 1,094.67 952.66 749.69 1,069.10 1,048.74
InsertIndexedStringsSimpleCollation 1,110.17 1,094.20 1,076.62 1,086.81 947.39 784.78 1,077.98 1,044.89
Queries.FindProjectionDottedField.Indexed 799.93 959.63 889.87 1,077.24 849.10 982.49 804.09 1,059.37
Queries.FindProjectionThreeFieldsCovered 1,075.68 940.63 1,015.11 1,063.42 1,053.66 1,026.83 937.14 1,058.96
Queries.IdentityView.FindProjectionDottedField.Indexed 916.09 882.16 890.75 1,043.30 1,013.76 723.15 823.62 1,040.36
Queries.IdentityView.FindProjectionThreeFieldsCovered 1,018.12 726.28 892.29 1,044.27 1,030.30 961.32 865.62 1,040.35
Queries.IdentityView.IntNonIdFindOne 1,041.10 843.09 778.26 1,043.83 1,035.61 998.60 999.93 1,076.91
Queries.IdentityView.IntNonIdFindOneProjection 1,057.61 63.74 961.44 1,044.31 1,027.18 1,024.64 892.71 1,035.49
Queries.IdentityView.IntNonIdFindOneProjectionCovered 193.81 284.94 967.14 1,030.51 1,036.31 988.62 701.46 1,032.42
Queries.IdentityView.ProjectExclude_LargeArray 3.19 1.82 2.27 96.27 92.06 95.44 551.07 776.50
Queries.IdentityView.RegexPrefixFindOne 1,001.47 845.69 810.55 1,063.14 1,015.41 996.67 854.36 1,059.90
Queries.IdentityView.TwoInts 1,052.35 775.60 1,009.75 1,045.62 1,043.31 1,027.34 967.88 304.35
Queries.IntNonIdFindOne 1,068.37 844.14 982.88 1,065.29 1,071.68 994.64 925.68 1,097.63
Queries.IntNonIdFindOneProjection 188.15 237.52 802.53 1,073.76 918.04 937.33 900.46 982.86
Queries.IntNonIdFindOneProjectionCovered 253.70 823.27 873.53 1,082.97 1,045.54 758.51 893.06 1,077.93
Queries.PartialIndex.AllInFilter.FilteredRange 281.19 1,624.08 2,058.92 2,125.52 2,032.95 1,843.42 2,018.47 1,898.92
Queries.PartialIndex.AllInFilter.FullRange 2,058.80 2,129.69 2,173.14 2,098.82 2,058.97 2,016.49 1,517.03 2,124.48
Queries.PartialIndex.FilteredRange 733.50 1,863.10 2,152.56 2,136.43 2,049.72 1,973.12 1,441.56 346.71
Queries.PartialIndex.FullRange 182.72 1,207.43 1,283.42 1,287.80 1,245.08 1,124.40 1,041.78 1,355.92
Queries.PartialIndex.NonFilteredRange 431.85 1,021.71 1,186.80 1,255.11 1,179.53 958.56 1,145.35 1,247.08
Queries.ProjectExclude_LargeArray 820.94 684.04 765.71 96.39 92.45 95.41 572.06 823.98
Queries.RegexPrefixFindOne 991.54 789.27 766.86 1,081.52 1,078.01 837.09 883.12 1,068.80
Queries.TwoInts 1,067.33 552.68 593.64 1,072.09 949.97 934.89 923.27 255.57
Remove.IntId 1,643.27 1,280.16 1,540.90 1,602.48 1,562.38 1,435.79 1,202.63 1,615.66
Remove.IntNonIdIndex 1,621.43 1,292.18 1,570.70 1,608.08 1,572.45 1,548.55 1,163.34 1,592.97
Remove.IntNonIdNoIndex 1,385.75 1,147.50 1,300.19 1,308.72 1,247.21 1,202.27 1,003.98 1,328.84
Remove.IntNonIdUniqueIndex 1,622.25 1,444.82 1,624.38 1,558.93 1,477.01 1,266.53 1,433.48 1,519.07
Update.FieldAtOffset 470.07 491.87 481.13 465.62 430.29 477.76 480.81 477.78
Update.IncFewLargeDoc 1,047.76 933.94 1,074.63 1,045.81 953.13 949.61 1,020.33 1,045.76
Update.IncFewLargeDocLongFields 1,045.48 1,047.54 984.01 1,018.32 1,023.18 1,045.03 978.30 860.32
Update.IncFewSmallDoc 1,060.70 895.97 1,073.07 1,054.20 1,024.77 1,050.97 1,054.99 1,043.82
Update.IncFewSmallDocLongFields 1,044.89 1,069.97 972.86 1,017.07 1,037.76 1,048.58 972.92 1,037.87
Update.IncNoIndex 964.54 976.95 1,082.20 289.47 1,057.06 1,012.69 1,053.52 1,029.69
Update.IncNoIndexUpsert 998.96 1,056.66 1,033.29 699.59 1,040.61 1,048.01 971.44 1,037.18
Update.IncWithIndex 1,044.54 983.59 1,057.76 197.34 1,035.60 1,033.51 1,051.90 1,051.81
Update.IncWithIndexUpsert 1,006.43 1,042.28 1,040.45 1,016.85 1,049.29 1,051.95 952.07 1,035.84
Update.ManyElementsWithinArray 413.15 479.23 429.45 466.19 413.53 462.30 444.41 455.53
Update.MatchedElementWithinArray 814.85 977.42 838.37 954.68 857.27 957.55 901.13 960.32
Update.SetWithIgnoredIndex.Random 1,069.22 1,022.03 1,025.39 1,048.21 1,032.44 967.80 751.43 807.52
Update.SetWithIgnoredIndex.String 1,072.49 976.92 763.78 1,028.69 1,025.07 1,038.09 739.11 1,055.57
Update.SetWithIndex.Random 866.44 977.51 788.29 1,055.96 1,019.54 1,042.51 778.65 366.40
Update.SetWithMultiIndex.Random 1,056.61 1,052.06 983.22 1,007.76 1,029.99 678.91 703.64 196.71
Update.SetWithMultiIndex.String 1,012.97 1,008.94 988.20 1,027.00 999.44 990.87 818.38 977.40
Update.SingleDocFieldAtOffset 1,521.47 1,633.40 1,455.90 1,552.59 1,275.35 1,541.79 1,513.53 1,526.36
Update.UniqueIndex 897.50 969.29 1,031.53 1,034.25 974.51 986.25 980.18 1,033.86
Update.UniqueIndexCompoundReverse 1,064.17 1,050.34 967.86 1,003.89 659.07 1,006.09 986.01 1,019.17
4 Threads
Scenario
Aggregation.FindProjectionDottedField.Indexed 1,465.67 1,470.96 2,038.51 1,920.82 1,942.90 1,928.34 1,971.08 2,045.44
Aggregation.FindProjectionThreeFieldsCovered 2,109.28 1,439.08 1,997.53 1,927.54 1,958.09 1,981.67 1,392.57 2,064.42
Aggregation.IntNonIdFindOne 2,132.75 1,457.83 1,522.33 1,982.80 2,075.43 1,989.09 1,566.11 2,147.90
Aggregation.IntNonIdFindOneProjection 2,135.76 239.29 1,954.71 1,917.03 1,971.47 1,936.14 1,482.27 2,068.66
Aggregation.IntNonIdFindOneProjectionCovered 2,017.89 746.89 2,044.43 1,903.95 2,024.03 1,933.69 1,684.72 395.83
Aggregation.ProjectExclude_LargeArray 4.40 3.32 2.65 110.71 110.24 112.90 1,206.83 1,645.77
Aggregation.RegexPrefixFindOne 2,131.52 1,334.40 1,984.66 1,949.68 1,996.29 1,973.27 1,828.54 2,082.74
Aggregation.TwoInts 1,868.52 1,492.28 2,038.79 1,925.56 1,984.00 1,705.15 1,401.59 1,421.43
Insert.BigKeyIndex 430.64 445.60 425.83 455.07 446.80 445.43 351.05 449.46
Insert.Empty 540.12 1,822.74 1,926.65 2,140.17 2,159.80 1,688.32 2,033.31 2,157.06
Insert.EmptyCapped 400.14 1,571.68 2,044.74 2,141.96 2,156.06 2,058.96 2,101.73 2,181.35
Insert.EmptyCapped.SeqIntID 621.39 1,662.99 1,938.71 2,158.69 1,815.88 1,573.74 2,094.49 2,166.36
Insert.IntIDUpsert 2,150.30 1,806.64 1,971.12 2,129.73 2,040.54 1,772.86 1,984.35 2,119.81
Insert.IntVector 568.93 1,394.61 1,468.62 1,552.90 1,534.68 1,487.63 1,478.20 1,752.80
Insert.JustID 422.76 1,870.83 1,997.43 2,078.62 2,039.52 2,046.30 1,998.61 2,144.92
Insert.JustNum 2,109.52 1,927.48 1,885.26 2,144.59 2,093.47 1,984.30 2,016.96 2,145.00
Insert.JustNumIndexed 2,056.79 1,586.64 1,825.54 2,139.94 2,093.59 1,675.63 1,970.61 2,143.81
Insert.LargeDocVector 147.18 117.59 101.17 97.89 104.50 105.83 150.22 204.49
Insert.MultiIndex.Contested.Rnd 1,719.37 1,928.93 1,701.69 1,856.34 2,061.78 1,843.44 1,747.01 2,048.19
Insert.MultiIndex.Uncontested.Rnd 1,355.09 1,573.68 1,642.79 2,067.79 1,958.49 1,704.02 1,781.93 2,106.42
Insert.MultiKeyIndex.Contested.Rnd 1,999.29 1,980.90 1,848.73 2,113.15 2,080.08 2,008.38 1,451.10 2,061.77
Insert.MultiKeyIndex.Uncontested.Rnd 2,019.17 2,034.53 1,380.31 1,771.41 2,076.91 2,003.32 1,495.01 2,053.13
Insert.SeqIntID.Indexed 2,049.51 1,207.52 2,020.72 2,126.69 2,039.84 2,036.59 1,934.11 2,129.67
Insert.SingleIndex.Contested.Rnd 184.73 1,698.75 1,860.51 1,993.73 2,112.91 1,842.98 1,765.75 1,062.45
Insert.SingleIndex.Seq 566.07 2,028.91 1,827.76 2,182.43 2,017.03 2,070.55 1,815.85 587.19
Insert.SingleIndex.Uncontested.Rnd 624.78 1,921.31 1,513.28 1,891.69 1,962.50 1,858.66 1,709.16 410.17
Insert.UniqueIndex 2,027.16 1,455.42 1,731.93 2,137.72 2,076.55 1,771.58 1,953.20 2,126.56
Insert.UniqueIndexCompound 2,023.47 2,045.20 1,700.59 2,143.07 2,027.91 1,842.09 2,009.92 2,152.22
Insert.UniqueIndexCompoundReverse 2,051.10 2,007.68 1,965.06 2,160.31 2,070.41 1,904.22 2,018.98 2,150.28
InsertIndexedStringsNonSimpleCollation 1,992.00 1,656.45 1,738.97 2,093.36 2,031.12 2,000.64 2,047.34 2,130.75
InsertIndexedStringsSimpleCollation 2,089.83 1,679.83 1,947.10 2,107.17 1,959.46 1,988.39 2,046.56 2,160.96
Queries.FindProjectionDottedField.Indexed 2,106.73 1,142.20 2,051.65 1,938.91 2,013.86 1,924.21 1,232.65 2,110.78
Queries.FindProjectionThreeFieldsCovered 2,070.64 1,801.32 2,007.80 2,046.79 1,940.56 1,943.14 1,653.63 2,036.32
Queries.IdentityView.FindProjectionDottedField.Indexed 2,143.25 1,225.43 1,479.20 1,988.90 1,937.34 1,968.07 1,413.02 2,047.54
Queries.IdentityView.FindProjectionThreeFieldsCovered 1,965.13 1,375.63 1,972.99 1,960.69 1,917.09 1,896.62 1,681.92 1,960.25
Queries.IdentityView.IntNonIdFindOne 2,105.55 1,171.45 1,962.95 1,934.02 1,831.76 1,892.11 1,686.51 1,896.55
Queries.IdentityView.IntNonIdFindOneProjection 2,087.41 382.85 1,926.93 1,875.40 1,945.91 1,898.21 1,458.80 2,042.92
Queries.IdentityView.IntNonIdFindOneProjectionCovered 2,118.66 1,107.16 1,965.59 1,957.85 1,965.18 1,935.24 1,406.13 701.45
Queries.IdentityView.ProjectExclude_LargeArray 3.62 3.38 2.65 108.43 110.00 108.68 902.46 378.87
Queries.IdentityView.RegexPrefixFindOne 2,174.41 1,587.02 2,076.12 1,952.04 1,984.40 1,952.23 1,944.78 2,091.63
Queries.IdentityView.TwoInts 2,008.58 1,684.54 1,973.83 1,966.50 1,937.09 2,005.51 1,827.03 2,040.02
Queries.IntNonIdFindOne 1,698.38 1,620.48 1,579.70 1,967.70 1,799.11 1,797.31 1,448.72 2,095.47
Queries.IntNonIdFindOneProjection 2,147.93 299.00 1,818.57 1,968.54 1,981.47 1,881.56 1,441.98 2,092.45
Queries.IntNonIdFindOneProjectionCovered 2,148.17 1,230.94 2,051.26 1,941.98 2,076.30 1,961.77 1,429.71 632.97
Queries.PartialIndex.AllInFilter.FilteredRange 3,675.52 3,583.88 3,459.55 4,005.42 3,891.68 3,368.57 3,482.61 3,928.29
Queries.PartialIndex.AllInFilter.FullRange 4,078.34 3,848.79 2,560.63 3,987.49 4,169.26 4,017.19 2,934.01 3,999.56
Queries.PartialIndex.FilteredRange 4,038.97 3,876.91 2,611.31 3,796.74 4,169.82 3,713.39 3,031.26 678.78
Queries.PartialIndex.FullRange 2,284.13 2,458.67 2,094.97 2,454.52 2,474.45 2,250.06 2,142.21 484.57
Queries.PartialIndex.NonFilteredRange 2,313.91 2,465.83 2,140.77 2,471.11 2,151.43 2,128.80 1,939.96 478.65
Queries.ProjectExclude_LargeArray 1,710.72 795.45 1,518.58 104.74 109.96 106.82 835.11 1,451.48
Queries.RegexPrefixFindOne 2,018.23 1,480.29 1,982.35 1,985.93 1,989.28 2,005.34 2,053.05 2,137.57
Queries.TwoInts 2,035.01 1,813.44 1,676.56 1,911.41 1,822.19 1,828.65 1,556.43 2,080.73
Remove.IntId 2,696.21 2,258.78 3,080.52 3,147.28 2,948.76 2,897.51 2,321.37 3,075.39
Remove.IntNonIdIndex 2,781.64 2,210.52 2,992.05 3,125.92 2,934.72 2,795.41 2,404.35 3,115.44
Remove.IntNonIdNoIndex 2,377.21 2,092.83 2,556.35 2,547.90 2,564.18 2,452.00 2,225.96 2,652.35
Remove.IntNonIdUniqueIndex 3,006.78 2,130.52 2,931.47 3,099.53 2,896.79 3,021.05 2,174.95 3,036.50
Update.FieldAtOffset 939.68 995.47 898.32 936.10 891.26 916.23 826.39 983.39
Update.IncFewLargeDoc 2,047.16 2,060.13 1,276.99 1,922.45 1,988.20 2,013.43 1,355.25 2,086.74
Update.IncFewLargeDocLongFields 2,054.37 2,064.08 979.46 1,239.83 2,015.07 2,020.10 1,115.60 2,048.54
Update.IncFewSmallDoc 2,023.67 2,025.32 1,253.65 1,964.75 2,037.89 2,002.53 1,200.84 2,052.51
Update.IncFewSmallDocLongFields 2,087.20 1,967.66 1,189.48 1,942.05 1,967.26 2,013.29 1,528.74 2,016.41
Update.IncNoIndex 2,023.19 2,050.81 1,665.34 1,970.66 2,014.59 2,004.61 1,304.71 2,051.76
Update.IncNoIndexUpsert 1,988.87 2,043.59 1,804.45 1,878.32 2,074.82 2,073.29 1,324.67 2,069.83
Update.IncWithIndex 1,981.88 2,020.96 1,849.89 1,855.24 2,001.41 1,946.28 1,702.11 2,056.14
Update.IncWithIndexUpsert 1,990.04 1,991.59 1,799.33 1,878.11 2,001.76 1,988.93 1,396.35 2,014.66
Update.ManyElementsWithinArray 694.87 667.85 591.07 638.81 675.30 682.60 638.61 681.41
Update.MatchedElementWithinArray 1,908.47 1,867.87 1,671.65 1,763.65 1,874.31 1,838.68 1,547.17 1,895.55
Update.SetWithIgnoredIndex.Random 2,078.02 2,028.81 1,357.32 1,981.79 1,993.16 1,904.72 1,319.32 2,115.62
Update.SetWithIgnoredIndex.String 2,081.82 2,036.55 1,591.01 2,006.36 2,022.58 2,025.71 1,260.34 2,076.17
Update.SetWithIndex.Random 1,836.89 1,985.04 1,540.07 1,954.73 2,013.08 1,966.59 1,218.37 2,093.32
Update.SetWithMultiIndex.Random 2,067.77 2,043.29 1,470.07 1,964.50 2,054.73 1,970.81 1,280.45 2,133.01
Update.SetWithMultiIndex.String 1,770.84 1,673.08 1,656.29 1,731.79 1,795.61 1,753.53 1,232.46 1,818.70
Update.SingleDocFieldAtOffset 2,558.10 3,043.63 2,242.28 2,896.44 3,134.77 2,981.63 1,959.95 3,099.88
Update.UniqueIndex 2,020.92 1,941.97 1,718.29 1,947.41 2,038.72 2,016.82 1,320.24 1,998.20
Update.UniqueIndexCompoundReverse 1,979.27 1,975.46 1,792.66 1,883.88 2,030.66 1,921.79 1,622.01 2,008.03
8 Threads
Scenario
Aggregation.FindProjectionDottedField.Indexed 3,974.20 2,329.76 3,814.17 3,663.60 3,852.74 3,847.29 2,936.56 813.64
Aggregation.FindProjectionThreeFieldsCovered 3,775.84 3,111.84 3,494.03 3,626.39 3,768.70 3,843.68 2,984.58 3,759.98
Aggregation.IntNonIdFindOne 3,853.08 2,732.80 3,328.46 3,715.43 3,513.46 3,659.96 3,908.16 3,992.78
Aggregation.IntNonIdFindOneProjection 3,841.72 2,754.63 3,681.43 3,815.08 3,754.82 3,769.57 2,877.03 4,017.52
Aggregation.IntNonIdFindOneProjectionCovered 3,856.33 2,745.33 3,878.56 3,672.13 3,630.65 3,646.17 3,786.38 3,946.62
Aggregation.ProjectExclude_LargeArray 3.59 4.43 2.69 108.67 101.91 87.29 2,055.29 2,021.65
Aggregation.RegexPrefixFindOne 1,842.96 756.33 3,898.38 3,782.72 3,873.14 3,766.02 3,615.20 3,977.68
Aggregation.TwoInts 790.63 4,445.10 6,060.39 5,943.96 6,206.00 6,300.17 4,944.48 6,746.62
Insert.BigKeyIndex 507.10 527.92 492.92 530.15 547.38 480.06 495.26 526.31
Insert.Empty 6,902.72 3,212.14 3,789.47 4,026.99 6,842.70 6,386.68 6,486.69 3,849.80
Insert.EmptyCapped 6,367.27 4,327.08 3,895.02 4,138.99 5,777.43 5,976.81 5,756.65 2,057.95
Insert.EmptyCapped.SeqIntID 6,884.21 3,765.63 3,839.41 4,050.44 5,758.66 5,408.32 4,620.49 4,195.75
Insert.IntIDUpsert 3,829.44 2,647.89 3,495.91 3,143.26 3,929.69 3,666.43 3,698.54 3,955.88
Insert.IntVector 2,625.15 1,611.83 2,102.50 2,177.62 2,047.50 2,348.75 2,180.48 2,802.25
Insert.JustID 6,919.37 3,845.52 3,804.54 3,892.86 6,737.31 6,536.40 6,555.86 4,108.09
Insert.JustNum 6,630.92 3,996.72 3,401.50 6,896.94 6,825.86 6,521.51 4,609.95 4,104.46
Insert.JustNumIndexed 4,277.95 4,242.09 3,728.92 6,617.60 6,426.82 6,220.10 5,111.70 3,867.99
Insert.LargeDocVector 151.49 92.55 103.37 105.38 98.86 106.85 100.97 200.48
Insert.MultiIndex.Contested.Rnd 3,481.37 3,798.53 3,486.97 4,044.24 4,022.17 3,618.55 2,276.84 4,053.92
Insert.MultiIndex.Uncontested.Rnd 3,797.72 3,573.95 3,334.24 4,038.65 3,689.33 3,491.64 2,587.15 3,942.25
Insert.MultiKeyIndex.Contested.Rnd 3,767.87 3,869.36 2,773.45 3,981.25 3,370.14 3,938.48 2,521.24 4,043.39
Insert.MultiKeyIndex.Uncontested.Rnd 3,709.84 3,852.68 2,993.68 4,101.03 3,985.70 3,831.98 2,512.39 4,022.62
Insert.SeqIntID.Indexed 6,691.14 3,273.50 3,332.62 6,035.06 6,657.19 6,223.62 5,414.84 4,053.06
Insert.SingleIndex.Contested.Rnd 6,471.25 6,283.17 4,298.95 6,861.99 6,543.15 6,085.86 3,375.15 3,882.89
Insert.SingleIndex.Seq 6,199.83 6,720.84 4,776.02 6,977.37 6,490.10 6,759.82 3,513.89 3,967.25
Insert.SingleIndex.Uncontested.Rnd 3,195.23 3,806.27 2,945.79 4,092.47 4,024.94 3,700.46 3,216.19 3,965.95
Insert.UniqueIndex 2,372.41 3,403.40 3,889.42 6,809.33 6,842.90 6,357.36 4,374.27 3,937.22
Insert.UniqueIndexCompound 761.51 2,751.63 3,772.42 4,029.47 3,679.17 3,190.44 2,390.02 4,142.40
Insert.UniqueIndexCompoundReverse 1,420.57 2,807.08 3,916.69 4,039.06 3,977.37 2,631.87 2,567.22 4,074.20
InsertIndexedStringsNonSimpleCollation 757.02 2,721.24 2,606.52 3,939.57 3,650.93 3,649.89 3,063.12 4,134.00
InsertIndexedStringsSimpleCollation 1,345.07 3,103.80 3,607.52 3,850.89 3,858.93 3,617.03 1,835.40 4,160.80
Queries.FindProjectionDottedField.Indexed 3,624.43 2,511.73 3,339.24 3,762.79 3,871.33 3,751.39 2,744.80 4,036.64
Queries.FindProjectionThreeFieldsCovered 3,954.75 1,778.87 3,913.15 3,690.02 3,808.47 3,837.94 2,916.19 4,048.85
Queries.IdentityView.FindProjectionDottedField.Indexed 3,883.18 2,053.99 3,696.76 3,722.48 3,752.61 3,763.63 2,915.34 1,501.70
Queries.IdentityView.FindProjectionThreeFieldsCovered 4,053.92 2,713.60 3,653.73 3,692.23 3,854.50 3,701.34 2,438.46 3,927.97
Queries.IdentityView.IntNonIdFindOne 7,304.73 5,556.55 6,524.06 6,063.76 5,782.80 6,404.60 6,448.25 7,058.97
Queries.IdentityView.IntNonIdFindOneProjection 4,093.35 2,187.75 3,252.80 3,157.17 3,825.77 3,843.34 2,379.09 3,842.97
Queries.IdentityView.IntNonIdFindOneProjectionCovered 3,738.54 2,570.88 3,407.51 3,757.85 3,779.16 3,736.22 3,864.41 3,815.96
Queries.IdentityView.ProjectExclude_LargeArray 4.13 4.44 3.02 113.41 108.85 102.47 1,644.48 2,090.42
Queries.IdentityView.RegexPrefixFindOne 3,789.81 409.12 3,329.72 3,735.46 3,797.82 3,760.35 3,509.94 3,978.95
Queries.IdentityView.TwoInts 2,154.38 5,120.92 4,907.32 5,549.95 6,072.98 6,301.92 6,391.05 6,615.17
Queries.IntNonIdFindOne 6,331.84 3,912.83 2,932.64 6,116.18 6,481.64 5,880.31 6,382.83 6,637.69
Queries.IntNonIdFindOneProjection 3,675.00 2,349.92 3,797.64 3,740.08 3,824.52 3,863.38 2,784.93 4,054.36
Queries.IntNonIdFindOneProjectionCovered 3,814.22 3,268.18 3,300.14 3,739.37 3,784.24 3,881.77 3,598.01 3,988.98
Queries.PartialIndex.AllInFilter.FilteredRange 6,724.57 6,584.15 6,179.55 7,727.25 7,764.65 6,981.67 4,175.13 1,460.80
Queries.PartialIndex.AllInFilter.FullRange 12,720.81 12,926.38 5,573.81 12,879.27 12,775.73 12,819.41 8,192.07 1,453.81
Queries.PartialIndex.FilteredRange 13,004.89 12,630.37 6,290.12 13,151.52 13,320.24 12,586.46 6,355.81 7,576.60
Queries.PartialIndex.FullRange 6,443.27 6,979.87 3,716.03 6,448.59 6,150.79 5,401.97 4,156.13 823.27
Queries.PartialIndex.NonFilteredRange 4,691.05 4,530.44 3,068.72 4,649.39 4,755.82 4,148.56 3,067.17 1,778.74
Queries.ProjectExclude_LargeArray 2,130.96 1,466.20 1,601.94 101.99 105.05 93.76 1,861.07 2,051.74
Queries.RegexPrefixFindOne 3,902.11 1,174.37 3,561.57 3,739.73 3,764.43 3,788.44 3,671.81 4,086.69
Queries.TwoInts 1,729.63 252.22 6,070.65 6,203.02 5,903.36 5,805.31 4,653.69 6,481.44
Remove.IntId 8,679.77 7,664.24 9,586.29 10,228.76 9,676.14 9,484.21 10,170.84 5,720.41
Remove.IntNonIdIndex 5,889.09 3,501.37 6,723.06 6,893.29 6,493.42 6,389.60 6,060.72 6,088.82
Remove.IntNonIdNoIndex 4,045.50 3,798.01 5,154.45 5,144.34 5,008.42 4,794.21 5,026.99 5,213.79
Remove.IntNonIdUniqueIndex 5,927.39 4,406.42 6,767.10 6,651.16 6,596.98 6,544.65 6,345.44 5,959.39
Update.FieldAtOffset 1,814.15 1,922.38 1,741.03 1,755.06 1,738.00 1,802.85 1,535.20 1,913.23
Update.IncFewLargeDoc 3,802.65 3,809.97 3,400.45 3,892.27 3,828.79 3,799.63 2,738.50 3,987.18
Update.IncFewLargeDocLongFields 3,576.40 3,671.24 2,777.34 2,915.66 3,801.78 3,760.61 3,027.71 3,813.54
Update.IncFewSmallDoc 3,759.27 3,763.83 3,663.11 3,831.23 3,766.67 3,774.87 2,169.40 3,950.84
Update.IncFewSmallDocLongFields 3,491.92 3,644.57 2,496.52 3,658.37 3,745.08 3,602.90 2,383.13 3,811.93
Update.IncNoIndex 3,831.64 3,925.51 3,620.47 3,835.07 3,346.24 3,802.30 3,878.32 3,962.30
Update.IncNoIndexUpsert 3,787.79 3,926.64 3,860.42 3,782.07 3,667.67 3,841.29 2,834.02 3,974.26
Update.IncWithIndex 3,771.46 3,938.18 3,625.32 3,921.27 3,882.87 3,867.75 3,318.00 3,952.32
Update.IncWithIndexUpsert 3,845.41 3,884.89 3,675.58 3,892.95 3,837.67 3,785.42 3,231.57 4,014.99
Update.ManyElementsWithinArray 873.53 883.98 603.08 851.66 890.57 888.56 903.66 878.64
Update.MatchedElementWithinArray 3,643.47 3,724.34 2,620.90 3,298.92 3,638.38 3,745.59 3,354.36 3,658.91
Update.SetWithIgnoredIndex.Random 3,767.77 3,820.96 3,791.34 3,833.91 3,934.65 3,833.94 2,432.69 3,979.04
Update.SetWithIgnoredIndex.String 3,870.39 3,905.12 3,776.64 3,868.73 3,785.82 3,828.55 2,589.16 3,701.03
Update.SetWithIndex.Random 3,197.45 3,944.44 3,804.85 3,664.30 3,837.14 3,658.75 2,468.09 3,938.28
Update.SetWithMultiIndex.Random 3,858.74 3,651.27 2,836.02 3,873.88 3,841.65 3,603.18 2,604.45 3,733.51
Update.SetWithMultiIndex.String 2,713.69 2,817.88 2,728.62 2,773.41 2,796.12 2,796.70 1,556.64 2,843.87
Update.SingleDocFieldAtOffset 5,663.20 5,771.71 5,184.62 5,732.85 5,077.04 5,749.83 4,457.62 5,981.02
Update.UniqueIndex 3,873.28 3,926.91 3,085.05 3,806.32 3,957.62 3,865.52 3,640.52 3,948.82
Update.UniqueIndexCompoundReverse 3,718.96 3,842.88 3,008.98 3,721.20 3,875.18 3,833.29 3,304.33 3,910.17
16 Threads
Scenario
Aggregation.FindProjectionDottedField.Indexed 2,268.24 3,809.01 6,233.36 5,742.52 4,018.94 6,120.10 5,798.95 6,551.84
Aggregation.FindProjectionThreeFieldsCovered 6,240.93 5,436.75 6,078.55 5,965.51 4,057.61 6,034.12 6,093.79 6,321.56
Aggregation.IntNonIdFindOne 5,770.60 4,783.06 6,255.62 6,097.52 4,087.09 5,940.96 5,659.98 5,851.13
Aggregation.IntNonIdFindOneProjection 6,213.00 3,725.61 6,101.77 5,916.26 4,069.36 5,928.22 6,191.77 6,306.03
Aggregation.IntNonIdFindOneProjectionCovered 5,710.96 5,389.57 6,078.00 5,835.11 3,868.68 6,050.09 5,911.81 6,327.62
Aggregation.ProjectExclude_LargeArray 3.55 3.75 2.66 63.65 51.07 60.71 2,403.11 2,656.95
Aggregation.RegexPrefixFindOne 6,462.77 3,887.88 6,299.52 5,983.17 4,374.15 6,150.46 6,218.88 1,270.57
Aggregation.TwoInts 8,152.82 5,922.57 8,649.13 7,205.53 5,765.19 8,175.49 8,398.47 7,009.04
Insert.BigKeyIndex 512.42 523.40 469.78 540.45 531.44 547.73 496.85 515.76
Insert.Empty 9,212.58 5,056.48 8,223.45 8,974.76 8,210.68 8,344.94 8,170.69 7,905.01
Insert.EmptyCapped 8,614.45 6,696.03 8,182.35 8,416.89 7,389.78 7,626.27 6,973.56 8,017.76
Insert.EmptyCapped.SeqIntID 7,547.40 7,553.43 7,863.44 8,663.26 7,149.40 6,841.70 7,004.71 7,237.96
Insert.IntIDUpsert 5,910.03 3,893.74 5,808.75 6,181.19 6,004.68 6,097.64 6,208.95 7,519.04
Insert.IntVector 4,436.07 3,649.46 3,591.44 3,942.68 3,748.68 3,839.73 3,907.23 4,950.53
Insert.JustID 8,669.34 7,403.49 7,904.03 8,188.08 8,208.81 8,323.38 8,580.73 7,595.80
Insert.JustNum 8,531.05 5,130.49 7,766.85 8,606.75 8,234.00 8,127.51 8,878.77 7,867.75
Insert.JustNumIndexed 6,653.86 8,228.92 7,537.28 8,680.33 8,024.32 8,221.07 8,729.19 7,811.05
Insert.LargeDocVector 32.06 103.09 103.45 107.70 100.52 103.36 103.51 190.45
Insert.MultiIndex.Contested.Rnd 5,604.35 5,914.57 5,282.43 6,037.71 6,199.50 5,942.71 3,916.42 6,579.37
Insert.MultiIndex.Uncontested.Rnd 5,699.50 6,330.95 6,436.65 6,508.42 6,088.84 5,847.65 4,632.70 6,585.47
Insert.MultiKeyIndex.Contested.Rnd 6,265.60 5,948.19 4,553.25 6,375.62 6,278.23 6,355.33 4,160.08 6,337.13
Insert.MultiKeyIndex.Uncontested.Rnd 5,800.14 6,130.63 4,193.99 5,521.26 5,560.91 6,248.66 4,240.02 6,375.82
Insert.SeqIntID.Indexed 8,961.74 6,396.88 7,083.87 8,286.25 7,872.46 8,401.58 8,756.09 7,259.40
Insert.SingleIndex.Contested.Rnd 7,992.88 7,764.45 6,737.31 8,346.75 8,914.56 8,248.83 5,671.22 6,647.94
Insert.SingleIndex.Seq 8,407.15 8,532.29 7,216.85 8,583.43 8,780.40 8,653.36 5,027.00 6,819.42
Insert.SingleIndex.Uncontested.Rnd 6,162.11 6,302.31 4,772.38 6,101.36 6,364.27 6,261.44 4,257.60 6,751.40
Insert.UniqueIndex 6,560.32 7,840.90 7,629.72 8,847.40 8,097.12 8,397.22 8,533.80 7,878.45
Insert.UniqueIndexCompound 5,383.08 4,069.56 6,234.21 6,268.86 6,185.33 5,680.87 4,963.13 7,615.32
Insert.UniqueIndexCompoundReverse 2,512.59 5,927.50 6,216.04 6,014.65 6,371.94 6,058.43 4,702.57 7,656.48
InsertIndexedStringsNonSimpleCollation 5,012.87 3,874.69 5,813.25 6,300.02 6,374.53 5,578.35 4,922.43 7,862.98
InsertIndexedStringsSimpleCollation 4,459.98 4,328.26 5,902.36 6,116.25 6,129.90 5,821.99 4,059.61 7,560.15
Queries.FindProjectionDottedField.Indexed 3,064.18 4,348.22 6,253.54 6,148.49 4,228.22 6,161.60 5,873.60 6,634.76
Queries.FindProjectionThreeFieldsCovered 6,425.19 4,666.39 6,202.28 6,007.46 4,001.41 5,928.46 6,202.90 5,531.55
Queries.IdentityView.FindProjectionDottedField.Indexed 1,597.82 4,829.71 6,305.97 5,974.98 3,815.96 6,220.15 6,343.42 6,854.90
Queries.IdentityView.FindProjectionThreeFieldsCovered 6,245.71 4,050.85 5,947.19 5,806.52 3,887.34 5,942.14 6,167.18 6,489.94
Queries.IdentityView.IntNonIdFindOne 9,045.08 5,542.77 8,817.97 7,577.58 6,690.65 8,424.02 8,680.40 6,850.27
Queries.IdentityView.IntNonIdFindOneProjection 6,499.19 3,911.64 6,097.71 5,935.35 4,432.02 5,954.25 6,386.46 6,928.09
Queries.IdentityView.IntNonIdFindOneProjectionCovered 6,380.31 4,247.06 6,065.30 6,057.21 4,431.99 6,172.36 6,174.28 6,754.21
Queries.IdentityView.ProjectExclude_LargeArray 3.49 3.65 2.82 52.29 80.16 51.26 2,450.18 2,599.24
Queries.IdentityView.RegexPrefixFindOne 6,401.56 4,479.26 6,215.81 5,734.38 3,906.51 6,206.84 6,241.34 2,327.95
Queries.IdentityView.TwoInts 8,920.11 5,627.40 8,707.28 7,759.11 6,337.36 8,521.26 8,697.84 6,799.04
Queries.IntNonIdFindOne 8,275.69 668.14 8,425.97 8,020.84 5,048.23 8,652.21 8,663.66 6,759.52
Queries.IntNonIdFindOneProjection 6,238.42 4,513.72 6,168.98 6,057.19 3,820.76 6,087.54 6,030.32 6,674.99
Queries.IntNonIdFindOneProjectionCovered 6,274.50 3,616.14 6,222.98 6,087.49 5,066.53 6,149.71 6,119.86 6,572.13
Queries.PartialIndex.AllInFilter.FilteredRange 11,679.64 11,354.90 10,959.74 12,308.58 11,918.71 11,862.06 7,873.03 13,251.53
Queries.PartialIndex.AllInFilter.FullRange 16,647.94 15,085.80 15,551.04 16,798.04 16,648.79 16,924.29 10,629.73 13,523.61
Queries.PartialIndex.FilteredRange 15,835.41 15,234.96 14,047.65 17,023.15 16,934.38 16,756.73 12,400.98 13,370.99
Queries.PartialIndex.FullRange 9,816.05 9,531.88 8,290.68 9,358.33 9,043.47 7,809.06 7,132.63 8,737.22
Queries.PartialIndex.NonFilteredRange 7,917.54 8,036.37 6,862.52 7,692.94 6,532.21 6,054.01 5,125.70 8,788.57
Queries.ProjectExclude_LargeArray 2,771.19 2,066.90 2,038.63 84.96 60.67 48.58 2,640.35 2,667.75
Queries.RegexPrefixFindOne 6,255.63 5,515.36 6,233.94 5,950.09 4,223.26 6,317.36 6,338.60 2,479.81
Queries.TwoInts 8,090.58 4,964.69 8,714.63 7,593.34 5,562.74 8,494.55 8,306.38 5,238.30
Remove.IntId 2,321.03 9,018.91 12,972.18 12,703.89 10,130.68 12,364.90 9,458.04 12,226.17
Remove.IntNonIdIndex 1,512.08 9,211.40 11,204.29 11,357.01 11,322.52 11,247.42 9,468.27 11,202.22
Remove.IntNonIdNoIndex 2,423.65 4,889.45 9,600.34 9,633.84 9,599.44 8,935.66 8,109.97 9,429.73
Remove.IntNonIdUniqueIndex 9,209.19 5,297.17 11,367.54 11,486.13 11,358.91 11,012.77 8,257.02 11,435.45
Update.FieldAtOffset 2,889.96 3,055.16 2,809.03 2,679.78 2,702.82 2,801.44 2,200.13 3,408.60
Update.IncFewLargeDoc 6,029.52 6,013.99 5,489.09 5,972.71 6,050.02 5,997.90 4,089.03 6,018.12
Update.IncFewLargeDocLongFields 5,887.58 5,988.83 3,732.78 5,890.07 5,081.43 5,931.31 4,015.19 6,083.37
Update.IncFewSmallDoc 6,026.41 6,115.95 5,997.53 5,700.56 5,957.73 5,994.89 3,128.15 5,698.04
Update.IncFewSmallDocLongFields 5,893.05 5,968.93 4,955.41 6,046.87 5,879.81 5,981.52 3,622.15 5,634.18
Update.IncNoIndex 6,239.42 6,194.84 4,667.11 5,000.86 5,011.31 6,116.75 4,739.13 5,606.43
Update.IncNoIndexUpsert 6,154.58 6,167.01 5,574.71 6,033.96 5,392.56 5,963.98 5,544.68 6,306.17
Update.IncWithIndex 6,047.55 6,273.32 4,702.06 5,352.71 5,474.88 6,224.70 3,561.33 6,317.22
Update.IncWithIndexUpsert 6,042.66 6,247.27 5,084.17 6,152.90 5,437.46 6,220.47 4,312.69 6,178.67
Update.ManyElementsWithinArray 1,003.69 1,053.20 1,452.59 720.07 997.94 803.39 1,038.79 1,064.54
Update.MatchedElementWithinArray 5,575.73 5,548.69 4,119.40 5,998.30 5,704.66 5,719.65 3,275.16 5,778.47
Update.SetWithIgnoredIndex.Random 5,983.11 5,941.61 5,693.82 5,392.91 6,031.84 6,057.73 4,496.05 6,496.16
Update.SetWithIgnoredIndex.String 6,093.58 6,241.64 6,252.20 5,520.57 5,953.45 6,079.83 4,175.50 6,412.12
Update.SetWithIndex.Random 6,223.90 6,145.28 4,153.65 6,022.91 6,184.04 6,276.41 4,208.45 6,531.03
Update.SetWithMultiIndex.Random 6,135.82 6,211.07 5,988.63 6,122.36 5,898.44 6,095.18 3,910.60 6,415.47
Update.SetWithMultiIndex.String 4,139.77 4,097.18 4,113.24 4,086.66 4,140.62 4,221.21 3,242.07 1,402.13
Update.SingleDocFieldAtOffset 9,334.96 9,210.83 8,702.74 9,465.89 9,408.56 9,202.37 8,281.44 9,324.42
Update.UniqueIndex 5,787.61 6,282.54 5,967.15 6,752.86 6,216.44 6,165.37 4,111.89 6,417.95
Update.UniqueIndexCompoundReverse 5,895.15 6,195.69 6,014.30 6,311.69 6,120.61 6,229.54 5,391.47 6,335.64

Conclusion

I’ll leave the final judgment to you.

That’s because one of the ideas behind using different numbers of threads was to allow those with limited resources to gain a further understanding of what they can expect from Mongo in that scenario.

It is nearly impossible to draw a conclusion from all those tests and express it in a single observation. So, take your time, examine the data and methodology more closely, and feel free to share your thoughts in the comments section below.

That being said, a few overall considerations can be shared.

In my opinion, it’s not.

If we look at the core component, such as the WiredTiger engine, it has changed drastically to accommodate all the new features and hardening around the product that you like; comparing them at this point is like comparing different products.

Still, those changes shouldn’t be used to support performance regressions over new releases. Even though it isn’t fair to compare both products, you are your own benchmark; and one thing that we really know is that users don’t accept being pushed around, especially when it’s related to losing performance.

Per the releases of the blog posts from the engineering team (1, 2, 3), they were aware of that, and the approach has changed for MongoDB 8:

[..] For instance, if any commit would regress a benchmark by more than 5% for our most important workloads, we would revert the commit. However, this threshold does not detect regressions of 0.1%, and there are thousands of commits per release (e.g., more than 9000 in MongoDB 8.0).

During the release of MongoDB 7.0, we started to take this gradual accumulation of performance loss by tiny regressions of release over release regressions seriously, so we changed the rules of the game. We decided we could not ship MongoDB 7.0 unless it at least matched MongoDB 6.0’s performance on the most important benchmarks.

It’s debatable whether 7.0 has the same performance as MongoDB 6.0, either based on the above tests or on personal experience after working with all those releases.

Still, there is one thing that this study and the engineer’s notes have in common 

Please note that this study doesn’t cover areas such as resource consumption, which is a great candidate for a separate study and posts.

But at this point, my personal recommendation is to upgrade to the 8.0 release as soon as possible to take advantage of those improvements.

Another final observation and a fun fact from this study is that if we remove MongoDB 8.0 from the results, we can see that MongoDB 3.6 is fighting for the second most performant release in this benchmark test, having consistent and great results across the board.

Let me know your thoughts in the comments below, or feel free to reach out to me on LinkedIn.

See ya!

References:

  1. MongoDB 8.0: Raising the Bar

  2. MongoDB 8.0: Eating Our Own Dog Food

  3. MongoDB 8.0: Improving Performance, Avoiding Regressions

Previous
Downgrading MongoDB 8.0 to 7.0
Next
Benchmarking MongoDB from 3.6 to 8.0 - Part 1