mirror of
https://source.quilibrium.com/quilibrium/ceremonyclient.git
synced 2024-12-27 09:05:18 +00:00
1767 lines
55 KiB
Plaintext
1767 lines
55 KiB
Plaintext
|
|
define
|
|
L0
|
|
000009:a.SET.10-b.SET.10
|
|
000007:c.SET.6-d.SET.8
|
|
000003:e.SET.5-j.SET.7
|
|
----
|
|
file count: 3, sublevels: 1, intervals: 6
|
|
flush split keys(3): [b, d, j]
|
|
0.0: file count: 3, bytes: 768, width (mean, max): 1.0, 1, interval range: [0, 4]
|
|
000009:[a#10,1-b#10,1]
|
|
000007:[c#6,1-d#8,1]
|
|
000003:[e#5,1-j#7,1]
|
|
compacting file count: 0, base compacting intervals: none
|
|
L0.0: a---b c---d e---------------j
|
|
aa bb cc dd ee ff gg hh ii jj
|
|
|
|
in-use-key-ranges
|
|
a-z
|
|
a-c
|
|
aa-cc
|
|
f-g
|
|
e-j
|
|
----
|
|
a-b, c-d, e-j
|
|
a-b, c-d
|
|
a-b, c-d
|
|
e-j
|
|
e-j
|
|
|
|
define
|
|
L0
|
|
000009:a.SET.10-b.SET.10
|
|
000007:b.SET.6-j.SET.8
|
|
000003:e.SET.5-j.SET.7
|
|
----
|
|
file count: 3, sublevels: 3, intervals: 5
|
|
flush split keys(2): [b, j]
|
|
0.2: file count: 1, bytes: 256, width (mean, max): 2.0, 2, interval range: [0, 1]
|
|
000009:[a#10,1-b#10,1]
|
|
0.1: file count: 1, bytes: 256, width (mean, max): 3.0, 3, interval range: [1, 3]
|
|
000007:[b#6,1-j#8,1]
|
|
0.0: file count: 1, bytes: 256, width (mean, max): 1.0, 1, interval range: [3, 3]
|
|
000003:[e#5,1-j#7,1]
|
|
compacting file count: 0, base compacting intervals: none
|
|
L0.2: a---b
|
|
L0.1: b------------------------j
|
|
L0.0: e---------------j
|
|
aa bb cc dd ee ff gg hh ii jj
|
|
|
|
in-use-key-ranges
|
|
a-z
|
|
a-b
|
|
a-aa
|
|
b-bb
|
|
b-j
|
|
j-j
|
|
----
|
|
a-j
|
|
a-j
|
|
a-b
|
|
b-j
|
|
b-j
|
|
e-j
|
|
|
|
define no_initialize
|
|
L0.2
|
|
000009:a.SET.10-b.SET.10
|
|
L0.1
|
|
000003:e.SET.5-j.SET.7
|
|
L0.0
|
|
000007:b.SET.6-j.SET.8
|
|
----
|
|
file count: 3, sublevels: 3, intervals: 0
|
|
flush split keys(0): []
|
|
0.2: file count: 1, bytes: 256, width (mean, max): 1.0, 1, interval range: [0, 0]
|
|
000009:[a#10,1-b#10,1]
|
|
0.1: file count: 1, bytes: 256, width (mean, max): 1.0, 1, interval range: [0, 0]
|
|
000003:[e#5,1-j#7,1]
|
|
0.0: file count: 1, bytes: 256, width (mean, max): 1.0, 1, interval range: [0, 0]
|
|
000007:[b#6,1-j#8,1]
|
|
compacting file count: 0, base compacting intervals: none
|
|
L0.2: a---b
|
|
L0.1: e---------------j
|
|
L0.0: b------------------------j
|
|
aa bb cc dd ee ff gg hh ii jj
|
|
|
|
l0-check-ordering
|
|
----
|
|
OK
|
|
|
|
define no_initialize
|
|
L0.1
|
|
000009:a.SET.10-b.SET.10
|
|
L0.0
|
|
000007:b.SET.6-j.SET.8
|
|
000003:e.SET.5-j.SET.7
|
|
----
|
|
file count: 3, sublevels: 2, intervals: 0
|
|
flush split keys(0): []
|
|
0.1: file count: 1, bytes: 256, width (mean, max): 1.0, 1, interval range: [0, 0]
|
|
000009:[a#10,1-b#10,1]
|
|
0.0: file count: 2, bytes: 512, width (mean, max): 1.0, 1, interval range: [0, 0]
|
|
000007:[b#6,1-j#8,1]
|
|
000003:[e#5,1-j#7,1]
|
|
compacting file count: 0, base compacting intervals: none
|
|
L0.1: a---b
|
|
L0.0: b------------------------j e---j
|
|
aa bb cc dd ee ff gg hh ii jj
|
|
|
|
l0-check-ordering
|
|
----
|
|
L0.0 files 000007 and 000003 have overlapping ranges: [b#6,SET-j#8,SET] vs [e#5,SET-j#7,SET]
|
|
|
|
define
|
|
L0
|
|
000001:a.SET.2-b.SET.3
|
|
000002:c.SET.3-d.SET.5
|
|
000003:e.SET.5-f.SET.7
|
|
000005:f.SET.6-h.SET.9
|
|
000006:f.SET.4-g.SET.5
|
|
000009:f.SET.10-i.SET.10
|
|
000010:f.SET.11-g.SET.11
|
|
L6
|
|
000007:a.SET.0-f.SET.0
|
|
000008:g.SET.0-s.SET.0
|
|
----
|
|
file count: 7, sublevels: 5, intervals: 10
|
|
flush split keys(3): [d, f, g]
|
|
0.4: file count: 1, bytes: 256, width (mean, max): 2.0, 2, interval range: [5, 6]
|
|
000010:[f#11,1-g#11,1]
|
|
0.3: file count: 1, bytes: 256, width (mean, max): 4.0, 4, interval range: [5, 8]
|
|
000009:[f#10,1-i#10,1]
|
|
0.2: file count: 1, bytes: 256, width (mean, max): 3.0, 3, interval range: [5, 7]
|
|
000005:[f#6,1-h#9,1]
|
|
0.1: file count: 1, bytes: 256, width (mean, max): 2.0, 2, interval range: [4, 5]
|
|
000003:[e#5,1-f#7,1]
|
|
0.0: file count: 3, bytes: 768, width (mean, max): 1.3, 2, interval range: [0, 6]
|
|
000001:[a#2,1-b#3,1]
|
|
000002:[c#3,1-d#5,1]
|
|
000006:[f#4,1-g#5,1]
|
|
compacting file count: 0, base compacting intervals: none
|
|
L0.4: f---g
|
|
L0.3: f---------i
|
|
L0.2: f------h
|
|
L0.1: e---f
|
|
L0.0: a---b c---d f---g
|
|
L6: a---------------f g------------------------------------s
|
|
aa bb cc dd ee ff gg hh ii jj kk ll mm nn oo pp qq rr ss
|
|
|
|
max-depth-after-ongoing-compactions
|
|
----
|
|
5
|
|
|
|
pick-base-compaction min_depth=3
|
|
----
|
|
compaction picked with stack depth reduction 5
|
|
000006,000003,000005,000009,000010,000001,000002
|
|
seed interval: f-f
|
|
L0.4: f+++g
|
|
L0.3: f+++++++++i
|
|
L0.2: f++++++h
|
|
L0.1: e+++f
|
|
L0.0: a+++b c+++d f+++g
|
|
L6: a---------------f g------------------------------------s
|
|
aa bb cc dd ee ff gg hh ii jj kk ll mm nn oo pp qq rr ss
|
|
|
|
# SSTables 000001 and 000002 are optional additions to the above compaction, as they
|
|
# overlap with base files that overlap with L0 files in the seed interval.
|
|
# Marking 0002 as compacting should be enough to exclude both from the
|
|
# chosen compaction.
|
|
|
|
in-use-key-ranges
|
|
a-z
|
|
----
|
|
a-b, c-d, e-i
|
|
|
|
define
|
|
L0
|
|
000001:a.SET.2-b.SET.3
|
|
000002:c.SET.3-d.SET.5 intra_l0_compacting
|
|
000003:e.SET.5-f.SET.7
|
|
000005:f.SET.6-h.SET.9
|
|
000006:f.SET.4-g.SET.5
|
|
000009:f.SET.10-i.SET.10
|
|
000010:f.SET.11-g.SET.11
|
|
L6
|
|
000007:a.SET.0-f.SET.0
|
|
000008:g.SET.0-s.SET.0
|
|
----
|
|
file count: 7, sublevels: 5, intervals: 10
|
|
flush split keys(3): [d, f, g]
|
|
0.4: file count: 1, bytes: 256, width (mean, max): 2.0, 2, interval range: [5, 6]
|
|
000010:[f#11,1-g#11,1]
|
|
0.3: file count: 1, bytes: 256, width (mean, max): 4.0, 4, interval range: [5, 8]
|
|
000009:[f#10,1-i#10,1]
|
|
0.2: file count: 1, bytes: 256, width (mean, max): 3.0, 3, interval range: [5, 7]
|
|
000005:[f#6,1-h#9,1]
|
|
0.1: file count: 1, bytes: 256, width (mean, max): 2.0, 2, interval range: [4, 5]
|
|
000003:[e#5,1-f#7,1]
|
|
0.0: file count: 3, bytes: 768, width (mean, max): 1.3, 2, interval range: [0, 6]
|
|
000001:[a#2,1-b#3,1]
|
|
000002:[c#3,1-d#5,1]
|
|
000006:[f#4,1-g#5,1]
|
|
compacting file count: 1, base compacting intervals: none
|
|
L0.4: f---g
|
|
L0.3: f---------i
|
|
L0.2: f------h
|
|
L0.1: e---f
|
|
L0.0: a---b c^^^d f---g
|
|
L6: a---------------f g------------------------------------s
|
|
aa bb cc dd ee ff gg hh ii jj kk ll mm nn oo pp qq rr ss
|
|
|
|
|
|
pick-base-compaction min_depth=3
|
|
----
|
|
compaction picked with stack depth reduction 5
|
|
000006,000003,000005,000009,000010
|
|
seed interval: f-f
|
|
L0.4: f+++g
|
|
L0.3: f+++++++++i
|
|
L0.2: f++++++h
|
|
L0.1: e+++f
|
|
L0.0: a---b c^^^d f+++g
|
|
L6: a---------------f g------------------------------------s
|
|
aa bb cc dd ee ff gg hh ii jj kk ll mm nn oo pp qq rr ss
|
|
|
|
# Mark the above compaction as started.
|
|
|
|
update-state-for-compaction files=(000006,000003,000005,000009,000010)
|
|
----
|
|
OK
|
|
|
|
describe
|
|
----
|
|
file count: 7, sublevels: 5, intervals: 10
|
|
flush split keys(3): [d, f, g]
|
|
0.4: file count: 1, bytes: 256, width (mean, max): 2.0, 2, interval range: [5, 6]
|
|
000010:[f#11,1-g#11,1]
|
|
0.3: file count: 1, bytes: 256, width (mean, max): 4.0, 4, interval range: [5, 8]
|
|
000009:[f#10,1-i#10,1]
|
|
0.2: file count: 1, bytes: 256, width (mean, max): 3.0, 3, interval range: [5, 7]
|
|
000005:[f#6,1-h#9,1]
|
|
0.1: file count: 1, bytes: 256, width (mean, max): 2.0, 2, interval range: [4, 5]
|
|
000003:[e#5,1-f#7,1]
|
|
0.0: file count: 3, bytes: 768, width (mean, max): 1.3, 2, interval range: [0, 6]
|
|
000001:[a#2,1-b#3,1]
|
|
000002:[c#3,1-d#5,1]
|
|
000006:[f#4,1-g#5,1]
|
|
compacting file count: 6, base compacting intervals: [4, 9]
|
|
L0.4: fvvvg
|
|
L0.3: fvvvvvvvvvi
|
|
L0.2: fvvvvvvh
|
|
L0.1: evvvf
|
|
L0.0: a---b c^^^d fvvvg
|
|
L6: a---------------f g------------------------------------s
|
|
aa bb cc dd ee ff gg hh ii jj kk ll mm nn oo pp qq rr ss
|
|
|
|
pick-base-compaction min_depth=3
|
|
----
|
|
no compaction picked
|
|
|
|
# Extend one of the SSTables (000009) to the right, and place an SSTable "under"
|
|
# the extension (000011). This adds it to the compaction.
|
|
|
|
define
|
|
L0
|
|
000005:f.SET.6-h.SET.9
|
|
000006:f.SET.4-g.SET.5
|
|
000009:f.SET.10-p.SET.10
|
|
000010:f.SET.11-g.SET.11
|
|
000011:n.SET.8-p.SET.10
|
|
L6
|
|
000007:a.SET.0-f.SET.0
|
|
000008:g.SET.0-s.SET.0
|
|
----
|
|
file count: 5, sublevels: 4, intervals: 5
|
|
flush split keys(2): [g, p]
|
|
0.3: file count: 1, bytes: 256, width (mean, max): 1.0, 1, interval range: [0, 0]
|
|
000010:[f#11,1-g#11,1]
|
|
0.2: file count: 1, bytes: 256, width (mean, max): 4.0, 4, interval range: [0, 3]
|
|
000009:[f#10,1-p#10,1]
|
|
0.1: file count: 1, bytes: 256, width (mean, max): 2.0, 2, interval range: [0, 1]
|
|
000005:[f#6,1-h#9,1]
|
|
0.0: file count: 2, bytes: 512, width (mean, max): 1.0, 1, interval range: [0, 3]
|
|
000006:[f#4,1-g#5,1]
|
|
000011:[n#8,1-p#10,1]
|
|
compacting file count: 0, base compacting intervals: none
|
|
L0.3: f---g
|
|
L0.2: f------------------------------p
|
|
L0.1: f------h
|
|
L0.0: f---g n------p
|
|
L6: a---------------f g------------------------------------s
|
|
aa bb cc dd ee ff gg hh ii jj kk ll mm nn oo pp qq rr ss
|
|
|
|
in-use-key-ranges
|
|
a-z
|
|
----
|
|
f-p
|
|
|
|
pick-base-compaction min_depth=3
|
|
----
|
|
compaction picked with stack depth reduction 4
|
|
000006,000005,000009,000011,000010
|
|
seed interval: f-g
|
|
L0.3: f+++g
|
|
L0.2: f++++++++++++++++++++++++++++++p
|
|
L0.1: f++++++h
|
|
L0.0: f+++g n++++++p
|
|
L6: a---------------f g------------------------------------s
|
|
aa bb cc dd ee ff gg hh ii jj kk ll mm nn oo pp qq rr ss
|
|
|
|
# Set SSTable 000011 which is under/older SSTable 000009 to IsBaseCompacting = true.
|
|
# This should prevent SSTable 000009 from participating in a base compaction.
|
|
|
|
define
|
|
L0
|
|
000005:f.SET.6-h.SET.9
|
|
000006:f.SET.4-g.SET.5
|
|
000009:f.SET.10-p.SET.10
|
|
000010:f.SET.11-g.SET.11
|
|
000011:n.SET.8-p.SET.9 base_compacting
|
|
L6
|
|
000007:a.SET.0-f.SET.0
|
|
000008:g.SET.0-s.SET.0
|
|
----
|
|
file count: 5, sublevels: 4, intervals: 5
|
|
flush split keys(2): [g, p]
|
|
0.3: file count: 1, bytes: 256, width (mean, max): 1.0, 1, interval range: [0, 0]
|
|
000010:[f#11,1-g#11,1]
|
|
0.2: file count: 1, bytes: 256, width (mean, max): 4.0, 4, interval range: [0, 3]
|
|
000009:[f#10,1-p#10,1]
|
|
0.1: file count: 1, bytes: 256, width (mean, max): 2.0, 2, interval range: [0, 1]
|
|
000005:[f#6,1-h#9,1]
|
|
0.0: file count: 2, bytes: 512, width (mean, max): 1.0, 1, interval range: [0, 3]
|
|
000006:[f#4,1-g#5,1]
|
|
000011:[n#8,1-p#9,1]
|
|
compacting file count: 1, base compacting intervals: [3, 4]
|
|
L0.3: f---g
|
|
L0.2: f------------------------------p
|
|
L0.1: f------h
|
|
L0.0: f---g nvvvvvvp
|
|
L6: a---------------f g------------------------------------s
|
|
aa bb cc dd ee ff gg hh ii jj kk ll mm nn oo pp qq rr ss
|
|
|
|
pick-base-compaction min_depth=3
|
|
----
|
|
no compaction picked
|
|
|
|
pick-intra-l0-compaction min_depth=3
|
|
----
|
|
compaction picked with stack depth reduction 4
|
|
000010,000009,000005,000006
|
|
seed interval: f-g
|
|
L0.3: f+++g
|
|
L0.2: f++++++++++++++++++++++++++++++p
|
|
L0.1: f++++++h
|
|
L0.0: f+++g nvvvvvvp
|
|
L6: a---------------f g------------------------------------s
|
|
aa bb cc dd ee ff gg hh ii jj kk ll mm nn oo pp qq rr ss
|
|
|
|
# Raise 000009 to a higher level, so that there's still a stack depth of 3 below
|
|
# it. This should make f-g a candidate for base compaction again.
|
|
|
|
define
|
|
L0
|
|
000005:f.SET.6-h.SET.9
|
|
000006:f.SET.4-g.SET.5
|
|
000009:f.SET.12-p.SET.12
|
|
000010:f.SET.11-g.SET.11
|
|
000011:n.SET.8-p.SET.10 base_compacting
|
|
L6
|
|
000007:a.SET.0-f.SET.0
|
|
000008:g.SET.0-s.SET.0
|
|
----
|
|
file count: 5, sublevels: 4, intervals: 5
|
|
flush split keys(2): [g, p]
|
|
0.3: file count: 1, bytes: 256, width (mean, max): 4.0, 4, interval range: [0, 3]
|
|
000009:[f#12,1-p#12,1]
|
|
0.2: file count: 1, bytes: 256, width (mean, max): 1.0, 1, interval range: [0, 0]
|
|
000010:[f#11,1-g#11,1]
|
|
0.1: file count: 1, bytes: 256, width (mean, max): 2.0, 2, interval range: [0, 1]
|
|
000005:[f#6,1-h#9,1]
|
|
0.0: file count: 2, bytes: 512, width (mean, max): 1.0, 1, interval range: [0, 3]
|
|
000006:[f#4,1-g#5,1]
|
|
000011:[n#8,1-p#10,1]
|
|
compacting file count: 1, base compacting intervals: [3, 4]
|
|
L0.3: f------------------------------p
|
|
L0.2: f---g
|
|
L0.1: f------h
|
|
L0.0: f---g nvvvvvvp
|
|
L6: a---------------f g------------------------------------s
|
|
aa bb cc dd ee ff gg hh ii jj kk ll mm nn oo pp qq rr ss
|
|
|
|
pick-base-compaction min_depth=3
|
|
----
|
|
compaction picked with stack depth reduction 3
|
|
000006,000005,000010
|
|
seed interval: f-g
|
|
L0.3: f------------------------------p
|
|
L0.2: f+++g
|
|
L0.1: f++++++h
|
|
L0.0: f+++g nvvvvvvp
|
|
L6: a---------------f g------------------------------------s
|
|
aa bb cc dd ee ff gg hh ii jj kk ll mm nn oo pp qq rr ss
|
|
|
|
pick-intra-l0-compaction min_depth=3
|
|
----
|
|
compaction picked with stack depth reduction 4
|
|
000009,000010,000005,000006
|
|
seed interval: f-g
|
|
L0.3: f++++++++++++++++++++++++++++++p
|
|
L0.2: f+++g
|
|
L0.1: f++++++h
|
|
L0.0: f+++g nvvvvvvp
|
|
L6: a---------------f g------------------------------------s
|
|
aa bb cc dd ee ff gg hh ii jj kk ll mm nn oo pp qq rr ss
|
|
|
|
max-depth-after-ongoing-compactions
|
|
----
|
|
4
|
|
|
|
# Assume the above base compaction is chosen. This should reduce max depth after
|
|
# ongoing compactions.
|
|
|
|
define
|
|
L0
|
|
000005:f.SET.6-h.SET.9 base_compacting
|
|
000006:f.SET.4-g.SET.5 base_compacting
|
|
000009:f.SET.12-p.SET.12
|
|
000010:f.SET.11-g.SET.11 base_compacting
|
|
000011:n.SET.8-p.SET.10 base_compacting
|
|
L6
|
|
000007:a.SET.0-f.SET.0
|
|
000008:g.SET.0-s.SET.0
|
|
----
|
|
file count: 5, sublevels: 4, intervals: 5
|
|
flush split keys(2): [g, p]
|
|
0.3: file count: 1, bytes: 256, width (mean, max): 4.0, 4, interval range: [0, 3]
|
|
000009:[f#12,1-p#12,1]
|
|
0.2: file count: 1, bytes: 256, width (mean, max): 1.0, 1, interval range: [0, 0]
|
|
000010:[f#11,1-g#11,1]
|
|
0.1: file count: 1, bytes: 256, width (mean, max): 2.0, 2, interval range: [0, 1]
|
|
000005:[f#6,1-h#9,1]
|
|
0.0: file count: 2, bytes: 512, width (mean, max): 1.0, 1, interval range: [0, 3]
|
|
000006:[f#4,1-g#5,1]
|
|
000011:[n#8,1-p#10,1]
|
|
compacting file count: 4, base compacting intervals: [0, 1], [3, 4]
|
|
L0.3: f------------------------------p
|
|
L0.2: fvvvg
|
|
L0.1: fvvvvvvh
|
|
L0.0: fvvvg nvvvvvvp
|
|
L6: a---------------f g------------------------------------s
|
|
aa bb cc dd ee ff gg hh ii jj kk ll mm nn oo pp qq rr ss
|
|
|
|
pick-base-compaction min_depth=3
|
|
----
|
|
no compaction picked
|
|
|
|
pick-intra-l0-compaction min_depth=3
|
|
----
|
|
no compaction picked
|
|
|
|
max-depth-after-ongoing-compactions
|
|
----
|
|
1
|
|
|
|
# Ensure that when 000011 is not base compacting, it's chosen for compactions
|
|
# along with 000009.
|
|
|
|
define
|
|
L0
|
|
000005:f.SET.6-h.SET.9
|
|
000006:f.SET.4-g.SET.5
|
|
000009:f.SET.12-p.SET.12
|
|
000010:f.SET.11-g.SET.11
|
|
000011:n.SET.8-p.SET.10
|
|
L6
|
|
000007:a.SET.0-f.SET.0
|
|
000008:g.SET.0-s.SET.0
|
|
----
|
|
file count: 5, sublevels: 4, intervals: 5
|
|
flush split keys(2): [g, p]
|
|
0.3: file count: 1, bytes: 256, width (mean, max): 4.0, 4, interval range: [0, 3]
|
|
000009:[f#12,1-p#12,1]
|
|
0.2: file count: 1, bytes: 256, width (mean, max): 1.0, 1, interval range: [0, 0]
|
|
000010:[f#11,1-g#11,1]
|
|
0.1: file count: 1, bytes: 256, width (mean, max): 2.0, 2, interval range: [0, 1]
|
|
000005:[f#6,1-h#9,1]
|
|
0.0: file count: 2, bytes: 512, width (mean, max): 1.0, 1, interval range: [0, 3]
|
|
000006:[f#4,1-g#5,1]
|
|
000011:[n#8,1-p#10,1]
|
|
compacting file count: 0, base compacting intervals: none
|
|
L0.3: f------------------------------p
|
|
L0.2: f---g
|
|
L0.1: f------h
|
|
L0.0: f---g n------p
|
|
L6: a---------------f g------------------------------------s
|
|
aa bb cc dd ee ff gg hh ii jj kk ll mm nn oo pp qq rr ss
|
|
|
|
pick-base-compaction min_depth=3
|
|
----
|
|
compaction picked with stack depth reduction 4
|
|
000006,000005,000010,000009,000011
|
|
seed interval: f-g
|
|
L0.3: f++++++++++++++++++++++++++++++p
|
|
L0.2: f+++g
|
|
L0.1: f++++++h
|
|
L0.0: f+++g n++++++p
|
|
L6: a---------------f g------------------------------------s
|
|
aa bb cc dd ee ff gg hh ii jj kk ll mm nn oo pp qq rr ss
|
|
|
|
pick-intra-l0-compaction min_depth=3
|
|
----
|
|
compaction picked with stack depth reduction 4
|
|
000009,000010,000005,000006,000011
|
|
seed interval: f-g
|
|
L0.3: f++++++++++++++++++++++++++++++p
|
|
L0.2: f+++g
|
|
L0.1: f++++++h
|
|
L0.0: f+++g n++++++p
|
|
L6: a---------------f g------------------------------------s
|
|
aa bb cc dd ee ff gg hh ii jj kk ll mm nn oo pp qq rr ss
|
|
|
|
# Don't pick a base compaction if the overlapping Lbase files are marked as
|
|
# compacting.
|
|
|
|
define
|
|
L0
|
|
000005:f.SET.6-h.SET.9
|
|
000006:f.SET.4-g.SET.5
|
|
000009:f.SET.12-p.SET.12
|
|
000010:f.SET.11-g.SET.11
|
|
000011:n.SET.8-p.SET.10
|
|
L6
|
|
000007:a.SET.0-f.SET.0
|
|
000008:g.SET.0-s.SET.0 compacting
|
|
----
|
|
file count: 5, sublevels: 4, intervals: 5
|
|
flush split keys(2): [g, p]
|
|
0.3: file count: 1, bytes: 256, width (mean, max): 4.0, 4, interval range: [0, 3]
|
|
000009:[f#12,1-p#12,1]
|
|
0.2: file count: 1, bytes: 256, width (mean, max): 1.0, 1, interval range: [0, 0]
|
|
000010:[f#11,1-g#11,1]
|
|
0.1: file count: 1, bytes: 256, width (mean, max): 2.0, 2, interval range: [0, 1]
|
|
000005:[f#6,1-h#9,1]
|
|
0.0: file count: 2, bytes: 512, width (mean, max): 1.0, 1, interval range: [0, 3]
|
|
000006:[f#4,1-g#5,1]
|
|
000011:[n#8,1-p#10,1]
|
|
compacting file count: 0, base compacting intervals: none
|
|
L0.3: f------------------------------p
|
|
L0.2: f---g
|
|
L0.1: f------h
|
|
L0.0: f---g n------p
|
|
L6: a---------------f g====================================s
|
|
aa bb cc dd ee ff gg hh ii jj kk ll mm nn oo pp qq rr ss
|
|
|
|
pick-base-compaction min_depth=3
|
|
----
|
|
no compaction picked
|
|
|
|
# Greatly increase the size of SSTable 000009, past 100 << 20. This should make
|
|
# it no longer a candidate for base compaction.
|
|
|
|
define
|
|
L0
|
|
000005:f.SET.6-h.SET.9
|
|
000006:f.SET.4-g.SET.5
|
|
000009:f.SET.12-p.SET.12 size=104859600
|
|
000010:f.SET.11-g.SET.11
|
|
000011:n.SET.8-p.SET.10
|
|
L6
|
|
000007:a.SET.0-f.SET.0
|
|
000008:g.SET.0-s.SET.0
|
|
----
|
|
file count: 5, sublevels: 4, intervals: 5
|
|
flush split keys(4): [g, h, n, p]
|
|
0.3: file count: 1, bytes: 104859600, width (mean, max): 4.0, 4, interval range: [0, 3]
|
|
000009:[f#12,1-p#12,1]
|
|
0.2: file count: 1, bytes: 256, width (mean, max): 1.0, 1, interval range: [0, 0]
|
|
000010:[f#11,1-g#11,1]
|
|
0.1: file count: 1, bytes: 256, width (mean, max): 2.0, 2, interval range: [0, 1]
|
|
000005:[f#6,1-h#9,1]
|
|
0.0: file count: 2, bytes: 512, width (mean, max): 1.0, 1, interval range: [0, 3]
|
|
000006:[f#4,1-g#5,1]
|
|
000011:[n#8,1-p#10,1]
|
|
compacting file count: 0, base compacting intervals: none
|
|
L0.3: f------------------------------p
|
|
L0.2: f---g
|
|
L0.1: f------h
|
|
L0.0: f---g n------p
|
|
L6: a---------------f g------------------------------------s
|
|
aa bb cc dd ee ff gg hh ii jj kk ll mm nn oo pp qq rr ss
|
|
|
|
pick-base-compaction min_depth=3
|
|
----
|
|
compaction picked with stack depth reduction 3
|
|
000006,000005,000010,000011
|
|
seed interval: f-g
|
|
L0.3: f------------------------------p
|
|
L0.2: f+++g
|
|
L0.1: f++++++h
|
|
L0.0: f+++g n++++++p
|
|
L6: a---------------f g------------------------------------s
|
|
aa bb cc dd ee ff gg hh ii jj kk ll mm nn oo pp qq rr ss
|
|
|
|
pick-intra-l0-compaction min_depth=3
|
|
----
|
|
compaction picked with stack depth reduction 4
|
|
000009,000010,000005,000006,000011
|
|
seed interval: f-g
|
|
L0.3: f++++++++++++++++++++++++++++++p
|
|
L0.2: f+++g
|
|
L0.1: f++++++h
|
|
L0.0: f+++g n++++++p
|
|
L6: a---------------f g------------------------------------s
|
|
aa bb cc dd ee ff gg hh ii jj kk ll mm nn oo pp qq rr ss
|
|
|
|
# However, when the size increase is applied to a lower sublevel that is
|
|
# necessary to include to meet the minimum stack depth reduction, we overlook
|
|
# the size difference and choose the file for compaction anyway.
|
|
|
|
define
|
|
L0
|
|
000005:f.SET.6-h.SET.9
|
|
000006:f.SET.4-g.SET.5
|
|
000009:f.SET.12-p.SET.12
|
|
000010:f.SET.11-g.SET.11 size=104859600
|
|
000011:n.SET.8-p.SET.10
|
|
L6
|
|
000007:a.SET.0-f.SET.0
|
|
000008:g.SET.0-s.SET.0
|
|
----
|
|
file count: 5, sublevels: 4, intervals: 5
|
|
flush split keys(2): [g, p]
|
|
0.3: file count: 1, bytes: 256, width (mean, max): 4.0, 4, interval range: [0, 3]
|
|
000009:[f#12,1-p#12,1]
|
|
0.2: file count: 1, bytes: 104859600, width (mean, max): 1.0, 1, interval range: [0, 0]
|
|
000010:[f#11,1-g#11,1]
|
|
0.1: file count: 1, bytes: 256, width (mean, max): 2.0, 2, interval range: [0, 1]
|
|
000005:[f#6,1-h#9,1]
|
|
0.0: file count: 2, bytes: 512, width (mean, max): 1.0, 1, interval range: [0, 3]
|
|
000006:[f#4,1-g#5,1]
|
|
000011:[n#8,1-p#10,1]
|
|
compacting file count: 0, base compacting intervals: none
|
|
L0.3: f------------------------------p
|
|
L0.2: f---g
|
|
L0.1: f------h
|
|
L0.0: f---g n------p
|
|
L6: a---------------f g------------------------------------s
|
|
aa bb cc dd ee ff gg hh ii jj kk ll mm nn oo pp qq rr ss
|
|
|
|
pick-base-compaction min_depth=3
|
|
----
|
|
compaction picked with stack depth reduction 4
|
|
000006,000005,000010,000009,000011
|
|
seed interval: f-g
|
|
L0.3: f++++++++++++++++++++++++++++++p
|
|
L0.2: f+++g
|
|
L0.1: f++++++h
|
|
L0.0: f+++g n++++++p
|
|
L6: a---------------f g------------------------------------s
|
|
aa bb cc dd ee ff gg hh ii jj kk ll mm nn oo pp qq rr ss
|
|
|
|
pick-intra-l0-compaction min_depth=3
|
|
----
|
|
compaction picked with stack depth reduction 4
|
|
000009,000010,000005,000006,000011
|
|
seed interval: f-g
|
|
L0.3: f++++++++++++++++++++++++++++++p
|
|
L0.2: f+++g
|
|
L0.1: f++++++h
|
|
L0.0: f+++g n++++++p
|
|
L6: a---------------f g------------------------------------s
|
|
aa bb cc dd ee ff gg hh ii jj kk ll mm nn oo pp qq rr ss
|
|
|
|
read-amp
|
|
----
|
|
4
|
|
|
|
# In L0.0, SST 000007 is marked as base compacting. There are two SSTs to the left
|
|
# of it in the sublevel, and one to its right. The ones to its left should be
|
|
# chosen by extendCandidateToRectangle.
|
|
|
|
define
|
|
L0
|
|
000004:h.SET.2-j.SET.4
|
|
000005:f.SET.6-h.SET.9
|
|
000006:f.SET.4-g.SET.5
|
|
000007:k.SET.2-l.SET.4 base_compacting
|
|
000009:f.SET.12-p.SET.12
|
|
000010:f.SET.11-g.SET.11
|
|
000011:n.SET.8-p.SET.10
|
|
L6
|
|
000012:a.SET.0-f.SET.0
|
|
000008:g.SET.0-s.SET.0
|
|
----
|
|
file count: 7, sublevels: 4, intervals: 9
|
|
flush split keys(4): [g, h, l, p]
|
|
0.3: file count: 1, bytes: 256, width (mean, max): 8.0, 8, interval range: [0, 7]
|
|
000009:[f#12,1-p#12,1]
|
|
0.2: file count: 1, bytes: 256, width (mean, max): 1.0, 1, interval range: [0, 0]
|
|
000010:[f#11,1-g#11,1]
|
|
0.1: file count: 1, bytes: 256, width (mean, max): 3.0, 3, interval range: [0, 2]
|
|
000005:[f#6,1-h#9,1]
|
|
0.0: file count: 4, bytes: 1024, width (mean, max): 1.2, 2, interval range: [0, 7]
|
|
000006:[f#4,1-g#5,1]
|
|
000004:[h#2,1-j#4,1]
|
|
000007:[k#2,1-l#4,1]
|
|
000011:[n#8,1-p#10,1]
|
|
compacting file count: 1, base compacting intervals: [5, 5]
|
|
L0.3: f------------------------------p
|
|
L0.2: f---g
|
|
L0.1: f------h
|
|
L0.0: f---g h------j kvvvl n------p
|
|
L6: a---------------f g------------------------------------s
|
|
aa bb cc dd ee ff gg hh ii jj kk ll mm nn oo pp qq rr ss
|
|
|
|
pick-intra-l0-compaction min_depth=3
|
|
----
|
|
compaction picked with stack depth reduction 4
|
|
000009,000010,000005,000006,000004
|
|
seed interval: f-g
|
|
L0.3: f++++++++++++++++++++++++++++++p
|
|
L0.2: f+++g
|
|
L0.1: f++++++h
|
|
L0.0: f+++g h++++++j kvvvl n------p
|
|
L6: a---------------f g------------------------------------s
|
|
aa bb cc dd ee ff gg hh ii jj kk ll mm nn oo pp qq rr ss
|
|
|
|
pick-base-compaction min_depth=3
|
|
----
|
|
compaction picked with stack depth reduction 3
|
|
000006,000005,000004,000010
|
|
seed interval: f-g
|
|
L0.3: f------------------------------p
|
|
L0.2: f+++g
|
|
L0.1: f++++++h
|
|
L0.0: f+++g h++++++j kvvvl n------p
|
|
L6: a---------------f g------------------------------------s
|
|
aa bb cc dd ee ff gg hh ii jj kk ll mm nn oo pp qq rr ss
|
|
|
|
|
|
# Now shift the base_compacting marker one SST to the left. But since file 6
|
|
# was already chosen as part of the seed compaction construction, we still
|
|
# prefer to choose it over files 7 and 11.
|
|
|
|
define
|
|
L0
|
|
000004:h.SET.2-j.SET.4 base_compacting
|
|
000005:f.SET.6-h.SET.9
|
|
000006:f.SET.4-g.SET.5
|
|
000007:k.SET.2-l.SET.4
|
|
000009:f.SET.12-p.SET.12
|
|
000010:f.SET.11-g.SET.11
|
|
000011:n.SET.8-p.SET.10
|
|
L6
|
|
000012:a.SET.0-f.SET.0
|
|
000008:g.SET.0-s.SET.0
|
|
----
|
|
file count: 7, sublevels: 4, intervals: 9
|
|
flush split keys(4): [g, h, l, p]
|
|
0.3: file count: 1, bytes: 256, width (mean, max): 8.0, 8, interval range: [0, 7]
|
|
000009:[f#12,1-p#12,1]
|
|
0.2: file count: 1, bytes: 256, width (mean, max): 1.0, 1, interval range: [0, 0]
|
|
000010:[f#11,1-g#11,1]
|
|
0.1: file count: 1, bytes: 256, width (mean, max): 3.0, 3, interval range: [0, 2]
|
|
000005:[f#6,1-h#9,1]
|
|
0.0: file count: 4, bytes: 1024, width (mean, max): 1.2, 2, interval range: [0, 7]
|
|
000006:[f#4,1-g#5,1]
|
|
000004:[h#2,1-j#4,1]
|
|
000007:[k#2,1-l#4,1]
|
|
000011:[n#8,1-p#10,1]
|
|
compacting file count: 1, base compacting intervals: [2, 3]
|
|
L0.3: f------------------------------p
|
|
L0.2: f---g
|
|
L0.1: f------h
|
|
L0.0: f---g hvvvvvvj k---l n------p
|
|
L6: a---------------f g------------------------------------s
|
|
aa bb cc dd ee ff gg hh ii jj kk ll mm nn oo pp qq rr ss
|
|
|
|
pick-intra-l0-compaction min_depth=3
|
|
----
|
|
compaction picked with stack depth reduction 4
|
|
000009,000010,000005,000006
|
|
seed interval: f-g
|
|
L0.3: f++++++++++++++++++++++++++++++p
|
|
L0.2: f+++g
|
|
L0.1: f++++++h
|
|
L0.0: f+++g hvvvvvvj k---l n------p
|
|
L6: a---------------f g------------------------------------s
|
|
aa bb cc dd ee ff gg hh ii jj kk ll mm nn oo pp qq rr ss
|
|
|
|
# Without any base_compacting markers, all SSTs in the bottom sublevel should
|
|
# be chosen for an intra-L0 compaction.
|
|
|
|
define
|
|
L0
|
|
000004:h.SET.2-j.SET.4
|
|
000005:f.SET.6-h.SET.9
|
|
000006:f.SET.4-g.SET.5
|
|
000007:k.SET.2-l.SET.4
|
|
000009:f.SET.12-p.SET.12
|
|
000010:f.SET.11-g.SET.11
|
|
000011:n.SET.8-p.SET.10
|
|
L6
|
|
000012:a.SET.0-f.SET.0
|
|
000008:g.SET.0-s.SET.0
|
|
----
|
|
file count: 7, sublevels: 4, intervals: 9
|
|
flush split keys(4): [g, h, l, p]
|
|
0.3: file count: 1, bytes: 256, width (mean, max): 8.0, 8, interval range: [0, 7]
|
|
000009:[f#12,1-p#12,1]
|
|
0.2: file count: 1, bytes: 256, width (mean, max): 1.0, 1, interval range: [0, 0]
|
|
000010:[f#11,1-g#11,1]
|
|
0.1: file count: 1, bytes: 256, width (mean, max): 3.0, 3, interval range: [0, 2]
|
|
000005:[f#6,1-h#9,1]
|
|
0.0: file count: 4, bytes: 1024, width (mean, max): 1.2, 2, interval range: [0, 7]
|
|
000006:[f#4,1-g#5,1]
|
|
000004:[h#2,1-j#4,1]
|
|
000007:[k#2,1-l#4,1]
|
|
000011:[n#8,1-p#10,1]
|
|
compacting file count: 0, base compacting intervals: none
|
|
L0.3: f------------------------------p
|
|
L0.2: f---g
|
|
L0.1: f------h
|
|
L0.0: f---g h------j k---l n------p
|
|
L6: a---------------f g------------------------------------s
|
|
aa bb cc dd ee ff gg hh ii jj kk ll mm nn oo pp qq rr ss
|
|
|
|
pick-intra-l0-compaction min_depth=3
|
|
----
|
|
compaction picked with stack depth reduction 4
|
|
000009,000010,000005,000006,000004,000007,000011
|
|
seed interval: f-g
|
|
L0.3: f++++++++++++++++++++++++++++++p
|
|
L0.2: f+++g
|
|
L0.1: f++++++h
|
|
L0.0: f+++g h++++++j k+++l n++++++p
|
|
L6: a---------------f g------------------------------------s
|
|
aa bb cc dd ee ff gg hh ii jj kk ll mm nn oo pp qq rr ss
|
|
|
|
define flush_split_max_bytes=32
|
|
L0
|
|
000001:a.SET.2-e.SET.5 size=64
|
|
000002:c.SET.6-g.SET.8 size=16
|
|
000003:f.SET.9-j.SET.11 size=16
|
|
L6
|
|
000007:a.SET.0-f.SET.0
|
|
000008:g.SET.0-s.SET.0
|
|
----
|
|
file count: 3, sublevels: 3, intervals: 6
|
|
flush split keys(0): []
|
|
0.2: file count: 1, bytes: 16, width (mean, max): 2.0, 2, interval range: [3, 4]
|
|
000003:[f#9,1-j#11,1]
|
|
0.1: file count: 1, bytes: 16, width (mean, max): 3.0, 3, interval range: [1, 3]
|
|
000002:[c#6,1-g#8,1]
|
|
0.0: file count: 1, bytes: 64, width (mean, max): 2.0, 2, interval range: [0, 1]
|
|
000001:[a#2,1-e#5,1]
|
|
compacting file count: 0, base compacting intervals: none
|
|
L0.2: f------------j
|
|
L0.1: c------------g
|
|
L0.0: a------------e
|
|
L6: a---------------f g------------------------------------s
|
|
aa bb cc dd ee ff gg hh ii jj kk ll mm nn oo pp qq rr ss
|
|
|
|
# Check that read amplification is the sublevel height of the tallest key
|
|
# interval, not the overall count of sublevels.
|
|
|
|
read-amp
|
|
----
|
|
2
|
|
|
|
in-use-key-ranges
|
|
a-z
|
|
----
|
|
a-j
|
|
|
|
# The comparison of a cumulative count of interpolated bytes and
|
|
# flushSplitMaxBytes is a <, so even though the cumulative count equals 32 after
|
|
# a-c, we do not emit a flush split key until the end of the next interval, c-e.
|
|
|
|
flush-split-keys
|
|
----
|
|
flush user split keys: none
|
|
|
|
# Reduce flush_split_max_bytes by 1, and there should also be a split key at c.
|
|
|
|
define flush_split_max_bytes=31
|
|
L0
|
|
000001:a.SET.2-e.SET.5 size=64
|
|
000002:c.SET.6-g.SET.8 size=16
|
|
000003:f.SET.9-j.SET.11 size=16
|
|
L6
|
|
000007:a.SET.0-f.SET.0
|
|
000008:g.SET.0-s.SET.0
|
|
----
|
|
file count: 3, sublevels: 3, intervals: 6
|
|
flush split keys(1): [j]
|
|
0.2: file count: 1, bytes: 16, width (mean, max): 2.0, 2, interval range: [3, 4]
|
|
000003:[f#9,1-j#11,1]
|
|
0.1: file count: 1, bytes: 16, width (mean, max): 3.0, 3, interval range: [1, 3]
|
|
000002:[c#6,1-g#8,1]
|
|
0.0: file count: 1, bytes: 64, width (mean, max): 2.0, 2, interval range: [0, 1]
|
|
000001:[a#2,1-e#5,1]
|
|
compacting file count: 0, base compacting intervals: none
|
|
L0.2: f------------j
|
|
L0.1: c------------g
|
|
L0.0: a------------e
|
|
L6: a---------------f g------------------------------------s
|
|
aa bb cc dd ee ff gg hh ii jj kk ll mm nn oo pp qq rr ss
|
|
|
|
flush-split-keys
|
|
----
|
|
flush user split keys: j
|
|
|
|
max-depth-after-ongoing-compactions
|
|
----
|
|
2
|
|
|
|
define flush_split_max_bytes=64
|
|
L0
|
|
000001:a.SET.2-d.SET.5 size=64
|
|
000002:e.SET.6-g.SET.8 size=64
|
|
000003:h.SET.9-j.SET.11 size=16
|
|
L6
|
|
000007:a.SET.0-f.SET.0
|
|
000008:g.SET.0-s.SET.0
|
|
----
|
|
file count: 3, sublevels: 1, intervals: 6
|
|
flush split keys(1): [g]
|
|
0.0: file count: 3, bytes: 144, width (mean, max): 1.0, 1, interval range: [0, 4]
|
|
000001:[a#2,1-d#5,1]
|
|
000002:[e#6,1-g#8,1]
|
|
000003:[h#9,1-j#11,1]
|
|
compacting file count: 0, base compacting intervals: none
|
|
L0.0: a---------d e------g h------j
|
|
L6: a---------------f g------------------------------------s
|
|
aa bb cc dd ee ff gg hh ii jj kk ll mm nn oo pp qq rr ss
|
|
|
|
flush-split-keys
|
|
----
|
|
flush user split keys: g
|
|
|
|
# The calculation for flush split bytes multiplies the specified max bytes
|
|
# parameter with the number of sublevels. In the case below, that should mean
|
|
# a flush split key would not be emitted at d despite the estimated bytes tally
|
|
# exceeding 64 bytes. Instead, it would be emitted when 64 * 2 = 128 bytes have
|
|
# been exceeded.
|
|
|
|
define flush_split_max_bytes=64
|
|
L0
|
|
000001:a.SET.2-d.SET.5 size=64
|
|
000004:d.SET.12-e.SET.12 size=64
|
|
000002:e.SET.6-g.SET.8 size=64
|
|
000003:h.SET.9-j.SET.11 size=16
|
|
L6
|
|
000007:a.SET.0-f.SET.0
|
|
000008:g.SET.0-s.SET.0
|
|
----
|
|
file count: 4, sublevels: 2, intervals: 8
|
|
flush split keys(1): [e]
|
|
0.1: file count: 1, bytes: 64, width (mean, max): 3.0, 3, interval range: [1, 3]
|
|
000004:[d#12,1-e#12,1]
|
|
0.0: file count: 3, bytes: 144, width (mean, max): 1.7, 2, interval range: [0, 6]
|
|
000001:[a#2,1-d#5,1]
|
|
000002:[e#6,1-g#8,1]
|
|
000003:[h#9,1-j#11,1]
|
|
compacting file count: 0, base compacting intervals: none
|
|
L0.1: d---e
|
|
L0.0: a---------d e------g h------j
|
|
L6: a---------------f g------------------------------------s
|
|
aa bb cc dd ee ff gg hh ii jj kk ll mm nn oo pp qq rr ss
|
|
|
|
in-use-key-ranges
|
|
b-b
|
|
dd-e
|
|
dd-i
|
|
dd-h
|
|
dd-j
|
|
dd-s
|
|
----
|
|
a-d
|
|
d-g
|
|
d-g, h-j
|
|
d-g, h-j
|
|
d-g, h-j
|
|
d-g, h-j
|
|
|
|
flush-split-keys
|
|
----
|
|
flush user split keys: e
|
|
|
|
# Ensure that the compaction picker doesn't error out when all seed files are
|
|
# compacting.
|
|
|
|
define
|
|
L0
|
|
000004:h.SET.2-j.SET.4 base_compacting
|
|
000005:f.SET.6-h.SET.9
|
|
000006:f.SET.4-g.SET.5 base_compacting
|
|
000007:k.SET.2-l.SET.4 base_compacting
|
|
000009:f.SET.12-p.SET.12 intra_l0_compacting
|
|
000010:f.SET.11-g.SET.11
|
|
000011:n.SET.8-p.SET.10 base_compacting
|
|
L6
|
|
000012:a.SET.0-f.SET.0
|
|
000008:g.SET.0-s.SET.0
|
|
----
|
|
file count: 7, sublevels: 4, intervals: 9
|
|
flush split keys(4): [g, h, l, p]
|
|
0.3: file count: 1, bytes: 256, width (mean, max): 8.0, 8, interval range: [0, 7]
|
|
000009:[f#12,1-p#12,1]
|
|
0.2: file count: 1, bytes: 256, width (mean, max): 1.0, 1, interval range: [0, 0]
|
|
000010:[f#11,1-g#11,1]
|
|
0.1: file count: 1, bytes: 256, width (mean, max): 3.0, 3, interval range: [0, 2]
|
|
000005:[f#6,1-h#9,1]
|
|
0.0: file count: 4, bytes: 1024, width (mean, max): 1.2, 2, interval range: [0, 7]
|
|
000006:[f#4,1-g#5,1]
|
|
000004:[h#2,1-j#4,1]
|
|
000007:[k#2,1-l#4,1]
|
|
000011:[n#8,1-p#10,1]
|
|
compacting file count: 5, base compacting intervals: [0, 0], [2, 3], [5, 5], [7, 8]
|
|
L0.3: f^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^p
|
|
L0.2: f---g
|
|
L0.1: f------h
|
|
L0.0: fvvvg hvvvvvvj kvvvl nvvvvvvp
|
|
L6: a---------------f g------------------------------------s
|
|
aa bb cc dd ee ff gg hh ii jj kk ll mm nn oo pp qq rr ss
|
|
|
|
pick-base-compaction min_depth=2
|
|
----
|
|
no compaction picked
|
|
|
|
pick-intra-l0-compaction min_depth=2
|
|
----
|
|
no compaction picked
|
|
|
|
# Ensure that base files with largest key set to the rangedel sentinel key are
|
|
# treated as not containing the largest user key. If L0 files containing that
|
|
# user key get added to that compaction, it could trigger a
|
|
# "files have overlapping ranges" error in Lbase as one of the outputs of the
|
|
# compaction would overlap with an Lbase file not in the compaction.
|
|
# Compare the output of the next two calls to PickBaseCompaction below; as the
|
|
# base file's end key is changed to the range deletion sentinel, L0 files
|
|
# overlapping with it are no longer chosen for compaction.
|
|
|
|
define
|
|
L0
|
|
000004:h.SET.2-j.SET.4
|
|
000005:f.SET.6-h.SET.9
|
|
000006:f.SET.4-g.SET.5
|
|
000007:k.SET.2-l.SET.4
|
|
000009:n.SET.12-o.SET.12
|
|
000010:f.SET.11-g.SET.11
|
|
000011:n.SET.8-o.SET.10
|
|
L6
|
|
000001:a.SET.0-o.SET.0
|
|
000008:p.SET.0-s.SET.0
|
|
----
|
|
file count: 7, sublevels: 3, intervals: 9
|
|
flush split keys(4): [g, h, l, o]
|
|
0.2: file count: 1, bytes: 256, width (mean, max): 1.0, 1, interval range: [0, 0]
|
|
000010:[f#11,1-g#11,1]
|
|
0.1: file count: 2, bytes: 512, width (mean, max): 2.0, 3, interval range: [0, 7]
|
|
000005:[f#6,1-h#9,1]
|
|
000009:[n#12,1-o#12,1]
|
|
0.0: file count: 4, bytes: 1024, width (mean, max): 1.2, 2, interval range: [0, 7]
|
|
000006:[f#4,1-g#5,1]
|
|
000004:[h#2,1-j#4,1]
|
|
000007:[k#2,1-l#4,1]
|
|
000011:[n#8,1-o#10,1]
|
|
compacting file count: 0, base compacting intervals: none
|
|
L0.2: f---g
|
|
L0.1: f------h n---o
|
|
L0.0: f---g h------j k---l n---o
|
|
L6: a------------------------------------------o p---------s
|
|
aa bb cc dd ee ff gg hh ii jj kk ll mm nn oo pp qq rr ss
|
|
|
|
pick-base-compaction min_depth=2
|
|
----
|
|
compaction picked with stack depth reduction 3
|
|
000006,000005,000004,000010,000007,000011,000009
|
|
seed interval: f-g
|
|
L0.2: f+++g
|
|
L0.1: f++++++h n+++o
|
|
L0.0: f+++g h++++++j k+++l n+++o
|
|
L6: a------------------------------------------o p---------s
|
|
aa bb cc dd ee ff gg hh ii jj kk ll mm nn oo pp qq rr ss
|
|
|
|
define
|
|
L0
|
|
000004:h.SET.2-j.SET.4
|
|
000005:f.SET.6-h.SET.9
|
|
000006:f.SET.4-g.SET.5
|
|
000007:k.SET.2-l.SET.4
|
|
000009:n.SET.12-o.SET.12
|
|
000010:f.SET.11-g.SET.11
|
|
000011:n.SET.8-o.SET.10
|
|
L6
|
|
000001:a.SET.0-o.RANGEDEL.72057594037927935
|
|
000008:p.SET.0-s.SET.0
|
|
----
|
|
file count: 7, sublevels: 3, intervals: 9
|
|
flush split keys(4): [g, h, l, o]
|
|
0.2: file count: 1, bytes: 256, width (mean, max): 1.0, 1, interval range: [0, 0]
|
|
000010:[f#11,1-g#11,1]
|
|
0.1: file count: 2, bytes: 512, width (mean, max): 2.0, 3, interval range: [0, 7]
|
|
000005:[f#6,1-h#9,1]
|
|
000009:[n#12,1-o#12,1]
|
|
0.0: file count: 4, bytes: 1024, width (mean, max): 1.2, 2, interval range: [0, 7]
|
|
000006:[f#4,1-g#5,1]
|
|
000004:[h#2,1-j#4,1]
|
|
000007:[k#2,1-l#4,1]
|
|
000011:[n#8,1-o#10,1]
|
|
compacting file count: 0, base compacting intervals: none
|
|
L0.2: f---g
|
|
L0.1: f------h n---o
|
|
L0.0: f---g h------j k---l n---o
|
|
L6: a------------------------------------------o p---------s
|
|
aa bb cc dd ee ff gg hh ii jj kk ll mm nn oo pp qq rr ss
|
|
|
|
pick-base-compaction min_depth=2
|
|
----
|
|
compaction picked with stack depth reduction 3
|
|
000006,000005,000004,000010,000007,000011,000009
|
|
seed interval: f-g
|
|
L0.2: f+++g
|
|
L0.1: f++++++h n+++o
|
|
L0.0: f+++g h++++++j k+++l n+++o
|
|
L6: a------------------------------------------o p---------s
|
|
aa bb cc dd ee ff gg hh ii jj kk ll mm nn oo pp qq rr ss
|
|
|
|
in-use-key-ranges
|
|
a-z
|
|
n-o
|
|
----
|
|
f-j, k-l, n-o
|
|
n-o
|
|
|
|
# Ensure that two L0 sstables where one ends at a rangedel sentinel key and
|
|
# the other starts at the same user key occupy the same sublevel.
|
|
|
|
define
|
|
L0
|
|
000004:a.SET.2-d.RANGEDEL.72057594037927935
|
|
000005:d.SET.3-g.SET.5
|
|
L6
|
|
000001:a.SET.0-o.SET.0
|
|
000008:p.SET.0-s.SET.0
|
|
----
|
|
file count: 2, sublevels: 1, intervals: 3
|
|
flush split keys(2): [d, g]
|
|
0.0: file count: 2, bytes: 512, width (mean, max): 1.0, 1, interval range: [0, 1]
|
|
000004:[a#2,1-d#72057594037927935,15]
|
|
000005:[d#3,1-g#5,1]
|
|
compacting file count: 0, base compacting intervals: none
|
|
L0.0: a--------d---------g
|
|
L6: a------------------------------------------o p---------s
|
|
aa bb cc dd ee ff gg hh ii jj kk ll mm nn oo pp qq rr ss
|
|
|
|
in-use-key-ranges
|
|
a-z
|
|
a-g
|
|
b-c
|
|
----
|
|
a-g
|
|
a-g
|
|
a-d
|
|
|
|
define
|
|
L0
|
|
000004:a.SET.2-d.RANGEDEL.72057594037927935
|
|
000005:d.SET.3-g.SET.5
|
|
000006:f.SET.6-i.SET.6
|
|
000007:h.SET.7-m.SET.7
|
|
000009:q.SET.7-r.SET.7
|
|
000010:g.SET.10-i.SET.10
|
|
----
|
|
file count: 6, sublevels: 4, intervals: 10
|
|
flush split keys(4): [f, g, i, r]
|
|
0.3: file count: 1, bytes: 256, width (mean, max): 3.0, 3, interval range: [3, 5]
|
|
000010:[g#10,1-i#10,1]
|
|
0.2: file count: 1, bytes: 256, width (mean, max): 2.0, 2, interval range: [5, 6]
|
|
000007:[h#7,1-m#7,1]
|
|
0.1: file count: 1, bytes: 256, width (mean, max): 4.0, 4, interval range: [2, 5]
|
|
000006:[f#6,1-i#6,1]
|
|
0.0: file count: 3, bytes: 768, width (mean, max): 1.7, 3, interval range: [0, 8]
|
|
000004:[a#2,1-d#72057594037927935,15]
|
|
000005:[d#3,1-g#5,1]
|
|
000009:[q#7,1-r#7,1]
|
|
compacting file count: 0, base compacting intervals: none
|
|
L0.3: g------i
|
|
L0.2: h---------------m
|
|
L0.1: f---------i
|
|
L0.0: a--------d---------g q---r
|
|
aa bb cc dd ee ff gg hh ii jj kk ll mm nn oo pp qq rr
|
|
|
|
in-use-key-ranges
|
|
f-m
|
|
f-n
|
|
f-l
|
|
ff-m
|
|
ff-n
|
|
ff-l
|
|
----
|
|
f-m
|
|
f-m
|
|
f-m
|
|
f-m
|
|
f-m
|
|
f-m
|
|
|
|
in-use-key-ranges
|
|
n-o
|
|
m-q
|
|
l-qq
|
|
----
|
|
.
|
|
i-m, q-r
|
|
i-m, q-r
|
|
|
|
in-use-key-ranges
|
|
a-z
|
|
g-l
|
|
----
|
|
a-m, q-r
|
|
g-m
|
|
|
|
in-use-key-ranges
|
|
a-ff
|
|
a-gg
|
|
a-i
|
|
d-d
|
|
----
|
|
a-g
|
|
a-i
|
|
a-m
|
|
d-g
|
|
|
|
# Same example as above, except we incrementally add the sublevels. The output
|
|
# of in-use-key-ranges must be the same.
|
|
|
|
define
|
|
L0
|
|
000004:a.SET.2-d.RANGEDEL.72057594037927935
|
|
----
|
|
file count: 1, sublevels: 1, intervals: 2
|
|
flush split keys(1): [d]
|
|
0.0: file count: 1, bytes: 256, width (mean, max): 1.0, 1, interval range: [0, 0]
|
|
000004:[a#2,1-d#72057594037927935,15]
|
|
compacting file count: 0, base compacting intervals: none
|
|
L0.0: a---------d
|
|
aa bb cc dd
|
|
|
|
add-l0-files
|
|
000005:d.SET.3-g.SET.5
|
|
----
|
|
file count: 2, sublevels: 1, intervals: 3
|
|
flush split keys(2): [d, g]
|
|
0.0: file count: 2, bytes: 512, width (mean, max): 1.0, 1, interval range: [0, 1]
|
|
000004:[a#2,1-d#72057594037927935,15]
|
|
000005:[d#3,1-g#5,1]
|
|
compacting file count: 0, base compacting intervals: none
|
|
L0.0: a--------d---------g
|
|
aa bb cc dd ee ff gg
|
|
|
|
add-l0-files
|
|
000006:f.SET.6-i.SET.6
|
|
----
|
|
file count: 3, sublevels: 2, intervals: 5
|
|
flush split keys(2): [d, g]
|
|
0.1: file count: 1, bytes: 256, width (mean, max): 2.0, 2, interval range: [2, 3]
|
|
000006:[f#6,1-i#6,1]
|
|
0.0: file count: 2, bytes: 512, width (mean, max): 1.5, 2, interval range: [0, 2]
|
|
000004:[a#2,1-d#72057594037927935,15]
|
|
000005:[d#3,1-g#5,1]
|
|
compacting file count: 0, base compacting intervals: none
|
|
L0.1: f---------i
|
|
L0.0: a--------d---------g
|
|
aa bb cc dd ee ff gg hh ii
|
|
|
|
add-l0-files
|
|
000007:h.SET.7-m.SET.7
|
|
000009:q.SET.8-r.SET.8
|
|
----
|
|
file count: 5, sublevels: 3, intervals: 9
|
|
flush split keys(4): [d, g, i, r]
|
|
0.2: file count: 1, bytes: 256, width (mean, max): 2.0, 2, interval range: [4, 5]
|
|
000007:[h#7,1-m#7,1]
|
|
0.1: file count: 1, bytes: 256, width (mean, max): 3.0, 3, interval range: [2, 4]
|
|
000006:[f#6,1-i#6,1]
|
|
0.0: file count: 3, bytes: 768, width (mean, max): 1.3, 2, interval range: [0, 7]
|
|
000004:[a#2,1-d#72057594037927935,15]
|
|
000005:[d#3,1-g#5,1]
|
|
000009:[q#8,1-r#8,1]
|
|
compacting file count: 0, base compacting intervals: none
|
|
L0.2: h---------------m
|
|
L0.1: f---------i
|
|
L0.0: a--------d---------g q---r
|
|
aa bb cc dd ee ff gg hh ii jj kk ll mm nn oo pp qq rr
|
|
|
|
# The output below should exactly match the output of the second last define.
|
|
|
|
add-l0-files
|
|
000010:g.SET.10-i.SET.10
|
|
----
|
|
file count: 6, sublevels: 4, intervals: 10
|
|
flush split keys(4): [f, g, i, r]
|
|
0.3: file count: 1, bytes: 256, width (mean, max): 3.0, 3, interval range: [3, 5]
|
|
000010:[g#10,1-i#10,1]
|
|
0.2: file count: 1, bytes: 256, width (mean, max): 2.0, 2, interval range: [5, 6]
|
|
000007:[h#7,1-m#7,1]
|
|
0.1: file count: 1, bytes: 256, width (mean, max): 4.0, 4, interval range: [2, 5]
|
|
000006:[f#6,1-i#6,1]
|
|
0.0: file count: 3, bytes: 768, width (mean, max): 1.7, 3, interval range: [0, 8]
|
|
000004:[a#2,1-d#72057594037927935,15]
|
|
000005:[d#3,1-g#5,1]
|
|
000009:[q#8,1-r#8,1]
|
|
compacting file count: 0, base compacting intervals: none
|
|
L0.3: g------i
|
|
L0.2: h---------------m
|
|
L0.1: f---------i
|
|
L0.0: a--------d---------g q---r
|
|
aa bb cc dd ee ff gg hh ii jj kk ll mm nn oo pp qq rr
|
|
|
|
in-use-key-ranges
|
|
f-m
|
|
f-n
|
|
f-l
|
|
ff-m
|
|
ff-n
|
|
ff-l
|
|
----
|
|
f-m
|
|
f-m
|
|
f-m
|
|
f-m
|
|
f-m
|
|
f-m
|
|
|
|
in-use-key-ranges
|
|
n-o
|
|
m-q
|
|
l-qq
|
|
----
|
|
.
|
|
i-m, q-r
|
|
i-m, q-r
|
|
|
|
in-use-key-ranges
|
|
a-z
|
|
g-l
|
|
----
|
|
a-m, q-r
|
|
g-m
|
|
|
|
in-use-key-ranges
|
|
a-ff
|
|
a-gg
|
|
a-i
|
|
d-d
|
|
----
|
|
a-g
|
|
a-i
|
|
a-m
|
|
d-g
|
|
|
|
pick-base-compaction min_depth=3
|
|
----
|
|
compaction picked with stack depth reduction 3
|
|
000005,000006,000010,000007,000004,000009
|
|
seed interval: g-g
|
|
L0.3: g++++++i
|
|
L0.2: h+++++++++++++++m
|
|
L0.1: f+++++++++i
|
|
L0.0: a++++++++d+++++++++g q+++r
|
|
aa bb cc dd ee ff gg hh ii jj kk ll mm nn oo pp qq rr
|
|
|
|
# Adding two overlapping L0 files is supported too, as long as they're disjoint
|
|
# in sequence number ranges.
|
|
|
|
add-l0-files
|
|
000011:b.SET.13-e.SET.15
|
|
000012:c.SET.16-e.SET.17
|
|
----
|
|
file count: 8, sublevels: 4, intervals: 13
|
|
flush split keys(5): [d, e, g, i, r]
|
|
0.3: file count: 1, bytes: 256, width (mean, max): 3.0, 3, interval range: [6, 8]
|
|
000010:[g#10,1-i#10,1]
|
|
0.2: file count: 2, bytes: 512, width (mean, max): 2.0, 2, interval range: [2, 9]
|
|
000012:[c#16,1-e#17,1]
|
|
000007:[h#7,1-m#7,1]
|
|
0.1: file count: 2, bytes: 512, width (mean, max): 3.5, 4, interval range: [1, 8]
|
|
000011:[b#13,1-e#15,1]
|
|
000006:[f#6,1-i#6,1]
|
|
0.0: file count: 3, bytes: 768, width (mean, max): 2.7, 4, interval range: [0, 11]
|
|
000004:[a#2,1-d#72057594037927935,15]
|
|
000005:[d#3,1-g#5,1]
|
|
000009:[q#8,1-r#8,1]
|
|
compacting file count: 0, base compacting intervals: none
|
|
L0.3: g------i
|
|
L0.2: c------e h---------------m
|
|
L0.1: b---------e f---------i
|
|
L0.0: a--------d---------g q---r
|
|
aa bb cc dd ee ff gg hh ii jj kk ll mm nn oo pp qq rr
|
|
|
|
# Multiple sublevels can also be added in one add-l0-files.
|
|
|
|
add-l0-files
|
|
000013:h.SET.18-i.SET.19
|
|
000014:g.SET.20-i.SET.21
|
|
----
|
|
file count: 10, sublevels: 6, intervals: 13
|
|
flush split keys(4): [d, g, h, i]
|
|
0.5: file count: 1, bytes: 256, width (mean, max): 3.0, 3, interval range: [6, 8]
|
|
000014:[g#20,1-i#21,1]
|
|
0.4: file count: 1, bytes: 256, width (mean, max): 1.0, 1, interval range: [8, 8]
|
|
000013:[h#18,1-i#19,1]
|
|
0.3: file count: 1, bytes: 256, width (mean, max): 3.0, 3, interval range: [6, 8]
|
|
000010:[g#10,1-i#10,1]
|
|
0.2: file count: 2, bytes: 512, width (mean, max): 2.0, 2, interval range: [2, 9]
|
|
000012:[c#16,1-e#17,1]
|
|
000007:[h#7,1-m#7,1]
|
|
0.1: file count: 2, bytes: 512, width (mean, max): 3.5, 4, interval range: [1, 8]
|
|
000011:[b#13,1-e#15,1]
|
|
000006:[f#6,1-i#6,1]
|
|
0.0: file count: 3, bytes: 768, width (mean, max): 2.7, 4, interval range: [0, 11]
|
|
000004:[a#2,1-d#72057594037927935,15]
|
|
000005:[d#3,1-g#5,1]
|
|
000009:[q#8,1-r#8,1]
|
|
compacting file count: 0, base compacting intervals: none
|
|
L0.5: g------i
|
|
L0.4: h---i
|
|
L0.3: g------i
|
|
L0.2: c------e h---------------m
|
|
L0.1: b---------e f---------i
|
|
L0.0: a--------d---------g q---r
|
|
aa bb cc dd ee ff gg hh ii jj kk ll mm nn oo pp qq rr
|
|
|
|
# Adding an old L0 file returns an error.
|
|
|
|
add-l0-files
|
|
000015:h.SET.17-i.SET.17
|
|
----
|
|
pebble: L0 sublevel generation optimization cannot be used
|
|
|
|
# The following test cases cover the examples provided in the documentation.
|
|
# NOTE: following initialization, some of the files fall down into lower levels
|
|
# where there is space.
|
|
|
|
# Example 1. No in-progress L0 -> LBase compaction.
|
|
|
|
define
|
|
L0.3
|
|
000011:a.SET.18-d.SET.19
|
|
000012:g.SET.20-j.SET.21
|
|
L0.2
|
|
000009:f.SET.14-j.SET.15
|
|
000010:r.SET.16-t.SET.17
|
|
L0.1
|
|
000007:b.SET.10-d.SET.11
|
|
000008:e.SET.12-j.SET.13
|
|
L0.0
|
|
000003:a.SET.2-d.SET.3
|
|
000004:f.SET.4-j.SET.5
|
|
000005:l.SET.6-o.SET.7
|
|
000006:p.SET.8-x.SET.9
|
|
L6
|
|
000001:a.SET.0-i.SET.0
|
|
000002:m.SET.0-w.SET.0
|
|
----
|
|
file count: 10, sublevels: 4, intervals: 13
|
|
flush split keys(5): [d, g, j, r, t]
|
|
0.3: file count: 1, bytes: 256, width (mean, max): 1.0, 1, interval range: [5, 5]
|
|
000012:[g#20,1-j#21,1]
|
|
0.2: file count: 2, bytes: 512, width (mean, max): 2.0, 2, interval range: [0, 5]
|
|
000011:[a#18,1-d#19,1]
|
|
000009:[f#14,1-j#15,1]
|
|
0.1: file count: 3, bytes: 768, width (mean, max): 1.7, 3, interval range: [1, 10]
|
|
000007:[b#10,1-d#11,1]
|
|
000008:[e#12,1-j#13,1]
|
|
000010:[r#16,1-t#17,1]
|
|
0.0: file count: 4, bytes: 1024, width (mean, max): 2.0, 3, interval range: [0, 11]
|
|
000003:[a#2,1-d#3,1]
|
|
000004:[f#4,1-j#5,1]
|
|
000005:[l#6,1-o#7,1]
|
|
000006:[p#8,1-x#9,1]
|
|
compacting file count: 0, base compacting intervals: none
|
|
L0.3: g---------j
|
|
L0.2: a---------d f------------j
|
|
L0.1: b------d e---------------j r------t
|
|
L0.0: a---------d f------------j l---------o p------------------------x
|
|
L6: a------------------------i m------------------------------w
|
|
aa bb cc dd ee ff gg hh ii jj kk ll mm nn oo pp qq rr ss tt uu vv ww xx
|
|
|
|
pick-base-compaction min_depth=3
|
|
----
|
|
compaction picked with stack depth reduction 4
|
|
000004,000008,000009,000012,000003,000007,000011
|
|
seed interval: g-j
|
|
L0.3: g+++++++++j
|
|
L0.2: a+++++++++d f++++++++++++j
|
|
L0.1: b++++++d e+++++++++++++++j r------t
|
|
L0.0: a+++++++++d f++++++++++++j l---------o p------------------------x
|
|
L6: a------------------------i m------------------------------w
|
|
aa bb cc dd ee ff gg hh ii jj kk ll mm nn oo pp qq rr ss tt uu vv ww xx
|
|
|
|
# Example 2. Left half of the keyspace compacting. Select the "next best"
|
|
# compaction.
|
|
|
|
define
|
|
L0.3
|
|
000011:a.SET.18-d.SET.19 base_compacting
|
|
000012:g.SET.20-j.SET.21 base_compacting
|
|
L0.2
|
|
000009:f.SET.14-j.SET.15 base_compacting
|
|
000010:r.SET.16-t.SET.17
|
|
L0.1
|
|
000007:b.SET.10-d.SET.11 base_compacting
|
|
000008:e.SET.12-j.SET.13 base_compacting
|
|
L0.0
|
|
000003:a.SET.2-d.SET.3 base_compacting
|
|
000004:f.SET.4-j.SET.5 base_compacting
|
|
000005:l.SET.6-o.SET.7
|
|
000006:p.SET.8-x.SET.9
|
|
L6
|
|
000001:a.SET.0-i.SET.0
|
|
000002:m.SET.0-w.SET.0
|
|
----
|
|
file count: 10, sublevels: 4, intervals: 13
|
|
flush split keys(5): [d, g, j, r, t]
|
|
0.3: file count: 1, bytes: 256, width (mean, max): 1.0, 1, interval range: [5, 5]
|
|
000012:[g#20,1-j#21,1]
|
|
0.2: file count: 2, bytes: 512, width (mean, max): 2.0, 2, interval range: [0, 5]
|
|
000011:[a#18,1-d#19,1]
|
|
000009:[f#14,1-j#15,1]
|
|
0.1: file count: 3, bytes: 768, width (mean, max): 1.7, 3, interval range: [1, 10]
|
|
000007:[b#10,1-d#11,1]
|
|
000008:[e#12,1-j#13,1]
|
|
000010:[r#16,1-t#17,1]
|
|
0.0: file count: 4, bytes: 1024, width (mean, max): 2.0, 3, interval range: [0, 11]
|
|
000003:[a#2,1-d#3,1]
|
|
000004:[f#4,1-j#5,1]
|
|
000005:[l#6,1-o#7,1]
|
|
000006:[p#8,1-x#9,1]
|
|
compacting file count: 7, base compacting intervals: [0, 6]
|
|
L0.3: gvvvvvvvvvj
|
|
L0.2: avvvvvvvvvd fvvvvvvvvvvvvj
|
|
L0.1: bvvvvvvd evvvvvvvvvvvvvvvj r------t
|
|
L0.0: avvvvvvvvvd fvvvvvvvvvvvvj l---------o p------------------------x
|
|
L6: a------------------------i m------------------------------w
|
|
aa bb cc dd ee ff gg hh ii jj kk ll mm nn oo pp qq rr ss tt uu vv ww xx
|
|
|
|
pick-base-compaction min_depth=3
|
|
----
|
|
no compaction picked
|
|
|
|
pick-base-compaction min_depth=2
|
|
----
|
|
compaction picked with stack depth reduction 2
|
|
000006,000010,000005
|
|
seed interval: r-t
|
|
L0.3: gvvvvvvvvvj
|
|
L0.2: avvvvvvvvvd fvvvvvvvvvvvvj
|
|
L0.1: bvvvvvvd evvvvvvvvvvvvvvvj r++++++t
|
|
L0.0: avvvvvvvvvd fvvvvvvvvvvvvj l+++++++++o p++++++++++++++++++++++++x
|
|
L6: a------------------------i m------------------------------w
|
|
aa bb cc dd ee ff gg hh ii jj kk ll mm nn oo pp qq rr ss tt uu vv ww xx
|
|
|
|
# Example 3. The same as Example 2, except there is now an additional file in
|
|
# LBase that overlaps with the [l,o] file in L0.0.
|
|
|
|
define
|
|
L0.3
|
|
000011:a.SET.18-d.SET.19 base_compacting
|
|
000012:g.SET.20-j.SET.21 base_compacting
|
|
L0.2
|
|
000009:f.SET.14-j.SET.15 base_compacting
|
|
000010:r.SET.16-t.SET.17
|
|
L0.1
|
|
000007:b.SET.10-d.SET.11 base_compacting
|
|
000008:e.SET.12-j.SET.13 base_compacting
|
|
L0.0
|
|
000003:a.SET.2-d.SET.3 base_compacting
|
|
000004:f.SET.4-j.SET.5 base_compacting
|
|
000005:l.SET.6-o.SET.7
|
|
000006:p.SET.8-x.SET.9
|
|
L6
|
|
000001:a.SET.0-i.SET.0
|
|
000013:j.SET.0-l.SET.0
|
|
000002:m.SET.0-w.SET.0
|
|
----
|
|
file count: 10, sublevels: 4, intervals: 13
|
|
flush split keys(5): [d, g, j, r, t]
|
|
0.3: file count: 1, bytes: 256, width (mean, max): 1.0, 1, interval range: [5, 5]
|
|
000012:[g#20,1-j#21,1]
|
|
0.2: file count: 2, bytes: 512, width (mean, max): 2.0, 2, interval range: [0, 5]
|
|
000011:[a#18,1-d#19,1]
|
|
000009:[f#14,1-j#15,1]
|
|
0.1: file count: 3, bytes: 768, width (mean, max): 1.7, 3, interval range: [1, 10]
|
|
000007:[b#10,1-d#11,1]
|
|
000008:[e#12,1-j#13,1]
|
|
000010:[r#16,1-t#17,1]
|
|
0.0: file count: 4, bytes: 1024, width (mean, max): 2.0, 3, interval range: [0, 11]
|
|
000003:[a#2,1-d#3,1]
|
|
000004:[f#4,1-j#5,1]
|
|
000005:[l#6,1-o#7,1]
|
|
000006:[p#8,1-x#9,1]
|
|
compacting file count: 7, base compacting intervals: [0, 6]
|
|
L0.3: gvvvvvvvvvj
|
|
L0.2: avvvvvvvvvd fvvvvvvvvvvvvj
|
|
L0.1: bvvvvvvd evvvvvvvvvvvvvvvj r------t
|
|
L0.0: avvvvvvvvvd fvvvvvvvvvvvvj l---------o p------------------------x
|
|
L6: a------------------------i j------l m------------------------------w
|
|
aa bb cc dd ee ff gg hh ii jj kk ll mm nn oo pp qq rr ss tt uu vv ww xx
|
|
|
|
pick-base-compaction min_depth=2
|
|
----
|
|
compaction picked with stack depth reduction 2
|
|
000006,000010
|
|
seed interval: r-t
|
|
L0.3: gvvvvvvvvvj
|
|
L0.2: avvvvvvvvvd fvvvvvvvvvvvvj
|
|
L0.1: bvvvvvvd evvvvvvvvvvvvvvvj r++++++t
|
|
L0.0: avvvvvvvvvd fvvvvvvvvvvvvj l---------o p++++++++++++++++++++++++x
|
|
L6: a------------------------i j------l m------------------------------w
|
|
aa bb cc dd ee ff gg hh ii jj kk ll mm nn oo pp qq rr ss tt uu vv ww xx
|
|
|
|
# Example 4. Intra-L0 compactions.
|
|
|
|
define
|
|
L0.3
|
|
000011:a.SET.18-d.SET.19
|
|
000012:g.SET.20-j.SET.21 base_compacting
|
|
L0.2
|
|
000009:f.SET.14-j.SET.15 base_compacting
|
|
000010:r.SET.16-t.SET.17 base_compacting
|
|
L0.1
|
|
000007:b.SET.10-d.SET.11
|
|
000008:e.SET.12-j.SET.13 base_compacting
|
|
L0.0
|
|
000003:a.SET.2-d.SET.3
|
|
000004:f.SET.4-j.SET.5 base_compacting
|
|
000005:l.SET.6-o.SET.7
|
|
000006:p.SET.8-x.SET.9 base_compacting
|
|
L6
|
|
000001:a.SET.0-i.SET.0
|
|
000002:m.SET.0-w.SET.0
|
|
----
|
|
file count: 10, sublevels: 4, intervals: 13
|
|
flush split keys(5): [d, g, j, r, t]
|
|
0.3: file count: 1, bytes: 256, width (mean, max): 1.0, 1, interval range: [5, 5]
|
|
000012:[g#20,1-j#21,1]
|
|
0.2: file count: 2, bytes: 512, width (mean, max): 2.0, 2, interval range: [0, 5]
|
|
000011:[a#18,1-d#19,1]
|
|
000009:[f#14,1-j#15,1]
|
|
0.1: file count: 3, bytes: 768, width (mean, max): 1.7, 3, interval range: [1, 10]
|
|
000007:[b#10,1-d#11,1]
|
|
000008:[e#12,1-j#13,1]
|
|
000010:[r#16,1-t#17,1]
|
|
0.0: file count: 4, bytes: 1024, width (mean, max): 2.0, 3, interval range: [0, 11]
|
|
000003:[a#2,1-d#3,1]
|
|
000004:[f#4,1-j#5,1]
|
|
000005:[l#6,1-o#7,1]
|
|
000006:[p#8,1-x#9,1]
|
|
compacting file count: 6, base compacting intervals: [3, 6], [9, 12]
|
|
L0.3: gvvvvvvvvvj
|
|
L0.2: a---------d fvvvvvvvvvvvvj
|
|
L0.1: b------d evvvvvvvvvvvvvvvj rvvvvvvt
|
|
L0.0: a---------d fvvvvvvvvvvvvj l---------o pvvvvvvvvvvvvvvvvvvvvvvvvx
|
|
L6: a------------------------i m------------------------------w
|
|
aa bb cc dd ee ff gg hh ii jj kk ll mm nn oo pp qq rr ss tt uu vv ww xx
|
|
|
|
pick-intra-l0-compaction min_depth=2
|
|
----
|
|
compaction picked with stack depth reduction 3
|
|
000011,000007,000003
|
|
seed interval: b-d
|
|
L0.3: gvvvvvvvvvj
|
|
L0.2: a+++++++++d fvvvvvvvvvvvvj
|
|
L0.1: b++++++d evvvvvvvvvvvvvvvj rvvvvvvt
|
|
L0.0: a+++++++++d fvvvvvvvvvvvvj l---------o pvvvvvvvvvvvvvvvvvvvvvvvvx
|
|
L6: a------------------------i m------------------------------w
|
|
aa bb cc dd ee ff gg hh ii jj kk ll mm nn oo pp qq rr ss tt uu vv ww xx
|
|
|
|
# Regression test for cockroachdb/cockroach#101896. We must return
|
|
# errInvalidL0SublevelOpt in any case where a new L0 file is being AddL0File'd
|
|
# with a largest sequence number below an existing file in the same interval.
|
|
|
|
define
|
|
L0
|
|
000004:a.SET.2-e.SET.3
|
|
000006:a.SET.7-b.SET.8
|
|
000007:d.SET.12-f.SET.12
|
|
----
|
|
file count: 3, sublevels: 2, intervals: 5
|
|
flush split keys(2): [b, e]
|
|
0.1: file count: 2, bytes: 512, width (mean, max): 1.5, 2, interval range: [0, 3]
|
|
000006:[a#7,1-b#8,1]
|
|
000007:[d#12,1-f#12,1]
|
|
0.0: file count: 1, bytes: 256, width (mean, max): 3.0, 3, interval range: [0, 2]
|
|
000004:[a#2,1-e#3,1]
|
|
compacting file count: 0, base compacting intervals: none
|
|
L0.1: a---b d------f
|
|
L0.0: a------------e
|
|
aa bb cc dd ee ff
|
|
|
|
# Note that 000006 will bump the sublevel for the incoming file to 2. We
|
|
# should still realize that it's slotting below 000007 and return an error.
|
|
|
|
add-l0-files
|
|
000015:a.SET.9-g.SET.10
|
|
----
|
|
pebble: L0 sublevel generation optimization cannot be used
|
|
|
|
# Fully-regenerated L0 sublevels allow us to pick an intra-L0 compaction that
|
|
# does not violate sublevel ordering.
|
|
|
|
define
|
|
L0
|
|
000004:a.SET.2-e.SET.3
|
|
000006:a.SET.7-b.SET.8
|
|
000007:d.SET.12-f.SET.12
|
|
000015:a.SET.9-g.SET.10
|
|
----
|
|
file count: 4, sublevels: 4, intervals: 6
|
|
flush split keys(2): [b, e]
|
|
0.3: file count: 1, bytes: 256, width (mean, max): 2.0, 2, interval range: [2, 3]
|
|
000007:[d#12,1-f#12,1]
|
|
0.2: file count: 1, bytes: 256, width (mean, max): 5.0, 5, interval range: [0, 4]
|
|
000015:[a#9,1-g#10,1]
|
|
0.1: file count: 1, bytes: 256, width (mean, max): 1.0, 1, interval range: [0, 0]
|
|
000006:[a#7,1-b#8,1]
|
|
0.0: file count: 1, bytes: 256, width (mean, max): 3.0, 3, interval range: [0, 2]
|
|
000004:[a#2,1-e#3,1]
|
|
compacting file count: 0, base compacting intervals: none
|
|
L0.3: d------f
|
|
L0.2: a------------------g
|
|
L0.1: a---b
|
|
L0.0: a------------e
|
|
aa bb cc dd ee ff gg
|
|
|
|
# Exclude the d-f file through earliest_unflushed_seqnum.
|
|
|
|
pick-intra-l0-compaction min_depth=2 earliest_unflushed_seqnum=11
|
|
----
|
|
compaction picked with stack depth reduction 3
|
|
000015,000006,000004
|
|
seed interval: a-b
|
|
L0.3: d------f
|
|
L0.2: a++++++++++++++++++g
|
|
L0.1: a+++b
|
|
L0.0: a++++++++++++e
|
|
aa bb cc dd ee ff gg
|
|
|
|
pick-intra-l0-compaction min_depth=2
|
|
----
|
|
compaction picked with stack depth reduction 3
|
|
000015,000007,000006,000004
|
|
seed interval: a-b
|
|
L0.3: d++++++f
|
|
L0.2: a++++++++++++++++++g
|
|
L0.1: a+++b
|
|
L0.0: a++++++++++++e
|
|
aa bb cc dd ee ff gg
|