Tidb 介绍(解释 TIDB 得配置)

TiDB 是一款由 PingCAP 开发的开源分布式关系型数据库,它支持水平扩展、强一致性分布式事务以及金融级的高可用性。TiDB 旨在解决传统数据库在处理大规模数据和高度并发场景下遇到的问题,同时保持良好的用户体验和低运维成本。

关键特性

  1. 水平可扩展性:TiDB 采用分布式架构,可以轻松地通过增加更多的服务器来提升计算和存储能力。
  2. 强一致性事务:TiDB 实现了跨多个节点的事务一致性,确保数据在任何操作下都保持一致性。
  3. 金融级高可用性:通过 Raft 协议和多副本机制,TiDB 确保即使在部分节点故障的情况下也能持续提供服务。
  4. 兼容 MySQL 协议:TiDB 兼容 MySQL 协议,使得现有的 MySQL 应用程序和工具可以无缝迁移到 TiDB。
  5. 实时 HTAP:TiDB 集成了行存储和列存储,支持在线事务处理(OLTP)和在线分析处理(OLAP),适用于混合工作负载。
  6. 云原生的分布式数据库:专为云环境设计,可在公有云、私有云、混合云中实现部署工具化、自动化。

核心组件

  • TiDB Server:负责处理 SQL 请求,解析和执行 SQL 查询。
  • TiKV Server:分布式 Key-Value 存储引擎,用于存储数据。
  • PD Server(Placement Driver) :集群的管理组件,负责元数据的存储、负载均衡、调度等。

应用场景

  • 大规模 OLTP 应用:适用于需要高并发、低延迟的事务处理场景。
  • 实时数据分析:结合 TiFlash 列存储引擎,可以实时进行大规模数据分析。
  • 数据仓库和大数据应用:适用于需要处理海量数据的应用。

总结

TiDB 是由 PingCAP 公司自主设计、研发的开源分布式关系型数据库。它是一款同时支持在线事务处理(OLTP)和在线分析处理(OLAP)的融合型分布式数据库产品。TiDB 具备以下五大核心特性:
  1. 一键水平扩缩容:得益于存储计算分离的架构设计,TiDB 可以按需对计算、存储分别进行在线扩容或缩容,且过程中对应用运维人员透明。
  2. 金融级高可用:数据采用多副本存储,通过 Multi-Raft 协议同步事务日志,确保数据强一致性。即使在少数副本发生故障时,也不影响数据的可用性。
  3. 实时 HTAP:提供行存储引擎 TiKV 和列存储引擎 TiFlash,两者之间通过 Multi-Raft Learner 协议实时复制数据,保证数据强一致。
  4. 兼容 MySQL 协议和生态:兼容 MySQL 协议、功能和生态,应用无需或只需少量修改即可从 MySQL 迁移到 TiDB。

TiDB 适用于多种核心应用场景,包括金融行业、海量数据及高并发的 OLTP 场景、实时 HTAP 场景,以及数据汇聚和二次加工处理场景。

TiDB的最低配置要求与其设计理念和目标应用场景紧密相关。TiDB是一款面向大规模数据场景设计的分布式数据库,因此,其配置需求相对较高,以确保在处理大量数据和并发请求时的性能和稳定性。

TiDB 的最低配置要求

  1. 开发及测试环境

    • TiDB:至少需要 8 核 CPU、16GB 内存,无特殊要求的本地存储,以及千兆网卡。
    • PD:至少需要 4 核 CPU、8GB 内存,SAS 硬盘(至少 200GB),以及千兆网卡。
    • TiKV:至少需要 8 核 CPU、32GB 内存,SSD 硬盘(至少 200GB),以及千兆网卡。
  2. 生产环境

    • TiDB:推荐配置为 16 核 CPU、48GB 内存,SAS 硬盘,以及万兆网卡(2 块最佳)。
    • PDTiKV:推荐配置分别为 8 核 CPU、16GB 内存和 16 核 CPU、64GB 内存,均需 SSD 硬盘和万兆网卡。

TiDB 配置原因

  • 高性能需求:TiDB 旨在处理大规模数据和高度并发的查询,因此需要较高的 CPU 和内存资源来保证数据处理速度和响应时间。
  • 存储要求:使用 SSD 而非传统机械硬盘,是因为 SSD 具有更快的读写速度,这对于数据库性能至关重要。
  • 网络需求:高速网络(如万兆网卡)有助于减少数据在分布式系统中传输的延迟,提高系统整体性能。

TiDB 需要较高的内存配置,主要基于以下几个原因:

  1. 缓存优化性能:数据库性能在很大程度上依赖于缓存。TiDB 使用内存来缓存数据和索引,以减少对磁盘的访问次数。更多的内存意味着更高的缓存命中率,从而可以显著提高查询性能。

  2. 并发处理能力:TiDB 设计用于处理高并发的工作负载。较大的内存可以支持更多的并发连接和事务,确保系统在多用户同时操作时仍能保持良好的响应速度。

  3. 复杂查询优化:复杂的 SQL 查询可能需要大量的内存来执行排序、聚合等操作。充足的内存可以减少查询过程中因内存不足而导致的性能下降。

  4. 系统稳定性:在内存充足的情况下,系统更不容易出现内存溢出(OOM)的情况,这有助于维持系统的稳定性和可靠性。

  5. 数据持久性与恢复:TiDB 使用 Write-Ahead Logging (WAL) 来保证数据的持久性。足够的内存可以确保 WAL 在内存中的缓冲区足够大,从而在系统崩溃时能够快速恢复。

  6. 未来扩展性:随着业务的发展,数据量和并发请求可能会增加。较高的内存配置可以为未来的增长留出空间,避免短期内因内存不足而需要重新配置服务器。

    48GB 内存对于 TiDB 来说是一个相对平衡的选择,它既能够满足大多数生产环境下的性能需求,又能够在一定程度上保障系统的稳定性和未来的扩展性。

TiDB 的各个组件在内存使用方面的情况如下:

  1. TiKV 节点:在 TiDB 集群中,TiKV 节点的内存占用相对较高,尤其是在导入数据时。TiKV 节点内存的占用主要与 RocksDB 的 block cache 配置有关。其大小设置为系统总内存的 45%。
  2. TiDB Server:在 TiDB 版本 5.2.3 中,内存使用率高的情况通常与慢 SQL 查询有关。例如,某些情况下,HTTP 服务占用了大量内存,这可能是由于特定业务场景(如大量表和字段)导致的。

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...