其他分享
首页 > 其他分享> > TiDB介绍

TiDB介绍

作者:互联网

一、简介

TiDB 是一个分布式 NewSQL 数据库。

支持水平弹性扩展、ACID 事务、标准 SQL、MySQL 语法和 MySQL 协议,具有数据强一致的高可用特性,是一个不仅适合 OLTP 场景还适OLAP 场景的混合数据库。

PingCAP 公司自主设计、研发的开源分布式关系型数据库,是一款同时支持在线事务处理与在线分析处理 (Hybrid Transactional and Analytical Processing, HTAP)的融合型分布式数据库产品,具备水平扩容或者缩容、金融级高可用、实时 HTAP、云原生的分布式数据库、兼容 MySQL 5.7 协议和 MySQL 生态等重要特性。

目标是为用户提供一站式 OLTP (Online Transactional Processing)、OLAP (Online Analytical Processing)、HTAP 解决方案。TiDB 适合高可用、强一致要求较高、数据规模较大等各种应用场景。

二、TiDB架构

整体架构

在这里插入图片描述

三 、特性

不支持的特性

四、用例场景

TiDB旨在支持OLTP和OLAP方案。您可以将TiDB (与MySQL兼容的无状态SQL层)用于OLTP和临时OLAP工作负载,并将TiSpark(Spark的TiDB连接器)用于处理复杂的OLAP查询。

用例场景:

  1. 对于独立数据库,数据量太大
  2. 不想使用手动分片解决方案
  3. 访问方式没有明显的热点
  4. 必须具有事务,强大的一致性和灾难恢复能力

五、优缺点

优点

  1. 高度兼容mysql协议,迁移成本低
  2. 高可用:相比于传统主从(M-S)复制方案,基于 Raft 的多数派选举协议可以提供金融级的 100% 数据强一致性保证,且在不丢失大多数副本的前提下,可以实现故障的自动恢复(auto-failover),无需人工介入。
  3. 支持海量数据,可拓展性强:分布式数据库,可通过增加TiKV节点拓展,支持分裂和自动迁移,对业务基本无感知。
  4. 和传统的分库分表,相比业务拓展性较强:传统的分库分表技术,开发和维护成本都较高,业务侵入性也较大,使用TiDB会明显降低 RD 和 DBA 的开发维护成本。
  5. 分布式事务

缺点

  1. 对硬盘要求很高,没上SSD硬盘的不建议使用

  2. 不支持分区,删除数据是个大坑。

    解决方案:set @@session.tidb_batch_delete=1;

  3. 插入数据太大也会报错

    解决方案:set @@session.tidb_batch_insert=1;

  4. 删除表数据时不支持别名

    delete from 表名 表别名 where 表别名.col = ‘1’ 会报错

  5. 内存使用有问题,GO语言导致不知道回收机制什么时候运作。内存使用过多会导致TIDB当机(这点完全不像MYSQL)

    测试情况是,32G内存,在10分钟后才回收一半。

  6. 数据写入的时候,tidb压力很大, tikv的CPU也占用很高

  7. 不支持GBK

  8. 不支持存储过程

  9. 列数支持太少,只支持100列,和oralce/mysql的1000列少太多(Oracle 最大列数为 1000;MySQL对于每个表具有4096个列的硬限制, 其中InnoDB每个表的限制为1017列, 最大行大小限制为65,535字节)

综合

  1. TiDB目前更适合TB级的海量数据处理,数据量越大,使用场景和优势越明显,
  2. 也比较适合对查询性能要求不高的数据分析场景或离线计算场景
  3. 即时场景下查询上最适合海量数据下进行多维度的精确查询
  4. 整体而言TiDB技术仍不能算成熟,目前还在快速的更新和迭代过程中,容易采坑,建议引入也是先从离线业务->非核心业务->核心业务的使用过程。

六、使用限制

标识符长度限制

标识符类型最大长度(字符)
Database64
Table64
Column64
Index64
View64
Sequence64

Databases、Tables、Views、Connections 总个数限制

标识符类型最大个数
Databasesunlimited
Tablesunlimited
Viewsunlimited
Connectionsunlimited

单个 Database 的限制

类型最大限制
Tablesunlimited

单个 Table 的限制

类型最大限制(默认值)
Columns默认为 1017,最大可调至 4096
Indexs默认为 64,最大可调至 512
Rows无限制
Size无限制
Partitions1024

单行的限制

类型最大限制
Size6MB

单列的限制

类型最大限制
Size6MB

字符串类型限制

类型最大限制
CHAR256 字符
BINARY256 字节
VARBINARY65535 字节
VARCHAR16383 字符
TEXT6MB 字节
BLOB6MB 字节

SQL Statements 的限制

类型最大限制
单个事务最大语句数在使用乐观事务并开启事务重试的情况下,默认限制 5000,可通过 stmt-count-limit 调整

七、软件和硬件建议配置

Linux系统版本要求

Linux 操作系统平台版本
Red Hat Enterprise Linux7.3 及以上
CentOS7.3 及以上
Oracle Enterprise Linux7.3 及以上
Ubuntu LTS16.04 及以上

注意:

  • TiDB 只支持 Red Hat 兼容内核 (RHCK) 的 Oracle Enterprise Linux,不支持 Oracle Enterprise Linux 提供的 Unbreakable Enterprise Kernel。
  • TiDB 在 CentOS 7.3 的环境下进行过大量的测试,同时社区也有很多该操作系统部署的最佳实践,因此,建议使用 CentOS 7.3 以上的 Linux 操作系统来部署 TiDB。
  • 以上 Linux 操作系统可运行在物理服务器以及 VMware、KVM、XEN 主流虚拟化环境上。

服务器建议配置

TiDB 支持部署和运行在 Intel x86-64 架构的 64 位通用硬件服务器平台或者 ARM 架构的硬件服务器平台。对于开发,测试,及生产环境的服务器硬件配置(不包含操作系统 OS 本身的占用)有以下要求和建议:

开发及测试环境

组件CPU内存本地存储网络实例数量(最低要求)
TiDB8 核+16 GB+无特殊要求千兆网卡1(可与 PD 同机器)
PD4 核+8 GB+SAS, 200 GB+千兆网卡1(可与 TiDB 同机器)
TiKV8 核+32 GB+SSD, 200 GB+千兆网卡3
TiFlash32 核+64 GB+SSD, 200 GB+千兆网卡1
TiCDC8 核+16 GB+SAS, 200 GB+千兆网卡1

注意:

  • 验证测试环境中的 TiDB 和 PD 可以部署在同一台服务器上。
  • 如进行性能相关的测试,避免采用低性能存储和网络硬件配置,防止对测试结果的正确性产生干扰。
  • TiKV 的 SSD 盘推荐使用 NVME 接口以保证读写更快。
  • 如果仅验证功能,建议使用 TiDB 数据库快速上手指南进行单机功能测试。
  • TiDB 对于磁盘的使用以存放日志为主,因此在测试环境中对于磁盘类型和容量并无特殊要求。

生产环境

组件CPU内存硬盘类型网络实例数量(最低要求)
TiDB16 核+32 GB+SAS万兆网卡(2 块最佳)2
PD4核+8 GB+SSD万兆网卡(2 块最佳)3
TiKV16 核+32 GB+SSD万兆网卡(2 块最佳)3
TiFlash48 核+128 GB+1 or more SSDs万兆网卡(2 块最佳)2
TiCDC16 核+64 GB+SSD万兆网卡(2 块最佳)2
监控8 核+16 GB+SAS千兆网卡1

注意:

  • 生产环境中的 TiDB 和 PD 可以部署和运行在同服务器上,如对性能和可靠性有更高的要求,应尽可能分开部署。
  • 生产环境强烈推荐使用更高的配置。
  • TiKV 硬盘大小配置建议 PCI-E SSD 不超过 2 TB,普通 SSD 不超过 1.5 TB。
  • TiFlash 支持多盘部署
  • TiFlash 数据目录的第一块磁盘推荐用高性能 SSD 来缓冲 TiKV 同步数据的实时写入,该盘性能应不低于 TiKV 所使用的磁盘,比如 PCI-E SSD。并且该磁盘容量建议不小于总容量的 10%,否则它可能成为这个节点的能承载的数据量的瓶颈。而其他磁盘可以根据需求部署多块普通 SSD,当然更好的 PCI-E SSD 硬盘会带来更好的性能。
  • TiFlash 推荐与 TiKV 部署在不同节点,如果条件所限必须将 TiFlash 与 TiKV 部署在相同节点,则需要适当增加 CPU 核数和内存,且尽量将 TiFlash 与 TiKV 部署在不同的磁盘,以免互相干扰。
  • TiFlash 硬盘总容量大致为:整个 TiKV 集群的需同步数据容量 / TiKV 副本数 * TiFlash 副本数。例如整体 TiKV 的规划容量为 1 TB、TiKV 副本数为 3、TiFlash 副本数为 2,则 TiFlash 的推荐总容量为 1024 GB / 3 * 2。用户可以选择同步部分表数据而非全部,具体容量可以根据需要同步的表的数据量具体分析。
  • TiCDC 硬盘配置建议 200 GB+ PCIE-SSD。

参考文献

PingCAP官方文档

标签:TiFlash,介绍,TiKV,网卡,GB,TiDB,SSD
来源: https://blog.csdn.net/s_trick/article/details/115870327