github.com/cockroachdb/pebble@v0.0.0-20231214172447-ab4952c5f87b/testdata/manual_compaction_multilevel (about) 1 # This set of tests validates that manually executed multi level compactions work 2 # The multilevel compaction tests mainly live in 3 # /testdata/compaction_setup_inputs_multilevel_write_amp 4 5 # A vanilla multi level compaction 6 define level-max-bytes=(L2 : 5) auto-compactions=off 7 L1 8 a.SET.3:v b.SET.2:v 9 L2 10 a.SET.2:v c.SET.4:v 11 L3 12 c.SET.3:v d.SET.2:v 13 L4 14 c.SET.2:v d.SET.1:v 15 ---- 16 1: 17 000004:[a#3,SET-b#2,SET] 18 2: 19 000005:[a#2,SET-c#4,SET] 20 3: 21 000006:[c#3,SET-d#2,SET] 22 4: 23 000007:[c#2,SET-d#1,SET] 24 25 compact a-b L1 26 ---- 27 3: 28 000008:[a#3,SET-d#2,SET] 29 4: 30 000007:[c#2,SET-d#1,SET] 31 32 # Conduct a multi level compaction with no output level files 33 define level-max-bytes=(L2 : 5) auto-compactions=off 34 L1 35 a.SET.3:v b.SET.2:v 36 L2 37 a.SET.2:v c.SET.4:v 38 L4 39 c.SET.2:v d.SET.1:v 40 ---- 41 1: 42 000004:[a#3,SET-b#2,SET] 43 2: 44 000005:[a#2,SET-c#4,SET] 45 4: 46 000006:[c#2,SET-d#1,SET] 47 48 compact a-b L1 49 ---- 50 3: 51 000007:[a#3,SET-c#4,SET] 52 4: 53 000006:[c#2,SET-d#1,SET] 54 55 # No multilevel compaction because a move to L2 results in less writeamp than the ML compaction 56 # which includes the file in L3. 57 define level-max-bytes=(L2 : 5) auto-compactions=off 58 L1 59 a.SET.3:v b.SET.2:v 60 L3 61 a.SET.2:v c.SET.4:v 62 L4 63 c.SET.2:v d.SET.1:v 64 ---- 65 1: 66 000004:[a#3,SET-b#2,SET] 67 3: 68 000005:[a#2,SET-c#4,SET] 69 4: 70 000006:[c#2,SET-d#1,SET] 71 72 compact a-b L1 73 ---- 74 2: 75 000004:[a#3,SET-b#2,SET] 76 3: 77 000005:[a#2,SET-c#4,SET] 78 4: 79 000006:[c#2,SET-d#1,SET] 80 81 # Conduct a multi input compaction without intermediate or output level, basically a move. 82 define level-max-bytes=(L2 : 5) auto-compactions=off multi-input-level 83 L1 84 a.SET.3:v b.SET.2:v 85 L4 86 c.SET.2:v d.SET.1:v 87 ---- 88 1: 89 000004:[a#3,SET-b#2,SET] 90 4: 91 000005:[c#2,SET-d#1,SET] 92 93 compact a-b L1 94 ---- 95 3: 96 000004:[a#3,SET-b#2,SET] 97 4: 98 000005:[c#2,SET-d#1,SET] 99 100 # Don't conduct a multi level compaction on L0. 101 define level-max-bytes=(L1 : 5) auto-compactions=off multi-input-level 102 L0 103 a.SET.1:v b.SET.2:v 104 L1 105 a.SET.3:v c.SET.4:v 106 L2 107 c.SET.2:v d.SET.2:v 108 ---- 109 0.0: 110 000004:[a#1,SET-b#2,SET] 111 1: 112 000005:[a#3,SET-c#4,SET] 113 2: 114 000006:[c#2,SET-d#2,SET] 115 116 compact a-b L0 117 ---- 118 1: 119 000007:[a#3,SET-c#4,SET] 120 2: 121 000006:[c#2,SET-d#2,SET]