github.com/cockroachdb/pebble@v0.0.0-20231214172447-ab4952c5f87b/testdata/table_stats (about) 1 batch 2 set a 1 3 set b 2 4 del c 5 ---- 6 7 flush 8 ---- 9 0.0: 10 000005:[a#10,SET-c#12,DEL] 11 12 wait-pending-table-stats 13 000005 14 ---- 15 num-entries: 3 16 num-deletions: 1 17 num-range-key-sets: 0 18 point-deletions-bytes-estimate: 64 19 range-deletions-bytes-estimate: 0 20 21 compact a-c 22 ---- 23 6: 24 000005:[a#10,SET-c#12,DEL] 25 26 batch 27 del-range a c 28 ---- 29 30 flush 31 ---- 32 0.0: 33 000007:[a#13,RANGEDEL-c#inf,RANGEDEL] 34 6: 35 000005:[a#10,SET-c#12,DEL] 36 37 wait-pending-table-stats 38 000007 39 ---- 40 num-entries: 1 41 num-deletions: 1 42 num-range-key-sets: 0 43 point-deletions-bytes-estimate: 0 44 range-deletions-bytes-estimate: 51 45 46 reopen 47 ---- 48 49 # After re-opening the database, the table stats collector should eventually 50 # load 000007's stats. 51 52 wait-loaded-initial 53 ---- 54 [JOB 2] all initial table stats loaded 55 56 wait-pending-table-stats 57 000007 58 ---- 59 num-entries: 1 60 num-deletions: 1 61 num-range-key-sets: 0 62 point-deletions-bytes-estimate: 0 63 range-deletions-bytes-estimate: 51 64 65 compact a-c 66 ---- 67 68 # Test a file that is moved by a compaction before its table stats are 69 # collected. The stats collector should silently skip the first pending file, 70 # but the second entry from the move compaction should cause the file's stats 71 # to be loaded. 72 73 disable 74 ---- 75 76 batch 77 set a 1 78 set b 2 79 ---- 80 81 flush 82 ---- 83 0.0: 84 000012:[a#14,SET-b#15,SET] 85 86 compact a-c 87 ---- 88 6: 89 000012:[a#14,SET-b#15,SET] 90 91 enable 92 ---- 93 94 wait-pending-table-stats 95 000012 96 ---- 97 num-entries: 2 98 num-deletions: 0 99 num-range-key-sets: 0 100 point-deletions-bytes-estimate: 0 101 range-deletions-bytes-estimate: 0 102 103 # Test a file that is deleted by a compaction before its table stats are 104 # collected. The stats collector should just silently skip the pending file. 105 106 disable 107 ---- 108 109 batch 110 del-range a c 111 ---- 112 113 flush 114 ---- 115 0.0: 116 000014:[a#16,RANGEDEL-c#inf,RANGEDEL] 117 6: 118 000012:[a#14,SET-b#15,SET] 119 120 compact a-c 121 ---- 122 123 enable 124 ---- 125 126 wait-pending-table-stats 127 000014 128 ---- 129 (not found) 130 131 # Test range tombstones that need to be truncated to file bounds. The 132 # grandparent limit and small target file size ensures that our manual 133 # compaction of L4->L5 will split the range tombstone across several files. 134 135 define target-file-sizes=(100, 1) 136 L4 137 a.RANGEDEL.8:f 138 L5 139 b.SET.7:v 140 L6 141 a.SET.1:v 142 L6 143 b.SET.2:v 144 L6 145 c.SET.3:v 146 L6 147 d.SET.4:v 148 L6 149 e.SET.5:v 150 ---- 151 4: 152 000004:[a#8,RANGEDEL-f#inf,RANGEDEL] 153 5: 154 000005:[b#7,SET-b#7,SET] 155 6: 156 000006:[a#1,SET-a#1,SET] 157 000007:[b#2,SET-b#2,SET] 158 000008:[c#3,SET-c#3,SET] 159 000009:[d#4,SET-d#4,SET] 160 000010:[e#5,SET-e#5,SET] 161 162 compact a-b L4 163 ---- 164 5: 165 000011:[a#8,RANGEDEL-b#inf,RANGEDEL] 166 000012:[b#8,RANGEDEL-c#inf,RANGEDEL] 167 000013:[c#8,RANGEDEL-d#inf,RANGEDEL] 168 000014:[d#8,RANGEDEL-e#inf,RANGEDEL] 169 000015:[e#8,RANGEDEL-f#inf,RANGEDEL] 170 6: 171 000006:[a#1,SET-a#1,SET] 172 000007:[b#2,SET-b#2,SET] 173 000008:[c#3,SET-c#3,SET] 174 000009:[d#4,SET-d#4,SET] 175 000010:[e#5,SET-e#5,SET] 176 177 wait-pending-table-stats 178 000011 179 ---- 180 num-entries: 1 181 num-deletions: 1 182 num-range-key-sets: 0 183 point-deletions-bytes-estimate: 0 184 range-deletions-bytes-estimate: 632 185 186 wait-pending-table-stats 187 000012 188 ---- 189 num-entries: 1 190 num-deletions: 1 191 num-range-key-sets: 0 192 point-deletions-bytes-estimate: 0 193 range-deletions-bytes-estimate: 632 194 195 # A table in L6 with two point keys blocks, each covered by distinct range dels. 196 # The deletion estimate takes into account the contribution from both deleted 197 # blocks. Note that the snapshot is required to allow the hint to be computed. 198 define block-size=1 snapshots=(10) 199 L6 200 e.SET.5:e a.RANGEDEL.15:f m.SET.5:m g.RANGEDEL.15:z 201 ---- 202 6: 203 000004:[a#15,RANGEDEL-z#inf,RANGEDEL] 204 205 wait-pending-table-stats 206 000004 207 ---- 208 num-entries: 4 209 num-deletions: 2 210 num-range-key-sets: 0 211 point-deletions-bytes-estimate: 0 212 range-deletions-bytes-estimate: 68 213 214 # Hints that partially overlap tables in lower levels only count blocks that are 215 # contained within the hint. 216 # 217 # L0 |-| 000004: a.RANGEDEL:b 218 # L1 |---| 000005: d.RANGEDEL:f 219 # L2 x x 000006: Two blocks [a, d] 220 # L2 x x 000007: Two blocks [e, h] 221 # ------------------- 222 # a b c d e f g h 223 224 define block-size=1 225 L0 226 a.RANGEDEL.2:b 227 L1 228 d.RANGEDEL.1:f 229 L2 230 a.SET.0:a d.SET.0:d 231 L2 232 e.SET.0:e h.SET.0:h 233 ---- 234 0.0: 235 000004:[a#2,RANGEDEL-b#inf,RANGEDEL] 236 1: 237 000005:[d#1,RANGEDEL-f#inf,RANGEDEL] 238 2: 239 000006:[a#0,SET-d#0,SET] 240 000007:[e#0,SET-h#0,SET] 241 242 # Table 000004 deletes the first block in table 000006. 243 wait-pending-table-stats 244 000004 245 ---- 246 num-entries: 1 247 num-deletions: 1 248 num-range-key-sets: 0 249 point-deletions-bytes-estimate: 0 250 range-deletions-bytes-estimate: 33 251 252 # Table 000005 deletes the second block in table 000006 (containing 'd') and the 253 # first block in table 000007 (containing 'e'). 254 wait-pending-table-stats 255 000005 256 ---- 257 num-entries: 1 258 num-deletions: 1 259 num-range-key-sets: 0 260 point-deletions-bytes-estimate: 0 261 range-deletions-bytes-estimate: 66 262 263 # Test the interaction between point and range key deletions. 264 265 define 266 ---- 267 268 # Start with a table that contains point and range keys, but no range dels or 269 # range key dels. 270 batch 271 set a a 272 range-key-set a b @1 foo 273 range-key-unset a b @2 274 ---- 275 276 flush 277 ---- 278 0.0: 279 000005:[a#12,RANGEKEYUNSET-b#inf,RANGEKEYSET] 280 281 # Add a table that contains only point keys, to the right of the existing table. 282 batch 283 set c c 284 ---- 285 286 flush 287 ---- 288 0.0: 289 000005:[a#12,RANGEKEYUNSET-b#inf,RANGEKEYSET] 290 000007:[c#13,SET-c#13,SET] 291 292 compact a-c 293 ---- 294 6: 295 000008:[a#11,RANGEKEYSET-b#inf,RANGEKEYSET] 296 000009:[c#0,SET-c#0,SET] 297 298 # Add a table that contains a RANGEKEYDEL covering the first table in L6. 299 batch 300 range-key-del a b 301 ---- 302 303 flush 304 ---- 305 0.0: 306 000011:[a#14,RANGEKEYDEL-b#inf,RANGEKEYDEL] 307 6: 308 000008:[a#11,RANGEKEYSET-b#inf,RANGEKEYSET] 309 000009:[c#0,SET-c#0,SET] 310 311 # Add one more table containing a RANGEDEL. 312 batch 313 del-range a c 314 ---- 315 316 flush 317 ---- 318 0.1: 319 000013:[a#15,RANGEDEL-c#inf,RANGEDEL] 320 0.0: 321 000011:[a#14,RANGEKEYDEL-b#inf,RANGEKEYDEL] 322 6: 323 000008:[a#11,RANGEKEYSET-b#inf,RANGEKEYSET] 324 000009:[c#0,SET-c#0,SET] 325 326 # Compute stats on the table containing range key del. It should not show an 327 # estimate for deleted point keys as there are no tables below it that contain 328 # only range keys. 329 wait-pending-table-stats 330 000011 331 ---- 332 num-entries: 0 333 num-deletions: 0 334 num-range-key-sets: 0 335 point-deletions-bytes-estimate: 0 336 range-deletions-bytes-estimate: 0 337 338 # Compute stats on the table containing the range del. It should show an 339 # estimate for deleted point keys, as a table below it (000008) contains point 340 # keys. Note that even though table 000008 contains range keys, the range del 341 # estimates are non-zero, as this number is agnostic of range keys. 342 wait-pending-table-stats 343 000013 344 ---- 345 num-entries: 1 346 num-deletions: 1 347 num-range-key-sets: 0 348 point-deletions-bytes-estimate: 0 349 range-deletions-bytes-estimate: 778 350 351 # Drop a range del and a range key del over the entire keyspace. This table can 352 # delete everything underneath it. 353 ingest ext1 354 del-range a z 355 range-key-del a z 356 ---- 357 0.2: 358 000014:[a#16,RANGEKEYDEL-z#inf,RANGEDEL] 359 0.1: 360 000013:[a#15,RANGEDEL-c#inf,RANGEDEL] 361 0.0: 362 000011:[a#14,RANGEKEYDEL-b#inf,RANGEKEYDEL] 363 6: 364 000008:[a#11,RANGEKEYSET-b#inf,RANGEKEYSET] 365 000009:[c#0,SET-c#0,SET] 366 367 compact a-z 368 ---- 369 370 # Ingest another sstable with range tombstones again, but this time into an 371 # empty LSM. The table should ingest into L6. Its table stats should reflect 372 # that its range tombstones cannot delete any of the data contained within the 373 # file itself. 374 ingest ext1 375 del-range a z 376 range-key-del a z 377 set d d 378 set e e 379 set f f 380 ---- 381 6: 382 000015:[a#17,RANGEKEYDEL-z#inf,RANGEDEL] 383 384 wait-pending-table-stats 385 000015 386 ---- 387 num-entries: 4 388 num-deletions: 1 389 num-range-key-sets: 0 390 point-deletions-bytes-estimate: 0 391 range-deletions-bytes-estimate: 0 392 393 # A hint for exclusively range key deletions that covers a table with point keys 394 # should not contain an estimate for point keys. 395 396 define 397 ---- 398 399 # A table with point keys. 400 batch 401 set b b 402 ---- 403 404 flush 405 ---- 406 0.0: 407 000005:[b#10,SET-b#10,SET] 408 409 # A table with a mixture of point and range keys. 410 batch 411 set c c 412 range-key-set d d @1 foo 413 ---- 414 415 flush 416 ---- 417 0.0: 418 000005:[b#10,SET-b#10,SET] 419 000007:[c#11,SET-c#11,SET] 420 421 compact a-z 422 ---- 423 6: 424 000008:[b#0,SET-b#0,SET] 425 000009:[c#0,SET-c#0,SET] 426 427 # The table with the range key del, that spans the previous two tables. 428 batch 429 range-key-del a z 430 ---- 431 432 flush 433 ---- 434 0.0: 435 000011:[a#13,RANGEKEYDEL-z#inf,RANGEKEYDEL] 436 6: 437 000008:[b#0,SET-b#0,SET] 438 000009:[c#0,SET-c#0,SET] 439 440 # The hint on table 000011 does estimates zero size for range deleted point 441 # keys. 442 wait-pending-table-stats 443 000011 444 ---- 445 num-entries: 0 446 num-deletions: 0 447 num-range-key-sets: 0 448 point-deletions-bytes-estimate: 0 449 range-deletions-bytes-estimate: 0 450 451 # A hint from a range del that covers a table with only range keys should not 452 # contain an estimate for the range keys. 453 454 define 455 L4 456 a.RANGEDEL.4:c 457 L5 458 a.RANGEDEL.2:e 459 b.SET.3:b 460 L6 461 rangekey:c-d:{(#1,RANGEKEYSET,@1,foo)} 462 ---- 463 4: 464 000004:[a#4,RANGEDEL-c#inf,RANGEDEL] 465 5: 466 000005:[a#2,RANGEDEL-e#inf,RANGEDEL] 467 6: 468 000006:[c#1,RANGEKEYSET-d#inf,RANGEKEYSET] 469 470 # The table in L5 should not contain an estimate for the table below it, which 471 # contains only range keys. 472 wait-pending-table-stats 473 000005 474 ---- 475 num-entries: 2 476 num-deletions: 1 477 num-range-key-sets: 0 478 point-deletions-bytes-estimate: 0 479 range-deletions-bytes-estimate: 0 480 481 # The table in L4 can delete the table in L5, which contains point keys. The 482 # estimate is only partial, as the range del does not fully overlap the table. 483 wait-pending-table-stats 484 000004 485 ---- 486 num-entries: 1 487 num-deletions: 1 488 num-range-key-sets: 0 489 point-deletions-bytes-estimate: 0 490 range-deletions-bytes-estimate: 26 491 492 # Test point tombstone compensation that uses DELSIZED keys. 493 494 define format-major-version=15 495 L6 496 bar.SET.0:<rand-bytes=10> 497 bax.SET.0:<rand-bytes=10> 498 foo.SET.0:<rand-bytes=100000> 499 moo.SET.0:<rand-bytes=1> 500 ---- 501 6: 502 000004:[bar#0,SET-moo#0,SET] 503 504 batch 505 set a apple 506 set b banana 507 set c coconut 508 del-sized foo 100000 509 del moo 510 ---- 511 512 flush 513 ---- 514 0.0: 515 000006:[a#10,SET-moo#14,DEL] 516 6: 517 000004:[bar#0,SET-moo#0,SET] 518 519 metric keys.missized-tombstones-count 520 ---- 521 keys.missized-tombstones-count: 0 522 523 # The foo DELSIZED tombstone should cause the 524 # `pebble.raw.point-tombstone.value.size` property to be 100000 + len(foo) = 525 # 100003. 526 527 properties file=000006 528 num.deletions 529 deleted.keys 530 raw.point-tombstone 531 ---- 532 num.deletions: 533 pebble.num.deletions.sized: 1 534 deleted.keys: 535 rocksdb.deleted.keys: 2 536 raw.point-tombstone: 537 pebble.raw.point-tombstone.key.size: 6 538 pebble.raw.point-tombstone.value.size: 100003 539 540 # And the size hint should then appear in the point-deletions-bytes-estimate, 541 # scaled according to the computed 'compression ratio'. 542 543 wait-pending-table-stats 544 000006 545 ---- 546 num-entries: 5 547 num-deletions: 2 548 num-range-key-sets: 0 549 point-deletions-bytes-estimate: 112732 550 range-deletions-bytes-estimate: 0 551 552 # Try a missized point tombstone. It should appear in the Metrics after the 553 # flush that will elide the a.SET. 554 555 batch 556 set a boop 557 del-sized a 10000 558 ---- 559 560 flush 561 ---- 562 0.1: 563 000008:[a#16,DEL-a#16,DEL] 564 0.0: 565 000006:[a#10,SET-moo#14,DEL] 566 6: 567 000004:[bar#0,SET-moo#0,SET] 568 569 metric keys.missized-tombstones-count 570 ---- 571 keys.missized-tombstones-count: 1 572 573 # Virtual sstables tests. Note that these tests are just for sanity checking 574 # purposes. Small sstables lead to inaccurate values during extrapolation. 575 define format-major-version=16 576 ---- 577 578 batch 579 set a 1 580 set b 2 581 del d 582 ---- 583 584 flush 585 ---- 586 0.0: 587 000005:[a#10,SET-d#12,DEL] 588 589 metadata-stats file=5 590 ---- 591 size: 726 592 593 # Just grab the physical sstable properties as these are used to construct the 594 # virtual sstable properties. 595 properties file=5 596 rocksdb 597 pebble 598 ---- 599 rocksdb: 600 rocksdb.num.entries: 3 601 rocksdb.raw.key.size: 27 602 rocksdb.raw.value.size: 2 603 rocksdb.deleted.keys: 1 604 rocksdb.num.range-deletions: 0 605 rocksdb.comparator: pebble.internal.testkeys 606 rocksdb.compression: Snappy 607 rocksdb.compression_options: window_bits=-14; level=32767; strategy=0; max_dict_bytes=0; zstd_max_train_bytes=0; enabled=0; 608 rocksdb.data.size: 53 609 rocksdb.filter.size: 0 610 rocksdb.index.size: 27 611 rocksdb.block.based.table.index.type: 0 612 rocksdb.merge.operator: pebble.concatenate 613 rocksdb.num.data.blocks: 1 614 rocksdb.merge.operands: 0 615 rocksdb.prefix.extractor.name: nullptr 616 rocksdb.block.based.table.prefix.filtering: false 617 rocksdb.property.collectors: [obsolete-key] 618 rocksdb.block.based.table.whole.key.filtering: false 619 pebble: 620 pebble.raw.point-tombstone.key.size: 1 621 rocksdb.comparator: pebble.internal.testkeys 622 rocksdb.merge.operator: pebble.concatenate 623 624 build ext1 625 set f f 626 ---- 627 628 ingest-and-excise ext1 excise=b-c 629 ---- 630 631 lsm 632 ---- 633 0.0: 634 000007:[a#10,SET-a#10,SET] 635 000008:[d#12,DEL-d#12,DEL] 636 6: 637 000006:[f#13,SET-f#13,SET] 638 639 metadata-stats file=7 640 ---- 641 size: 53 642 643 metadata-stats file=8 644 ---- 645 size: 53 646 647 # Note that the backing file size is much larger than the virtual file sizes. 648 # For tiny sstables, the metadata contained in the sstable is much larger than 649 # the actual sizes. 650 651 # While sstable 8 has no point tombstones, because of the nature of extrapolation 652 # both file 7 and file 8 will have a point tombstone key size property. Because 653 # of this both the files have a point deletion bytes estimate. 654 properties file=7 655 ---- 656 rocksdb.num.entries: 1 657 rocksdb.raw.key.size: 2 658 rocksdb.raw.value.size: 1 659 pebble.raw.point-tombstone.key.size: 1 660 rocksdb.deleted.keys: 1 661 662 properties file=8 663 ---- 664 rocksdb.num.entries: 1 665 rocksdb.raw.key.size: 2 666 rocksdb.raw.value.size: 1 667 pebble.raw.point-tombstone.key.size: 1 668 rocksdb.deleted.keys: 1 669 670 wait-pending-table-stats 671 000007 672 ---- 673 num-entries: 1 674 num-deletions: 1 675 num-range-key-sets: 0 676 point-deletions-bytes-estimate: 53 677 range-deletions-bytes-estimate: 0 678 679 wait-pending-table-stats 680 000008 681 ---- 682 num-entries: 1 683 num-deletions: 1 684 num-range-key-sets: 0 685 point-deletions-bytes-estimate: 53 686 range-deletions-bytes-estimate: 0 687 688 # Create an sstable with a range key set. 689 batch 690 set a a 691 set b b 692 set d d 693 range-key-set e ee @1 foo 694 ---- 695 696 flush 697 ---- 698 0.1: 699 000010:[a#14,SET-ee#inf,RANGEKEYSET] 700 0.0: 701 000007:[a#10,SET-a#10,SET] 702 000008:[d#12,DEL-d#12,DEL] 703 6: 704 000006:[f#13,SET-f#13,SET] 705 706 properties file=10 707 rocksdb 708 pebble 709 ---- 710 rocksdb: 711 rocksdb.num.entries: 3 712 rocksdb.raw.key.size: 27 713 rocksdb.raw.value.size: 3 714 rocksdb.deleted.keys: 0 715 rocksdb.num.range-deletions: 0 716 rocksdb.comparator: pebble.internal.testkeys 717 rocksdb.compression: Snappy 718 rocksdb.compression_options: window_bits=-14; level=32767; strategy=0; max_dict_bytes=0; zstd_max_train_bytes=0; enabled=0; 719 rocksdb.data.size: 47 720 rocksdb.filter.size: 0 721 rocksdb.index.size: 27 722 rocksdb.block.based.table.index.type: 0 723 rocksdb.merge.operator: pebble.concatenate 724 rocksdb.num.data.blocks: 1 725 rocksdb.merge.operands: 0 726 rocksdb.prefix.extractor.name: nullptr 727 rocksdb.block.based.table.prefix.filtering: false 728 rocksdb.property.collectors: [obsolete-key] 729 rocksdb.block.based.table.whole.key.filtering: false 730 pebble: 731 pebble.num.range-key-dels: 0 732 pebble.num.range-key-sets: 1 733 rocksdb.comparator: pebble.internal.testkeys 734 rocksdb.merge.operator: pebble.concatenate 735 pebble.num.range-key-unsets: 0 736 pebble.raw.range-key.key.size: 9 737 pebble.raw.range-key.value.size: 10 738 739 metadata-stats file=10 740 ---- 741 size: 828 742 743 build ext2 744 set z z 745 ---- 746 747 ingest-and-excise ext2 excise=b-c 748 ---- 749 750 lsm 751 ---- 752 0.1: 753 000012:[a#14,SET-a#14,SET] 754 000013:[d#16,SET-ee#inf,RANGEKEYSET] 755 0.0: 756 000007:[a#10,SET-a#10,SET] 757 000008:[d#12,DEL-d#12,DEL] 758 6: 759 000006:[f#13,SET-f#13,SET] 760 000011:[z#18,SET-z#18,SET] 761 762 metadata-stats file=12 763 ---- 764 size: 47 765 766 metadata-stats file=13 767 ---- 768 size: 47 769 770 # range key sets shows up for both files. This is expected. 771 properties file=12 772 ---- 773 rocksdb.num.entries: 1 774 rocksdb.raw.key.size: 2 775 rocksdb.raw.value.size: 1 776 pebble.num.range-key-sets: 1 777 778 properties file=13 779 ---- 780 rocksdb.num.entries: 1 781 rocksdb.raw.key.size: 2 782 rocksdb.raw.value.size: 1 783 pebble.num.range-key-sets: 1 784 785 wait-pending-table-stats 786 000012 787 ---- 788 num-entries: 1 789 num-deletions: 0 790 num-range-key-sets: 1 791 point-deletions-bytes-estimate: 0 792 range-deletions-bytes-estimate: 0 793 794 wait-pending-table-stats 795 000013 796 ---- 797 num-entries: 1 798 num-deletions: 0 799 num-range-key-sets: 1 800 point-deletions-bytes-estimate: 0 801 range-deletions-bytes-estimate: 0 802 803 # Create an sstable with range deletes to view the range delete byte estimates. 804 805 # Compact everything to L6. Range deletion bytes estimate doesn't account for 806 # bytes in L0. 807 compact a-z 808 ---- 809 6: 810 000014:[a#0,SET-a#0,SET] 811 000015:[d#0,SETWITHDEL-d#0,SETWITHDEL] 812 000016:[e#17,RANGEKEYSET-ee#inf,RANGEKEYSET] 813 000006:[f#13,SET-f#13,SET] 814 000011:[z#18,SET-z#18,SET] 815 816 batch 817 del-range a e 818 ---- 819 820 flush 821 ---- 822 0.0: 823 000018:[a#19,RANGEDEL-e#inf,RANGEDEL] 824 6: 825 000014:[a#0,SET-a#0,SET] 826 000015:[d#0,SETWITHDEL-d#0,SETWITHDEL] 827 000016:[e#17,RANGEKEYSET-ee#inf,RANGEKEYSET] 828 000006:[f#13,SET-f#13,SET] 829 000011:[z#18,SET-z#18,SET] 830 831 properties file=18 832 rocksdb 833 pebble 834 ---- 835 rocksdb: 836 rocksdb.num.entries: 1 837 rocksdb.raw.key.size: 9 838 rocksdb.raw.value.size: 1 839 rocksdb.deleted.keys: 1 840 rocksdb.num.range-deletions: 1 841 rocksdb.comparator: pebble.internal.testkeys 842 rocksdb.compression: Snappy 843 rocksdb.compression_options: window_bits=-14; level=32767; strategy=0; max_dict_bytes=0; zstd_max_train_bytes=0; enabled=0; 844 rocksdb.data.size: 13 845 rocksdb.filter.size: 0 846 rocksdb.index.size: 29 847 rocksdb.block.based.table.index.type: 0 848 rocksdb.merge.operator: pebble.concatenate 849 rocksdb.num.data.blocks: 1 850 rocksdb.merge.operands: 0 851 rocksdb.prefix.extractor.name: nullptr 852 rocksdb.block.based.table.prefix.filtering: false 853 rocksdb.property.collectors: [obsolete-key] 854 rocksdb.block.based.table.whole.key.filtering: false 855 pebble: 856 rocksdb.comparator: pebble.internal.testkeys 857 rocksdb.merge.operator: pebble.concatenate 858 859 build ext3 860 set zz zz 861 ---- 862 863 ingest-and-excise ext3 excise=b-c 864 ---- 865 866 lsm 867 ---- 868 0.0: 869 000020:[a#19,RANGEDEL-b#inf,RANGEDEL] 870 000021:[c#19,RANGEDEL-e#inf,RANGEDEL] 871 6: 872 000014:[a#0,SET-a#0,SET] 873 000015:[d#0,SETWITHDEL-d#0,SETWITHDEL] 874 000016:[e#17,RANGEKEYSET-ee#inf,RANGEKEYSET] 875 000006:[f#13,SET-f#13,SET] 876 000011:[z#18,SET-z#18,SET] 877 000019:[zz#20,SET-zz#20,SET] 878 879 properties file=20 880 ---- 881 rocksdb.num.entries: 1 882 rocksdb.raw.key.size: 1 883 rocksdb.raw.value.size: 1 884 rocksdb.deleted.keys: 1 885 rocksdb.num.range-deletions: 1 886 887 properties file=21 888 ---- 889 rocksdb.num.entries: 1 890 rocksdb.raw.key.size: 1 891 rocksdb.raw.value.size: 1 892 rocksdb.deleted.keys: 1 893 rocksdb.num.range-deletions: 1 894 895 wait-pending-table-stats 896 000020 897 ---- 898 num-entries: 1 899 num-deletions: 1 900 num-range-key-sets: 0 901 point-deletions-bytes-estimate: 0 902 range-deletions-bytes-estimate: 661 903 904 wait-pending-table-stats 905 000021 906 ---- 907 num-entries: 1 908 num-deletions: 1 909 num-range-key-sets: 0 910 point-deletions-bytes-estimate: 0 911 range-deletions-bytes-estimate: 660