首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TokuDB size_allocated vs size_in_use

TokuDB size_allocated vs size_in_use
EN

Stack Overflow用户
提问于 2016-02-23 19:26:09
回答 1查看 409关注 0票数 0

尽管TokuDB提供了很好的压缩能力,但据我所知,它分配的空间比实际需要的多得多,浪费了大量的空间。

我使用information_schema来获取大小,如下所示:

代码语言:javascript
复制
SELECT
    table_name, 
    table_dictionary_name, 
    round(bt_size_allocated/1024/1024,2) as size_allocated, 
    round(bt_size_in_use/1024/1024,2) as size_in_use
FROM
    information_schema.`TokuDB_fractal_tree_info`

结果如下所示

代码语言:javascript
复制
+----------------+---------------------------+-----------------+-------------+
|     table      |     dictionary_name       | size_allocated  | size_in_use |
+----------------+---------------------------+-----------------+-------------+
| c_tokudb_table | key-XID_id                | 875.43          | 411.59      |
| c_tokudb_table | key-operationId_timeStamp | 913.38          | 459.06      |
| c_tokudb_table | key-time_stamp            | 737.36          | 338.67      |
| c_tokudb_table | main                      | 3217.93         | 1505.58     |
| c_tokudb_table | status                    | 0.04            | 0.00        |
+----------------+---------------------------+-----------------+-------------+

如您所见,size_allocated基本上翻了一番。磁盘上的文件比size_allocated多一点,所以使用information_schema可以很好地进行报告。

我试着运行了几次优化,但效果不是很好,有时甚至会增加。唯一有效的解决方案似乎是运行一个ALTER TABLEtblengine=tokudb,但这需要很多时间,因为它会完全重新构建表。

有人知道如何恢复未使用的空间吗?

(在percona mysql服务器上运行tokudb 5.6.27-76.0 )

EN

回答 1

Stack Overflow用户

发布于 2016-02-23 19:51:20

optimize table命令应该有助于清除已删除的行,从而释放空间,但这也可能需要很长时间。您可以尝试调整tokudb_cleaner_period and tokudb_cleaner_iterations settings以启用更频繁的数据清理。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35576301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档