内存中的MEMTABLE
select table_id, PARTITION_ID ,version,BASE_VERSION ,MULTI_VERSION_START ,SNAPSHOT_VERSION ,IS_ACTIVE ,round(used/1024/1024) USED_MB, HASH_ITEMS ,BTREE_ITEMSfrom `gv$memstore_info` gmiwhere table_id in (1100611139453777, 1100611139453779)order by table_id, PARTITION_ID , BASE_VERSION ;+------------------+--------------+---------+------------------+---------------------+---------------------+-----------+---------+------------+-------------+| table_id | PARTITION_ID | version | BASE_VERSION | MULTI_VERSION_START | SNAPSHOT_VERSION | IS_ACTIVE | USED_MB | HASH_ITEMS | BTREE_ITEMS |+------------------+--------------+---------+------------------+---------------------+---------------------+-----------+---------+------------+-------------+| 1100611139453777 | 0 | 0-0-0 | 1644827477979191 | 1644827477979191 | 9223372036854775807 | 1 | 2 | 21760 | 15051 || 1100611139453779 | 0 | 0-0-0 | 1644827477978137 | 1644827477978137 | 9223372036854775807 | 1 | 12 | 10496 | 15163 |+------------------+--------------+---------+------------------+---------------------+---------------------+-----------+---------+------------+-------------+2 rows in set (0.02 sec)

mysql> alter system minor freeze;Query OK, 0 rows affected (0.07 sec)mysql> select table_id, PARTITION_ID ,version,BASE_VERSION ,MULTI_VERSION_START ,SNAPSHOT_VERSION ,IS_ACTIVE ,round(used/1024/1024) USED_MB, HASH_ITEMS ,BTREE_ITEMSfrom `gv$memstore_info` gmi where table_id in (1100611139453777, 1100611139453779) order by table_id, PARTITION_ID , BASE_VERSION;+------------------+--------------+---------+------------------+---------------------+---------------------+-----------+---------+------------+-------------+| table_id | PARTITION_ID | version | BASE_VERSION | MULTI_VERSION_START | SNAPSHOT_VERSION | IS_ACTIVE | USED_MB | HASH_ITEMS | BTREE_ITEMS |+------------------+--------------+---------+------------------+---------------------+---------------------+-----------+---------+------------+-------------+| 1100611139453777 | 0 | 0-0-0 | 1644827477979191 | 1644827477979191 | 1644843569974204 | 0 | 10 | 28928 | 26895 || 1100611139453777 | 0 | 0-0-0 | 1644843569974204 | 1644843569974204 | 9223372036854775807 | 1 | 0 | 256 | 710 || 1100611139453779 | 0 | 0-0-0 | 1644827477978137 | 1644827477978137 | 1644843569968264 | 0 | 18 | 22784 | 26873 || 1100611139453779 | 0 | 0-0-0 | 1644843569968264 | 1644843569968264 | 9223372036854775807 | 1 | 2 | 256 | 711 |+------------------+--------------+---------+------------------+---------------------+---------------------+-----------+---------+------------+-------------+4 rows in set (0.01 sec)
OB数据文件空间特点一
MySQL [oceanbase]> show parameters like '%datafile%';+-------+----------+-----------------+----------+--------------------------+-----------+-------+-------------------------------------------------------------------------------+---------+---------+---------+-------------------+| zone | svr_type | svr_ip | svr_port | name | data_type | value | info | section | scope | source | edit_level |+-------+----------+-----------------+----------+--------------------------+-----------+-------+-------------------------------------------------------------------------------+---------+---------+---------+-------------------+|zone1 | observer | 192.168.110.152 | 2882 | datafile_disk_percentage | NULL | 90 | the percentage of disk space used by the data files. Range: [5,99] in integer | SSTABLE | CLUSTER | DEFAULT | DYNAMIC_EFFECTIVE || zone1 | observer | 192.168.110.152 | 2882 | datafile_size | NULL | 1600G | size of the data file. Range: [0, +∞) | SSTABLE | CLUSTER | DEFAULT | DYNAMIC_EFFECTIVE |+-------+----------+-----------------+----------+--------------------------+-----------+-------+-------------------------------------------------------------------------------+---------+---------+---------+-------------------+2 rows in set (0.00 sec)
ob_local_file_system.cppint ObLocalFileSystem::open(bool& exist)int64_t falloc_size = lower_align(data_file_size_, macro_block_size_);if (OB_FAIL(fallocate(fd_.fd_, 0 /*MODE*/, 0 /*offset*/, falloc_size))) {ret = OB_IO_ERROR;STORAGE_LOG(ERROR, "allocate file error", K(store_path_), K(falloc_size), K(errno), KERRMSG, K(ret));}
select now(), svr_ip, round(total_size/2048/1024) macro_count, round(total_size/1024/1024) total_size_mb, round(free_size/1024/1024) free_size_mb, round(used_size/1024/1024) used_size_mbfrom __all_virtual_disk_stat;+---------------------+-----------------+-------------+---------------+--------------+--------------+| now() | svr_ip | macro_count | total_size_mb | free_size_mb | used_size_mb |+---------------------+-----------------+-------------+---------------+--------------+--------------+| 2022-02-14 21:24:47 | 192.168.111.188 | 819200 | 1638400 | 1638388 | 12 |+---------------------+-----------------+-------------+---------------+--------------+--------------+1 row in set (0.00 sec)
[root@localhost sstable]# ls -ls block_file1677721768 -rw-r--r-- 1 admin admin 1717986918400 Feb 14 21:20 block_file[root@localhost sstable]# ls -lsh block_file1.6T -rw-r--r-- 1 admin admin 1.6T Feb 14 21:20 block_file
[root@localhost sstable]# sfx-filesize block_file -hLogical Alocated Physical Ratio File1.56T 1.56T 1.33M 1236289.12 block_file
SSD 空间使用特点
更大的OP空间。通常4T的盘默认7%, 8T的盘默认28%。
对SSD发TRIM 指令。需要操作系统、文件系统、SSD主控都要支持TRIM 指令。
更大的剩余可用空间。如应用删除不用的文件,然后结合TRIM指令。
持续的顺序写。
转储 minor freeze

合并 major freeze
select concat(table_id,' : ', partition_id) partition_id,major_table_id,base_version, concat(data_version, '-', macro_data_version) data_version, macro_idx_in_data_file macro_idx,data_seq, row_count, occupy_size, micro_block_count, macro_range, compressor_name,row_count_deltafrom __all_virtual_partition_sstable_macro_infowhere major_table_id in (1100611139453788)order by table_id, partition_id, data_seq;+----------------------+------------------+--------------+--------------+-----------+----------+-----------+-------------+-------------------+-------------------+-----------------+-----------------+| partition_id | major_table_id | base_version | data_version | macro_idx | data_seq | row_count | occupy_size | micro_block_count | macro_range | compressor_name | row_count_delta |+----------------------+------------------+--------------+--------------+-----------+----------+-----------+-------------+-------------------+-------------------+-----------------+-----------------+| 1100611139453788 : 0 | 1100611139453788 | 0 | 10-9 | 29531 | 1048576 | 14970 | 2089598 | 126 | (MIN ; 49970] | zstd_1.3.8 | 0 || 1100611139453788 : 0 | 1100611139453788 | 0 | 11-9 | 29531 | 1048576 | 14970 | 2089598 | 126 | (MIN ; 49970] | zstd_1.3.8 | 0 || 1100611139453788 : 0 | 1100611139453788 | 0 | 10-9 | 29550 | 1048577 | 14898 | 2089894 | 126 | (49970 ; 94868] | zstd_1.3.8 | 0 || 1100611139453788 : 0 | 1100611139453788 | 0 | 11-9 | 29550 | 1048577 | 14898 | 2089894 | 126 | (49970 ; 94868] | zstd_1.3.8 | 0 || 1100611139453788 : 0 | 1100611139453788 | 0 | 10-9 | 29561 | 1048578 | 14892 | 2089991 | 126 | (94868 ; 109760] | zstd_1.3.8 | 0 || 1100611139453788 : 0 | 1100611139453788 | 0 | 11-9 | 29561 | 1048578 | 14892 | 2089991 | 126 | (94868 ; 109760] | zstd_1.3.8 | 0 || 1100611139453788 : 0 | 1100611139453788 | 0 | 10-9 | 29564 | 1048579 | 14893 | 2089402 | 126 | (109760 ; 144653] | zstd_1.3.8 | 0 || 1100611139453788 : 0 | 1100611139453788 | 0 | 10-8 | 28326 | 1048579 | 14889 | 2089651 | 126 | (184665 ; 199554] | zstd_1.3.8 | 0 || 1100611139453788 : 0 | 1100611139453788 | 0 | 11-9 | 29564 | 1048579 | 14893 | 2089402 | 126 | (109760 ; 144653] | zstd_1.3.8 | 0 || 1100611139453788 : 0 | 1100611139453788 | 0 | 11-8 | 28326 | 1048579 | 14889 | 2089651 | 126 | (184665 ; 199554] | zstd_1.3.8 | 0 || 1100611139453788 : 0 | 1100611139453788 | 0 | 10-9 | 29566 | 1048580 | 10012 | 1405052 | 85 | (144653 ; 184665] | zstd_1.3.8 | 0 || 1100611139453788 : 0 | 1100611139453788 | 0 | 11-9 | 29566 | 1048580 | 10012 | 1405052 | 85 | (144653 ; 184665] | zstd_1.3.8 | 0 || 1100611139453788 : 0 | 1100611139453788 | 0 | 10-9 | 29588 | 1048581 | 5446 | 759132 | 46 | (199554 ; MAX] | zstd_1.3.8 | 0 || 1100611139453788 : 0 | 1100611139453788 | 0 | 11-9 | 29588 | 1048581 | 5446 | 759132 | 46 | (199554 ; MAX] | zstd_1.3.8 | 0 |+----------------------+------------------+--------------+--------------+-----------+----------+-----------+-------------+-------------------+-------------------+-----------------+-----------------+14 rows in set (0.77 sec)
+----------------------+------------------+--------------+--------------+-----------+----------+-----------+-------------+-------------------+-------------------+-----------------+-----------------+| partition_id | major_table_id | base_version | data_version | macro_idx | data_seq | row_count | occupy_size | micro_block_count | macro_range | compressor_name | row_count_delta |+----------------------+------------------+--------------+--------------+-----------+----------+-----------+-------------+-------------------+-------------------+-----------------+-----------------+| 1100611139453788 : 0 | 1100611139453788 | 0 | 12-9 | 29531 | 1048576 | 14970 | 2089598 | 126 | (MIN ; 49970] | zstd_1.3.8 | 0 || 1100611139453788 : 0 | 1100611139453788 | 0 | 12-9 | 29550 | 1048577 | 14898 | 2089894 | 126 | (49970 ; 94868] | zstd_1.3.8 | 0 || 1100611139453788 : 0 | 1100611139453788 | 0 | 12-9 | 29561 | 1048578 | 14892 | 2089991 | 126 | (94868 ; 109760] | zstd_1.3.8 | 0 || 1100611139453788 : 0 | 1100611139453788 | 0 | 12-9 | 29564 | 1048579 | 14893 | 2089402 | 126 | (109760 ; 144653] | zstd_1.3.8 | 0 || 1100611139453788 : 0 | 1100611139453788 | 0 | 12-8 | 28326 | 1048579 | 14889 | 2089651 | 126 | (184665 ; 199554] | zstd_1.3.8 | 0 || 1100611139453788 : 0 | 1100611139453788 | 0 | 12-9 | 29566 | 1048580 | 10012 | 1405052 | 85 | (144653 ; 184665] | zstd_1.3.8 | 0 || 1100611139453788 : 0 | 1100611139453788 | 0 | 12-9 | 29588 | 1048581 | 5446 | 759132 | 46 | (199554 ; MAX] | zstd_1.3.8 | 0 |+----------------------+------------------+--------------+--------------+-----------+----------+-----------+-------------+-------------------+-------------------+-----------------+-----------------+7 rows in set (0.39 sec)
OB数据文件空间特点二
select now(), svr_ip, round(total_size/1024/1024) total_size_mb, round(free_size/1024/1024) free_size_mb, round(used_size/1024/1024) used_size_mbfrom __all_virtual_disk_stat;+---------------------+-----------------+---------------+--------------+--------------+| now() | svr_ip | total_size_mb | free_size_mb | used_size_mb |+---------------------+-----------------+---------------+--------------+--------------+| 2022-02-12 21:34:48 | 192.168.110.152 | 1638400 | 798160 | 840240 |+---------------------+-----------------+---------------+--------------+--------------+1 row in set (0.01 sec)


数据空间压缩
selectdata_version,compressor_name ,count(*), round(sum(occupy_size)/1024/1024)occupy_size_mb, avg(row_count) row_count_avg, sum(row_count) row_count_sumfrom__all_virtual_partition_sstable_macro_infowhere1=1 and tenant_id=1001group bydata_version,compressor_name ;+--------------+-----------------+----------+----------------+---------------+---------------+|data_version | compressor_name | count(*) | occupy_size_mb | row_count_avg |row_count_sum |+--------------+-----------------+----------+----------------+---------------+---------------+| 4 | zstd_1.3.8 | 1168 | 2315 | 39409.2277 | 46029978 || 0 | lz4_1.0 | 4226 | 8377 | 20058.3474 | 84766576 || 4 | none | 27 | 1 | 117.3704 | 3169 || 0 | none | 20 | 0 | 118.7000 | 2374 |+--------------+-----------------+----------+----------------+---------------+---------------+4 rowsin set (0.02 sec)

Alter system set _mini_merge_concurrency =4;Alter system set minor_merge_concurrency =8;alter system set _mini_merge_concurrency=8;alter system set merge_thread_count=20;
[2022-01-2920:32:10.082573] ERROR [STORAGE] alloc_block (ob_store_file.cpp:968)[77171][2997][YB42C0A86FBC-0005D6AE380C490A] [lt=19] [dc=0] Fail to allocblock, (ret=-4184, free_block_cnt_=0, total_count=972800) BACKTRACE:0x97b78ce0x970a211 0x2228026 0x2227c6b 0x22279e3 0x481ebc9 0x867cfa9 0x867c62c 0x80b0f110x80bb4b9 0x80d79a0 0x80d9ea3 0x80d5444 0x80cfd68 0x80cdfaf 0x80cdb96 0x85ddb460x85e00d9 0x85eb55c 0x7a50ab6 0x330450a 0x3307970 0x32dd03f 0x2be0a32 0x95a19750x95a06a2 0x959d1cf
注:本文纯个人技术观点,可能有不对之处,欢迎指出。
参考
https://open.oceanbase.com/docs/community/oceanbase-database/V3.1.2/lsm-tree-architecture
https://zhuanlan.zhihu.com/p/420882991
文章转载自OceanBase技术闲谈,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




