Tidb 数据库大小的问题

导入400GB的数据,进入数据库系统, 用数据库命令查看到的大小是400多GB, select table_name,table_rows,data_length+index_length,concat(round((data_length+index_length)/1024/1024,2),‘MB’) data from tables where tablexxx_schema=‘x’xxxx’x’ and table_name=‘x’x’x’; 但是用du 从操作系统看到的存放数据库文件的目录的大小却是200多GB,请问,这是怎么回事?

使用的是 rocksdb 存储引擎。从L1开始,每往下一层 Merge 时,都会进行 compaction 压缩。

只是compaction,而不是compression?数据是怎么自动分层写入每个不同的层的?

compression 只有压缩的意思,compaction 还有 merge sort 的含义。

RocksDB 使用的LSM-Tree,建议了解一下这方面的文章。

谢谢! 有什么办法或者设置能让RocksDB的每个level都被数据填充吗?

每个level都被数据填充满的原因是?

想看看性能 rocksdb是如何管理数据的

如果是这样建议通过导入数据的方式,快速写入来填充数据,同时也可以将每一层大小调整成更小更容易达到写满的条件 (TiKV 的 target-file-size-basenum-levelsmax-bytes-for-level-multiplier等几个参数