https://www.bookstack.cn/read/TiDB-4.0/storage-engine-titan-configuration.md

开启 Titan

Titan 对 RocksDB 兼容,也就是说,使用 RocksDB 存储引擎的现有 TiKV 实例可以直接开启 Titan。

  • 方法一:如果使用 TiUP 部署的集群,开启的方法是执行 tiup cluster edit-config ${cluster-name} 命令,再编辑 TiKV 的配置文件。编辑 TiKV 配置文件示例如下:

    1. tikv:
    2. rocksdb.titan.enabled: true

    重新加载配置,同时也会在线滚动重启 TiKV:

    1. tiup cluster reload ${cluster-name} -R tikv

    具体命令,可参考通过 TiUP 修改配置参数

  • 方法二:直接编辑 TiKV 配置文件开启 Titan(生产环境不推荐)。

    1. [rocksdb.titan]
    2. enabled = true

开启 Titan 以后,原有的数据并不会马上移入 Titan 引擎,而是随着前台写入和 RocksDB compaction 的进行,逐步进行 key-value 分离并写入 Titan。可以通过观察 TiKV Details - Titan kv - blob file size 监控面版确认数据保存在 Titan 中部分的大小。

如果需要加速数据移入 Titan,可以通过 tikv-ctl 执行一次全量 compaction,具体参考手动 compact

警告:

在不开启 Titan 功能的情况下,RocksDB 无法读取已经迁移到 Titan 的数据。如果在打开过 Titan 的 TiKV 实例上错误地关闭了 Titan(误设置 rocksdb.titan.enabled = false),启动 TiKV 会失败,TiKV log 中出现 You have disabled titan when its data directory is not empty 错误。如需要关闭 Titan,参考关闭 Titan 一节。

相关参数介绍

使用 TiUP 调整参数,请参考修改配置参数

  • Titan GC 线程数。

    当从 TiKV Details - Thread CPU - RocksDB CPU 监控中观察到 Titan GC 线程长期处于满负荷状态时,应该考虑增加 Titan GC 线程池大小。

    1. [rocksdb.titan]
    2. max-background-gc = 1
  • value 的大小阈值。

    当写入的 value 小于这个值时,value 会保存在 RocksDB 中,反之则保存在 Titan 的 blob file 中。根据 value 大小的分布,增大这个值可以使更多 value 保存在 RocksDB,读取这些小 value 的性能会稍好一些;减少这个值可以使更多 value 保存在 Titan 中,进一步减少 RocksDB compaction。

    1. [rocksdb.defaultcf.titan]
    2. min-blob-size = "1KB"
  • Titan 中 value 所使用的压缩算法。Titan 中压缩是以 value 为单元的。

    1. [rocksdb.defaultcf.titan]
    2. blob-file-compression = "lz4"
  • Titan 中 value 的缓存大小。

    更大的缓存能提高 Titan 读性能,但过大的缓存会造成 OOM。建议在数据库稳定运行后,根据监控把 RocksDB block cache (storage.block-cache.capacity) 设置为 store size 减去 blob file size 的大小,blob-cache-size 设置为 内存大小 * 50% 再减去 block cache 的大小。这是为了保证 block cache 足够缓存整个 RocksDB 的前提下,blob cache 尽量大。

    1. [rocksdb.defaultcf.titan]
    2. blob-cache-size = 0
  • 当一个 blob file 中无用数据(相应的 key 已经被更新或删除)比例超过以下阈值时,将会触发 Titan GC 。

    1. discardable-ratio = 0.5

    将此文件有用的数据重写到另一个文件。这个值可以估算 Titan 的写放大和空间放大的上界(假设关闭压缩)。公式是:

    写放大上界 = 1 / discardable_ratio

    空间放大上界 = 1 / (1 - discardable_ratio)

    可以看到,减少这个阈值可以减少空间放大,但是会造成 Titan 更频繁 GC;增加这个值可以减少 Titan GC,减少相应的 I/O 带宽和 CPU 消耗,但是会增加磁盘空间占用。

  • 以下选项限制 RocksDB compaction 的 I/O 速率,以达到在流量高峰时,限制 RocksDB compaction 减少其 I/O 带宽和 CPU 消耗对前台读写性能的影响。

    当开启 Titan 时,该选项限制 RocksDB compaction 和 Titan GC 的 I/O 速率总和。当发现在流量高峰时 RocksDB compaction 和 Titan GC 的 I/O 和/或 CPU 消耗过大,可以根据磁盘 I/O 带宽和实际写入流量适当配置这个选项。

    1. [rocksdb]
    2. rate-bytes-per-sec = 0

关闭 Titan(实验功能)

通过设置 rocksdb.defaultcf.titan.blob-run-mode 参数可以关闭 Titan。blob-run-mode 可以设置为以下几个值之一:

  • 当设置为 normal 时,Titan 处于正常读写的状态。
  • 当设置为 read-only 时,新写入的 value 不论大小均会写入 RocksDB。
  • 当设置为 fallback 时,新写入的 value 不论大小均会写入 RocksDB,并且当 RocksDB 进行 compaction 时,会自动把所碰到的存储在 Titan blob file 中的 value 移回 RocksDB。

当需要关闭 Titan 时,可以设置 blob-run-mode = "fallback",并通过 tikv-ctl 执行全量 compaction。此后通过监控确认 blob file size 降到 0 以后,可以更改 rocksdb.titan.enabled = false 并重启 TiKV。

警告:

关闭 Titan 是实验性功能,非必要不建议使用。

Level Merge(实验功能)

TiKV 4.0 中 Titan 提供新的算法提升范围查询性能并降低 Titan GC 对前台写入性能的影响。这个新的算法称为 Level Merge。Level Merge 可以通过以下选项开启:

  1. [rocksdb.defaultcf.titan]
  2. level-merge = true

开启 Level Merge 的好处如下:

  • 大幅提升 Titan 的范围查询性能。
  • 减少了 Titan GC 对前台写入性能的影响,提升写入性能。
  • 减少 Titan 空间放大,减少磁盘空间占用(默认配置下的比较)。

相应地,Level Merge 的写放大会比 Titan 稍高,但依然低于原生的 RocksDB。

[转帖]Titan 配置的更多相关文章

  1. [转帖]nginx配置ssl加密(单/双向认证、部分https)

    nginx配置ssl加密(单/双向认证.部分https) https://segmentfault.com/a/1190000002866627   nginx下配置ssl本来是很简单的,无论是去认证 ...

  2. [转帖]IIS7配置Gzip压缩

    IIS7配置Gzip压缩 https://www.cnblogs.com/coce/p/6804373.html   II7中自带了gzip功能,理论上应该比ii6配置起来应该简单一点,但是容易出的问 ...

  3. [转帖]nginx配置ssl证书实现https访问

    https://www.cnblogs.com/tianhei/p/7726505.html 今天就是如此处理的 感觉挺不错的. 一,环境说明 服务器系统:ubuntu16.04LTS 服务器IP地址 ...

  4. 配置jboss4.2.3GA启用SSL

    转帖保存 配置jboss的HTTP请求走SSL(HTTPS协议) l         生成keystore 文件 用keytool生成server.keystore文件: 进入命令行 C:\Docum ...

  5. YIi 权限管理和基于角色的访问控制

    验证和授权(Authentication and Authorization) 定义身份类 (Defining Identity Class) 登录和注销(Login and Logout) 访问控制 ...

  6. Yii - 验证和授权(Authentication and Authorization)

    1. 定义身份类 (Defining Identity Class)  为了验证一个用户,我们定义一个有验证逻辑的身份类.这个身份类实现[IUserIdentity] 接口.不同的类可能实现不同的验证 ...

  7. sublime text3前端常用插件

    安装Package Control 在安装插件之前,需要让sublime安装Package Control.打开Sublime Text的控制台,快捷键ctrl + ~,在控制台中输入以下代码. im ...

  8. sublime Text3 前端常用插件

    sublime Text3 前端常用插件 - File Switching (文件切换) --- Sublime Text提供了一个非常快速的方式来打开新的文件.只要按下Ctrl+ P并开始输入你想要 ...

  9. [知识图谱] 环境配置:Java8 + Maven3 + HBase + Titan

    1.Java Java8安装配置 2.Maven Linux下的Maven安装与配置 3.Hbase 官方安装教程:http://s3.thinkaurelius.com/docs/titan/1.0 ...

  10. Apache2.4权限配置(原创帖-转载请注明出处)

    ==================说在前面的话================= 1:这次实验使用的php项目是Discuz,Discuz的安装请参照:http://www.cnblogs.com/ ...

随机推荐

  1. 2023-08-08:给你一棵 n 个节点的树(连通无向无环的图) 节点编号从 0 到 n - 1 且恰好有 n - 1 条边 给你一个长度为 n 下标从 0 开始的整数数组 vals 分别表示每个节

    2023-08-08:给你一棵 n 个节点的树(连通无向无环的图) 节点编号从 0 到 n - 1 且恰好有 n - 1 条边 给你一个长度为 n 下标从 0 开始的整数数组 vals 分别表示每个节 ...

  2. 关于echarts+vue频繁刷新的造成的内存增长问题

    前言 关于解决echarts+ws多次数据刷新渲染,内存增长溢出的尝试. 记录一下,便于下次使用有参考 方法 关闭echarts动画 tooltip的动画设置为false.(echarts动画会缓存, ...

  3. Mock服务设计与实现:MySQL驱动字节码修改增强

    摘要:华为导流测试平台通过对线上流量回放到被测环境中,利用线上真实流量进行充分测试,保证业务系统稳定上线.但是业务在导流测试过程中现网数据库往往难以同步到测试环境,导致现网数据无法正常回放,测试价值降 ...

  4. Spark的分布式存储系统BlockManager全解析

    摘要:BlockManager 是 spark 中至关重要的一个组件,在spark的运行过程中到处都有 BlockManager 的身影,只有搞清楚 BlockManager 的原理和机制,你才能更加 ...

  5. 华为云数据库GaussDB(for openGauss):初次见面,认识一下

    摘要:本文从总体架构.主打场景.关键技术特性等方面进行介绍GaussDB(for openGauss). 1.背景介绍 3月16日,在华为云主办的GaussDB(for openGauss)系列技术第 ...

  6. VEGA:诺亚AutoML高性能开源算法集简介

    摘要:VEGA是华为诺亚方舟实验室自研的全流程AutoML算法集合,提供架构搜索.超参优化.数据增强.模型压缩等全流程机器学习自动化基础能力. 本文分享自华为云社区<VEGA:诺亚AutoML高 ...

  7. Java编程中忽略这些细节,Bug肯定找上你

    摘要:在Java语言的日常编程中,也存在着容易被忽略的细节,这些细节可能会导致程序出现各种Bug. 本文分享自华为云社区<Java编程中容易忽略的细节总结丨[奔跑吧!JAVA]>,作者:j ...

  8. 查询速度最高提升50倍!火山引擎ByteHouse在广告投放领域实践分享

     更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群   据QuestMobile报告显示,移动互联网已经进入了下半场,在使用人数和使用时长方面已经没有明显增长,互联 ...

  9. 火山引擎A/B测试推出智能流量调优实验,助力汽车行业破局营销困境

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 2023年是汽车行业挑战加剧的一年,在这样一个变革时期,多家车企都在进行创新技术和战略调整,实现灵活的科学决策,在 ...

  10. Axure 绘制表格添加删除

    1.添加按钮:白底黑框,80X30,文本和命名均为"添加"; 2.数据表格(表头):1行5列,灰底黑框的表格作为表头,从左到右每个格子的文字分别为:姓名.性别.年龄.电话和操作: ...