From 51a3ece27a1221bcbcacbd1bf85b6ace21390e8b Mon Sep 17 00:00:00 2001 From: ruofly0425 Date: Wed, 20 May 2020 15:42:13 +0800 Subject: [PATCH 01/68] Update overview.md --- overview.md | 65 +++++++++++++---------------------------------------- 1 file changed, 15 insertions(+), 50 deletions(-) diff --git a/overview.md b/overview.md index 725d9c2e7b7d..5566871fef62 100644 --- a/overview.md +++ b/overview.md @@ -5,61 +5,26 @@ category: introduction # TiDB 简介 -TiDB 是 PingCAP 公司设计的开源分布式 HTAP (Hybrid Transactional and Analytical Processing) 数据库,结合了传统的 RDBMS 和 NoSQL 的最佳特性。TiDB 兼容 MySQL,支持无限的水平扩展,具备强一致性和高可用性。TiDB 的目标是为 OLTP (Online Transactional Processing) 和 OLAP (Online Analytical Processing) 场景提供一站式的解决方案。 +TiDB 是 PingCAP 公司自主设计、研发的开源分布式数据库,是一款在线事务处理/在线分析处理( HTAP: Hybrid Transactional/Analytical Processing)融合型分布式数据库产品,具备水平扩容或者缩容、高可用、实时 HTAP 、云原生的分布式数据库、兼容 MySQL5.7 协议和 MySQL 生态等重要特性。目标是为用户提供一站式 Online Transactional Processing、OLAP (Online Analytical Processing)、Hybrid Transactional/Analytical Processing 解决方案。TiDB 适合高可用、强一致要求较高,数据规模较大等各种场景。 -TiDB 具备如下特性: +五大核心特性,如下: -- 高度兼容 MySQL +- 一键水平扩容或者缩容 - [大多数情况下](/mysql-compatibility.md),无需修改代码即可从 MySQL 轻松迁移至 TiDB,分库分表后的 MySQL 集群亦可通过 TiDB 工具进行实时迁移。 + 得益于 TiDB 存储计算分离的架构的设计,可按需对计算、存储分别进行在线扩容或者缩容,扩容或者缩容过程中对应用、运维人员透明。 + + - 高可用 -- 水平弹性扩展 + 数据采用多副本存储,数据副本通过 Mutil-Raft 协议同步事务日志,多数派写入成功事务才能提交,确保数据强一致性且少数副本发生故障时不影响数据的可用性。可按需配置副本地理位置、副本数量等策略满足不同容灾级别的要求。 + +- 实时 HTAP - 通过简单地增加新节点即可实现 TiDB 的水平扩展,按需扩展吞吐或存储,轻松应对高并发、海量数据场景。 + 提供行存储引擎 TiKV、列存储引擎 TiFlash 两款存储引擎,TiFlash 通过 Mutil-Raft Lenrner 协议实时从 TiKV 复制数据,确保行存储引擎 TiKV 和列存储引擎 TiFlash 之间的数据强一致。TiKV、TiFlash 可按需部署在不同的机器,解决 HTAP 资源隔离的问题。 + +- 云原生的分布式数据库 -- 分布式事务 + 专为云而设计的分布式数据库,通过[TiDB Operator](https://pingcap.com/docs-cn/tidb-in-kubernetes/stable/tidb-operator-overview/) 可在公有云、私有云、混合云中实现部署工具化、自动化。 - TiDB 100% 支持标准的 ACID 事务。 +- 兼容 MySQL5.7 协议和 MySQL 生态 -- 真正金融级高可用 - - 相比于传统主从 (M-S) 复制方案,基于 Raft 的多数派选举协议可以提供金融级的 100% 数据强一致性保证,且在不丢失大多数副本的前提下,可以实现故障的自动恢复 (auto-failover),无需人工介入。 - -- 一站式 HTAP 解决方案 - - TiDB 作为典型的 OLTP 行存数据库,同时兼具强大的 OLAP 性能,配合 TiSpark,可提供一站式 HTAP 解决方案,一份存储同时处理 OLTP & OLAP,无需传统繁琐的 ETL 过程。 - -- 云原生 SQL 数据库 - - TiDB 是为云而设计的数据库,支持公有云、私有云和混合云,配合 [TiDB Operator 项目](https://pingcap.com/docs-cn/tidb-in-kubernetes/stable/tidb-operator-overview/) 可实现自动化运维,使部署、配置和维护变得十分简单。 - -TiDB 的设计目标是 100% 的 OLTP 场景和 80% 的 OLAP 场景,更复杂的 OLAP 分析可以通过 [TiSpark 项目](/tispark-overview.md)来完成。 - -TiDB 对业务没有任何侵入性,能优雅地替换传统的数据库中间件、数据库分库分表等 Sharding 方案。同时它也让开发运维人员不用关注数据库 Scale 的细节问题,专注于业务开发,极大地提升研发的生产力。 - -三篇文章了解 TiDB 技术内幕: - -- [说存储](https://pingcap.com/blog-cn/tidb-internal-1/) -- [说计算](https://pingcap.com/blog-cn/tidb-internal-2/) -- [谈调度](https://pingcap.com/blog-cn/tidb-internal-3/) - -## 部署方式 - -TiDB 可以部署在本地和云平台上,支持公有云、私有云和混合云。你可以根据实际场景或需求,选择相应的方式来部署 TiDB 集群: - -- [使用 TiUP 部署](/production-deployment-using-tiup.md):如果用于生产环境,推荐使用 TiUP 部署 TiDB 集群。 -- [使用 Docker Compose 部署](/deploy-test-cluster-using-docker-compose.md):如果你只是想测试 TiDB、体验 TiDB 的特性,或者用于开发环境,可以使用 Docker Compose 在本地快速部署 TiDB 集群。该部署方式不适用于生产环境。 -- [使用 Docker 部署](/test-deployment-using-docker.md):你可以使用 Docker 部署 TiDB 集群,但该部署方式不适用于生产环境。 -- [使用 TiDB Operator 部署](https://pingcap.com/docs-cn/tidb-in-kubernetes/stable/deploy-tidb-operator/):使用 TiDB Operator 在 Kubernetes 集群上部署生产就绪的 TiDB 集群,支持[部署到 AWS EKS](https://pingcap.com/docs-cn/tidb-in-kubernetes/stable/deploy-on-aws-eks/)、[部署到谷歌云 GKE (beta)](https://pingcap.com/docs-cn/tidb-in-kubernetes/stable/deploy-on-gcp-gke/)、[部署到阿里云 ACK](https://pingcap.com/docs-cn/tidb-in-kubernetes/stable/deploy-on-alibaba-cloud/) 等。 -- [使用 TiDB Operator 部署到 Minikube](https://pingcap.com/docs-cn/tidb-in-kubernetes/stable/deploy-tidb-from-kubernetes-minikube/):你可以使用 TiDB Operator 将 TiDB 集群部署到本地 Minikube 启动的 Kubernetes 集群中。该部署方式不适用于生产环境。 -- [使用 TiDB Operator 部署到 kind](https://pingcap.com/docs-cn/tidb-in-kubernetes/stable/deploy-tidb-from-kubernetes-kind/):你可以使用 TiDB Operator 将 TiDB 集群部署到以 kind 方式启动的 Kubernetes 本地集群中。该部署方式不适用于生产环境。 - -## 项目源码 - -TiDB 集群所有组件的源码均可从 GitHub 上直接访问: - -- [TiDB](https://github.com/pingcap/tidb) -- [TiKV](https://github.com/tikv/tikv) -- [PD](https://github.com/pingcap/pd) -- [TiSpark](https://github.com/pingcap/tispark) -- [TiDB Operator](https://github.com/pingcap/tidb-operator) + 兼容 MySQL 5.7 协议、MySQL 常用的功能、MySQL 生态,应用无需或者修改少量代码即可从 MySQL 迁移到 TiDB。提供丰富的数据迁移工具帮助应用便捷完成数据迁移。 From a1216f172627de4cbb5adb728988944fbbcb260e Mon Sep 17 00:00:00 2001 From: ruofly0425 Date: Wed, 20 May 2020 17:19:47 +0800 Subject: [PATCH 02/68] Update key-features.md --- key-features.md | 53 +++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 42 insertions(+), 11 deletions(-) diff --git a/key-features.md b/key-features.md index 4d739c036396..53b7d8aceb40 100644 --- a/key-features.md +++ b/key-features.md @@ -5,24 +5,55 @@ category: introduction # TiDB 核心特性 -本文详细介绍 TiDB 的两大核心特性:水平扩展与高可用。 +本文详细介绍 TiDB 的具备的基本功能。 -## 水平扩展 +## 数据类型 -无限水平扩展是 TiDB 的一大特点,这里说的水平扩展包括两方面:计算能力和存储能力。TiDB Server 负责处理 SQL 请求,随着业务的增长,可以简单的添加 TiDB Server 节点,提高整体的处理能力,提供更高的吞吐。TiKV 负责存储数据,随着数据量的增长,可以部署更多的 TiKV Server 节点解决数据 Scale 的问题。PD 会在 TiKV 节点之间以 Region 为单位做调度,将部分数据迁移到新加的节点上。所以在业务的早期,可以只部署少量的服务实例(推荐至少部署 3 个 TiKV, 3 个 PD,2 个 TiDB),随着业务量的增长,按照需求添加 TiKV 或者 TiDB 实例。 +- 数值类型: `BIT、BOOL|BOOLEAN、SMALLINT、MEDIUMINT、INT|INTEGER、BIGINT、FLOAT、DOUBLE、DECIMAL`。 +- 日期和时间类型: `DATE、TIME、DATETIME、TIMESTAMP、YEAR`。 +- 字符串类型: `CHAR、VARCHAR、TEXT、TINYTEXT、MEDIUMTEXT、LONGTEXT、BINARY、VARBINARY、BLOB、TINYBLOB、MEDIUMBLOB、LONGBLOB、ENUM、SET`。 +- JSON 类型。 -## 高可用 +## 运算符 -高可用是 TiDB 的另一大特点,TiDB/TiKV/PD 这三个组件都能容忍部分实例失效,不影响整个集群的可用性。下面分别说明这三个组件的可用性、单个实例失效后的后果以及如何恢复。 +- 算术运符、位运算符、比较运算符、逻辑运算符、日期和时间运算符等。 -- TiDB +## 字符集及排序规则 - TiDB 是无状态的,推荐至少部署两个实例,前端通过负载均衡组件对外提供服务。当单个实例失效时,会影响正在这个实例上进行的 Session,从应用的角度看,会出现单次请求失败的情况,重新连接后即可继续获得服务。单个实例失效后,可以重启这个实例或者部署一个新的实例。 +- 字符集:`UTF8、UTF8MB4、BINARY`。 +- 字符集:`UTF8MB4_GENERAL_CI、UTF8MB4_GENERAL_BIN、UTF8_GENERAL_CI、UTF8_GENERAL_BIN、BINARY`。 -- PD +## 函数 - PD 是一个集群,通过 Raft 协议保持数据的一致性,单个实例失效时,如果这个实例不是 Raft 的 leader,那么服务完全不受影响;如果这个实例是 Raft 的 leader,会重新选出新的 Raft leader,自动恢复服务。PD 在选举的过程中无法对外提供服务,这个时间大约是3秒钟。推荐至少部署三个 PD 实例,单个实例失效后,重启这个实例或者添加新的实例。 +- 控制流函数、字符串函数、日期和时间函数、位函数、数据类型转换函数、数据加解密函数、压缩和解压函数、信息函数、JSON 函数、聚合函数、窗口函数、信息函数等。 -- TiKV +## SQL 语句 - TiKV 是一个集群,通过 Raft 协议保持数据的一致性(副本数量可配置,默认保存三副本),并通过 PD 做负载均衡调度。单个节点失效时,会影响这个节点上存储的所有 Region。对于 Region 中的 Leader 节点,会中断服务,等待重新选举;对于 Region 中的 Follower 节点,不会影响服务。当某个 TiKV 节点失效,并且在一段时间内(默认 30 分钟)无法恢复,PD 会将其上的数据迁移到其他的 TiKV 节点上。 +- 完全支持 `SQL GROUP BY` 和 `ORDER BY` 子语句。 +- 完全支持标准 SQL 语法的 `LEFT OUTER JOIN` 和 `RIGHT OUTER JOIN`。 +- 完全支持标准 SQL 要求的表和列别名。 +- 完全支持 DELETE,INSERT,REPLACE、UPDATE、CREATE、DROP、ALTER 等语句。 + +## 分区表 +- 支持 Range 分区。 +- 支持 Hash 分区。 + +## 视图 +- 支持普通视图。 + +## 约束 +- 支持非空约束。 +- 支持主键约束。 +- 支持唯一约束。 + +## 安全 +- 支持基于 RBAC 的权限管理。 +- 支持密码管理。 +- 支持通信、数据加密。 +- 支持 IP 白名单。 +- 支持审记功能。 + +## 工具 +- 支持快速备份功能 +- 支持通过工具从 MySQL 迁移数据到 TiDB。 +- 支持通过工具部署、运维 TiDB。 From ea4bd958be49fb12484a46013b0abbb1a4471efa Mon Sep 17 00:00:00 2001 From: ruofly0425 Date: Wed, 20 May 2020 17:51:29 +0800 Subject: [PATCH 03/68] Update mysql-compatibility.md --- mysql-compatibility.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/mysql-compatibility.md b/mysql-compatibility.md index 6b8d33079a59..76b03072341d 100644 --- a/mysql-compatibility.md +++ b/mysql-compatibility.md @@ -4,17 +4,14 @@ category: reference aliases: ['/docs-cn/dev/reference/mysql-compatibility/'] --- -# 与 MySQL 兼容性对比 +# 与 MySQL 兼容性对比概览 -TiDB 支持 MySQL 传输协议及其绝大多数的语法。这意味着您现有的 MySQL 连接器和客户端都可以继续使用。大多数情况下您现有的应用都可以迁移至 TiDB,无需任何代码修改。 - -当前 TiDB 服务器官方支持的版本为 MySQL 5.7。大部分 MySQL 运维工具(如 PHPMyAdmin, Navicat, MySQL Workbench 等),以及备份恢复工具(如 mysqldump, Mydumper/myloader)等都可以直接使用。 - -不过一些特性由于在分布式环境下没法很好的实现,目前暂时不支持或者是表现与 MySQL 有差异。一些 MySQL 语法在 TiDB 中可以解析通过,但是不会做任何后续的处理,例如 `Create Table` 语句中 `Engine`,是解析并忽略。 +- TiDB 100% 兼容 MySQL5.7 协议、MySQL5.7 常用的功能及语法,MySQL5.7 生态中系统的工具(PHPMyAdmin, Navicat, MySQL Workbench、mysqldump、Mydumper/myloader)、客户端等均用于 TiDB。 +- TiDB 是一款分布式数据库, MySQL5.7 中的部分特性由于工程实现难较大,投入产出比较低等多种原因在 TiDB 未能实现或者仅兼容语法但功能并没有实现,因此使用过程中请特别注意。例如:`CREATE TABLE` 语句中 `ENGINE`,仅兼容语法功能并没有实现,因此 TiDB 中没有 `ENGINE` 这类的概念。 > **注意:** > -> 本页内容仅涉及 MySQL 与 TiDB 的总体差异。关于[安全特性](/security-compatibility-with-mysql.md)、[悲观事务模型](/pessimistic-transaction.md#和-mysql-innodb-的差异)的兼容信息请查看各自具体页面。 +> 本页内容仅涉及 MySQL 与 TiDB 的总体差异。关于[安全特性](/security-compatibility-with-mysql.md)、[悲观事务模型](/pessimistic-transaction.md#和-mysql-innodb-的差异) 相关的兼容信息请查看各自具体页面。 ## 不支持的特性 @@ -38,11 +35,14 @@ TiDB 支持 MySQL 传输协议及其绝大多数的语法。这意味着您现 * `CHECKSUM TABLE` 语法 * `SELECT INTO FILE` 语法 -## 与 MySQL 有差异的特性 +## 与 MySQL 有差异的特性详细说明 ### 自增 ID -TiDB 中,自增列只保证自增且唯一,并不保证连续分配。TiDB 目前采用批量分配 ID 的方式,所以如果在多台 TiDB 上同时插入数据,分配的自增 ID 会不连续。 +TiDB 中,自增列**仅保证自增且唯一、但不保证自动分配的值的连续性,建议不要将缺省值和自定义值混用,若混用可能会收`Duplicated Error` 的错误信息**。 + + +TiDB 目前采用批量分配 ID 的方式,所以如果在多台 TiDB 上同时插入数据,分配的自增 ID 会不连续。 在集群中有多个 tidb-server 实例时,如果表结构中有自增 ID,建议不要混用缺省值和自定义值,否则在如下情况下会遇到问题。 From 78d177bfc7b2cc680bd896d21d30f9008c24207a Mon Sep 17 00:00:00 2001 From: ruofly0425 Date: Wed, 20 May 2020 18:19:18 +0800 Subject: [PATCH 04/68] Update mysql-compatibility.md --- mysql-compatibility.md | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/mysql-compatibility.md b/mysql-compatibility.md index 76b03072341d..3aeec717f577 100644 --- a/mysql-compatibility.md +++ b/mysql-compatibility.md @@ -39,7 +39,19 @@ aliases: ['/docs-cn/dev/reference/mysql-compatibility/'] ### 自增 ID -TiDB 中,自增列**仅保证自增且唯一、但不保证自动分配的值的连续性,建议不要将缺省值和自定义值混用,若混用可能会收`Duplicated Error` 的错误信息**。 +- TiDB 的自增列仅保证自增且唯一、但不保证自动分配的值的连续性,建议不要将缺省值和自定义值混用,若混用可能会收`Duplicated Error` 的错误信息。 +- TiDB 在工程实现上会在每一个 tidb-server 实例上缓存一段 ID 的值用于给表的自增列分配值,缓存 ID 的个数由表的 `AUTO_ID_CACHE` 确定,默认值:30000,请特别注意:自增列和`_tidb_rowid`都会消耗缓存的 ID 且 如果 `INSERT` 语句中所要求的连续的 ID 个数大于 `AUTO_ID_CACHE` 的值时系统会自动调整 `AUTO_ID_CACHE` 的值以确保该语句能正常执行。 +- TiDB 可通过 `tidb_allow_remove_auto_inc` 系统变量开启或者关闭删除列的 `AUTO_INCREMENT` 属性,删除列属性的语法是:`alter table modify` 或 `alter table change` 。 + +> **注意:** +> +> * `tidb_allow_remove_auto_inc` 要求版本号 >= v2.1.18 或者 >= v3.0.4。 +> * 表的 `AUTO_ID_CACHE` 属性要求版本号 >= v3.0.14 或者 >= v3.1.2 或者 >= v4.0.rc-2。 +> * 在没有指定主键的情况下 TiDB 会使用 `_tidb_rowid` 来标识行,该数值的分配会和自增列(如果存在的话)共用一个分配器。如果指定了自增列为主键,则 TiDB 会用该列来标识行。因此会有以下的示例情况: +> * + +- TiDB +- TiDB 自增 ID 的缓存大小在早期版本中是对用户透明的。从 v3.1.2、v3.0.14 和 v4.0.rc.2 版本开始,TiDB 引入了 `AUTO_ID_CACHE` 表选项来允许用户自主设置自增 ID 分配缓存的大小。其中缓存大小可能会被自增列和 `_tidb_rowid` 共同消耗。此外如果在 `INSERT` 语句中所需连续 ID 长度超过 `AUTO_ID_CACHE` 的长度时,TiDB 会适当调大缓存以便能够保证该语句的正常插入 TiDB 目前采用批量分配 ID 的方式,所以如果在多台 TiDB 上同时插入数据,分配的自增 ID 会不连续。 From e8215d7962b96ede90cd357e76a32e32d169ab55 Mon Sep 17 00:00:00 2001 From: ruofly0425 Date: Thu, 21 May 2020 11:13:34 +0800 Subject: [PATCH 05/68] Update mysql-compatibility.md --- mysql-compatibility.md | 36 ++---------------------------------- 1 file changed, 2 insertions(+), 34 deletions(-) diff --git a/mysql-compatibility.md b/mysql-compatibility.md index 3aeec717f577..d53e72a7e4de 100644 --- a/mysql-compatibility.md +++ b/mysql-compatibility.md @@ -40,45 +40,15 @@ aliases: ['/docs-cn/dev/reference/mysql-compatibility/'] ### 自增 ID - TiDB 的自增列仅保证自增且唯一、但不保证自动分配的值的连续性,建议不要将缺省值和自定义值混用,若混用可能会收`Duplicated Error` 的错误信息。 -- TiDB 在工程实现上会在每一个 tidb-server 实例上缓存一段 ID 的值用于给表的自增列分配值,缓存 ID 的个数由表的 `AUTO_ID_CACHE` 确定,默认值:30000,请特别注意:自增列和`_tidb_rowid`都会消耗缓存的 ID 且 如果 `INSERT` 语句中所要求的连续的 ID 个数大于 `AUTO_ID_CACHE` 的值时系统会自动调整 `AUTO_ID_CACHE` 的值以确保该语句能正常执行。 +- TiDB 在工程实现上会在每一个 tidb-server 实例上缓存一段 ID 的值用于给表的自增列分配值,缓存 ID 的个数由表的 `AUTO_ID_CACHE` 确定,默认值:30000,请特别注意:自增列和`_tidb_rowid`都会消耗缓存的 ID,如果 `INSERT` 语句中所要求的连续的 ID 个数大于 `AUTO_ID_CACHE` 的值时系统会自动调整 `AUTO_ID_CACHE` 的值以确保该语句能正常执行。 - TiDB 可通过 `tidb_allow_remove_auto_inc` 系统变量开启或者关闭删除列的 `AUTO_INCREMENT` 属性,删除列属性的语法是:`alter table modify` 或 `alter table change` 。 > **注意:** > > * `tidb_allow_remove_auto_inc` 要求版本号 >= v2.1.18 或者 >= v3.0.4。 > * 表的 `AUTO_ID_CACHE` 属性要求版本号 >= v3.0.14 或者 >= v3.1.2 或者 >= v4.0.rc-2。 -> * 在没有指定主键的情况下 TiDB 会使用 `_tidb_rowid` 来标识行,该数值的分配会和自增列(如果存在的话)共用一个分配器。如果指定了自增列为主键,则 TiDB 会用该列来标识行。因此会有以下的示例情况: +> * 若创建表时没有指定主键时, TiDB 会使用 `_tidb_rowid` 来标识行,该数值的分配会和自增列(如果存在的话)共用一个分配器。如果指定了自增列为主键,则 TiDB 会用该列来标识行。因此会有以下的示例情况: > * - -- TiDB -- TiDB 自增 ID 的缓存大小在早期版本中是对用户透明的。从 v3.1.2、v3.0.14 和 v4.0.rc.2 版本开始,TiDB 引入了 `AUTO_ID_CACHE` 表选项来允许用户自主设置自增 ID 分配缓存的大小。其中缓存大小可能会被自增列和 `_tidb_rowid` 共同消耗。此外如果在 `INSERT` 语句中所需连续 ID 长度超过 `AUTO_ID_CACHE` 的长度时,TiDB 会适当调大缓存以便能够保证该语句的正常插入 - - -TiDB 目前采用批量分配 ID 的方式,所以如果在多台 TiDB 上同时插入数据,分配的自增 ID 会不连续。 - -在集群中有多个 tidb-server 实例时,如果表结构中有自增 ID,建议不要混用缺省值和自定义值,否则在如下情况下会遇到问题。 - -假设有这样一个带有自增 ID 的表: - -{{< copyable "sql" >}} - -```sql -create table t(id int unique key AUTO_INCREMENT, c int); -``` - -TiDB 实现自增 ID 的原理是每个 tidb-server 实例缓存一段 ID 值用于分配(目前会缓存 30000 个 ID),用完这段值再去取下一段。 - -假设集群中有两个 tidb-server 实例 A 和 B(A 缓存 [1,30000] 的自增 ID,B 缓存 [30001,60000] 的自增 ID),依次执行如下操作: - -1. 客户端向 B 插入一条将 `id` 设置为 1 的语句 `insert into t values (1, 1)`,并执行成功。 -2. 客户端向 A 发送 Insert 语句 `insert into t (c) (1)`,这条语句中没有指定 `id` 的值,所以会由 A 分配,当前 A 缓存了 [1, 30000] 这段 ID,所以会分配 1 为自增 ID 的值,并把本地计数器加 1。而此时数据库中已经存在 `id` 为 1 的数据,最终返回 `Duplicated Error` 错误。 - -另外,从 TiDB 2.1.18 和 3.0.4 版本开始,TiDB 将通过系统变量 `@@tidb_allow_remove_auto_inc` 控制是否允许通过 `alter table modify` 或 `alter table change` 来移除列的 `AUTO_INCREMENT` 属性,默认是不允许移除。 - -> **注意:** -> -> 在没有指定主键的情况下 TiDB 会使用 `_tidb_rowid` 来标识行,该数值的分配会和自增列(如果存在的话)共用一个分配器。如果指定了自增列为主键,则 TiDB 会用该列来标识行。因此会有以下的示例情况: - ```sql mysql> create table t(id int unique key AUTO_INCREMENT); Query OK, 0 rows affected (0.05 sec) @@ -98,8 +68,6 @@ mysql> select _tidb_rowid, id from t; 3 rows in set (0.01 sec) ``` -TiDB 自增 ID 的缓存大小在早期版本中是对用户透明的。从 v3.1.2、v3.0.14 和 v4.0.rc.2 版本开始,TiDB 引入了 `AUTO_ID_CACHE` 表选项来允许用户自主设置自增 ID 分配缓存的大小。其中缓存大小可能会被自增列和 `_tidb_rowid` 共同消耗。此外如果在 `INSERT` 语句中所需连续 ID 长度超过 `AUTO_ID_CACHE` 的长度时,TiDB 会适当调大缓存以便能够保证该语句的正常插入。 - ### Performance schema Performance schema 表在 TiDB 中返回结果为空。TiDB 使用 [Prometheus 和 Grafana](/monitor-a-tidb-cluster.md) 来监测性能指标。 From 3359b90f192fdc8d30d764b51b4510239dc72ee9 Mon Sep 17 00:00:00 2001 From: ruofly0425 Date: Thu, 21 May 2020 12:42:32 +0800 Subject: [PATCH 06/68] Update mysql-compatibility.md --- mysql-compatibility.md | 191 +++++++++++++++++------------------------ 1 file changed, 81 insertions(+), 110 deletions(-) diff --git a/mysql-compatibility.md b/mysql-compatibility.md index d53e72a7e4de..dec172e61ae6 100644 --- a/mysql-compatibility.md +++ b/mysql-compatibility.md @@ -70,136 +70,109 @@ mysql> select _tidb_rowid, id from t; ### Performance schema -Performance schema 表在 TiDB 中返回结果为空。TiDB 使用 [Prometheus 和 Grafana](/monitor-a-tidb-cluster.md) 来监测性能指标。 - -从 TiDB 3.0.4 版本开始,TiDB 支持 `events_statements_summary_by_digest`,参见 [Statement Summary Table](/statement-summary-tables.md)。 +- TiDB 主要使用 [Prometheus 和 Grafana](/monitor-a-tidb-cluster.md) 来存储及查询相关的性能监控指标,故 Performance schema 部分表是空表。 ### 查询计划 -TiDB 的查询计划(`EXPLAIN`/`EXPLAIN FOR`)输出格式与 MySQL 差别较大,同时 `EXPLAIN FOR` 的输出内容与权限设置与 MySQL 不一致,参见[理解 TiDB 执行计划](/query-execution-plan.md)。 +- `EXPLAIN`/`EXPLAIN FOR` 输出格式、内容、权限设置与 MySQL 有比较大的差别,参见[理解 TiDB 执行计划](/query-execution-plan.md)。 ### 内建函数 -TiDB 支持常用的 MySQL 内建函数,但是不是所有的函数都已经支持,具体请参考[语法文档](https://pingcap.github.io/sqlgram/#functioncallkeyword)。 - -### DDL - -在 TiDB 中,运行的 DDL 操作不会影响对表的读取或写入。但是,目前 DDL 变更有如下一些限制: - -+ Add Index - - 不支持同时创建多个索引 - - 其他类型的 Index Type (HASH/BTREE/RTREE) 只有语法支持,功能不支持 -+ Add Column - - 不支持将新创建的列设为主键或唯一索引,也不支持将此列设成 AUTO_INCREMENT 属性 -+ Drop Column: 不支持删除主键列或索引列 -+ Change/Modify Column - - 不支持有损变更,比如从 `BIGINT` 变为 `INTEGER`,或者从 `VARCHAR(255)` 变为 `VARCHAR(10)` - - 不支持修改 `DECIMAL` 类型的精度 - - 不支持更改 `UNSIGNED` 属性 - - 只支持将 `CHARACTER SET` 属性从 `utf8` 更改为 `utf8mb4` -+ `LOCK [=] {DEFAULT|NONE|SHARED|EXCLUSIVE}`: TiDB 支持的语法,但是在 TiDB 中不会生效。所有支持的 DDL 变更都不会锁表。 -+ `ALGORITHM [=] {DEFAULT|INSTANT|INPLACE|COPY}`: TiDB 完全支持 `ALGORITHM=INSTANT` 和 `ALGORITHM=INPLACE` 语法,但运行过程与 MySQL 有所不同,因为 MySQL 中的一些 `INPLACE` 操作实际上是 TiDB 中的 `INSTANT` 操作。`ALGORITHM=COPY` 语法在 TiDB 中不会生效,会返回警告信息。 -+ 单个 `ALTER TABLE` 语句中无法完成多个操作。例如,不能用一个语句来添加多个列或多个索引。 -+ Table Option 不支持以下语法 - - `WITH/WITHOUT VALIDATION` - - `SECONDARY_LOAD/SECONDARY_UNLOAD` - - `CHECK/DROP CHECK` - - `STATS_AUTO_RECALC/STATS_SAMPLE_PAGES` - - `SECONDARY_ENGINE` - - `ENCRYPTION` -+ Table Partition 不支持以下语法 - - `PARTITION BY LIST` - - `PARTITION BY KEY` - - `SUBPARTITION` - - `{CHECK|EXCHANGE|TRUNCATE|OPTIMIZE|REPAIR|IMPORT|DISCARD|REBUILD|REORGANIZE} PARTITION` +- 支持常用的 MySQL 内建函数,有部分函数并未支持,参考[SQL 语法文档](https://pingcap.github.io/sqlgram/#functioncallkeyword)。 + +### DDL 的限制 + +- Add Index + + 同一条 SQL 语句不支持创建多个索引。 + + 仅在语法在支持创建不同类刑的索引 (HASH/BTREE/RTREE),功能未实现。 +- Add Column + + 不支持设置`PRIMARY KEY` 及 `UNIQUE KEY`,不支持设置 `AUTO_INCREMENT` 属性。 +- Drop Column + + 不支持删除主键列及索引列。 +- Change/Modify Column + + 不支持有损变更,比如从 `BIGINT` 变为 `INTEGER`,或者从 `VARCHAR(255)` 变为 `VARCHAR(10)` + + 不支持修改 `DECIMAL` 类型的精度 + + 不支持更改 `UNSIGNED` 属性 + + 只支持将 `CHARACTER SET` 属性从 `utf8` 更改为 `utf8mb4` +- `LOCK [=] {DEFAULT|NONE|SHARED|EXCLUSIVE}` + + 仅在语法上支持,功能未实现,故所有的 DDL 都不会锁表。 +- `ALGORITHM [=] {DEFAULT|INSTANT|INPLACE|COPY}` + + 支持 `ALGORITHM=INSTANT` 和 `ALGORITHM=INPLACE` 语法,但行为与 MySQL 有所不同,MySQL 中的一些 `INPLACE` 操作在 TiDB 中的 是`INSTANT` 操作。 + + 仅在语法上支持 `ALGORITHM=COPY`,功能未实现,会返回警告信息。 +- 单条 `ALTER TABLE` 语句中无法完成多个操作。例如:不能用一条语句来添加多个列或多个索引。 +- Table Option 不支持以下语法: + + `WITH/WITHOUT VALIDATION` + + `SECONDARY_LOAD/SECONDARY_UNLOAD` + + `CHECK/DROP CHECK` + + `STATS_AUTO_RECALC/STATS_SAMPLE_PAGES` + + `SECONDARY_ENGINE` + + `ENCRYPTION` +- Table Partition 不支持以下语法: + + `PARTITION BY LIST` + + `PARTITION BY KEY` + + `SUBPARTITION` + + `{CHECK|EXCHANGE|TRUNCATE|OPTIMIZE|REPAIR|IMPORT|DISCARD|REBUILD|REORGANIZE} PARTITION` ### `ANALYZE TABLE` -- [`ANALYZE TABLE`](/statistics.md#手动收集) 语句在 TiDB 和 MySQL 中表现不同。在 MySQL/InnoDB 中,它是一个轻量级语句,执行过程较短;而在 TiDB 中,它会完全重构表的统计数据,语句执行过程较长。 +- [`ANALYZE TABLE`](/statistics.md#手动收集) 语句会完全重构表的统计数据,语句执行过程较长,但在 MySQL/InnoDB 中,它是一个轻量级语句,执行过程较短。 ### 视图 -目前 TiDB 不支持对视图进行 `UPDATE`、`INSERT`、`DELETE` 等写入操作。 +- 不支持 `UPDATE`、`INSERT`、`DELETE` 等写入操作。 ### 存储引擎 -出于兼容性原因,TiDB 支持使用备用存储引擎创建表的语法。元数据命令将表描述为 InnoDB 存储引擎: - -{{< copyable "sql" >}} - -```sql -CREATE TABLE t1 (a INT) ENGINE=MyISAM; -``` - -``` -Query OK, 0 rows affected (0.14 sec) -``` - -{{< copyable "sql" >}} - -```sql -SHOW CREATE TABLE t1; -``` - -``` -*************************** 1. row *************************** - Table: t1 -Create Table: CREATE TABLE `t1` ( - `a` int(11) DEFAULT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin -1 row in set (0.00 sec) -``` - -从架构上讲,TiDB 确实支持类似 MySQL 的存储引擎抽象,在启动 TiDB(通常是 `tikv`)时 [`--store`](/command-line-flags-for-tidb-configuration.md#store) 选项指定的引擎中创建用户表。 +- 仅在语法上兼容创建表时指定存储引擎,实际上 TiDB 会将元信息统一描述为 InnoDB 存储引擎。TiDB 支持类似 MySQL 的存储引擎抽象,但需要在系统启动时通过[`--store`](/command-line-flags-for-tidb-configuration.md#store) 配置项来指定存储引擎。 ### SQL 模式 -TiDB 支持 MySQL 5.7 中 **绝大多数的 SQL 模式**,以下几种模式除外: - -- TiDB 不支持兼容模式(例如 `ORACLE` 和 `POSTGRESQL`)。MySQL 5.7 已弃用兼容模式,MySQL 8.0 已移除兼容模式。 -- TiDB 中的 `ONLY_FULL_GROUP_BY` 与 MySQL 5.7 相比有细微的[语义差别](/functions-and-operators/aggregate-group-by-functions.md#与-mysql-的区别),此问题日后将予以解决。 -- `NO_DIR_IN_CREATE` 和 `NO_ENGINE_SUBSTITUTION` 这两种 SQL 模式用于解决兼容问题,但并不适用于 TiDB。 +- 不支持兼容模式,例如: `ORACLE` 和 `POSTGRESQL`,MySQL 5.7 已弃用兼容模式,MySQL 8.0 已移除兼容模式。 +- `ONLY_FULL_GROUP_BY` 与 MySQL 5.7 相比有细微的[语义差别](/functions-and-operators/aggregate-group-by-functions.md#与-mysql-的区别)。 +- `NO_DIR_IN_CREATE` 和 `NO_ENGINE_SUBSTITUTION` MySQL 用于解决兼容问题,并不适用于 TiDB。 ### 默认设置的区别 -+ 默认字符集与 MySQL 不同: - + TiDB 中为 `utf8mb4` - + MySQL 5.7 中为 `latin1`,MySQL 8.0 中修改为 `utf8mb4` -+ 默认排序规则不同: - + TiDB 中,`utf8mb4` 的默认排序规则为 `utf8mb4_bin` - + MySQL 5.7 中,`utf8mb4` 的默认排序规则为 `utf8mb4_general_ci`,MySQL 8.0 中修改为 `utf8mb4_0900_ai_ci` - + 请使用 [`SHOW CHARACTER SET`](/sql-statements/sql-statement-show-character-set.md) 语句查看所有字符集的默认排序规则 -+ `foreign_key_checks` 的默认值不同: - + TiDB 中该值默认为 `OFF`,并且目前 TiDB 只支持设置该值为 `OFF`。 - + MySQL 5.7 中该值默认为 `ON`。 -+ 默认 SQL mode 与 MySQL 5.7 相同,与 MySQL 8.0 不同: - + TiDB 中为 `ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION` - + MySQL 中默认设置: - + MySQL 5.7 的默认 SQL mode 与 TiDB 相同 - + MySQL 8.0 中为 `ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION` -+ `lower_case_table_names` 的默认值不同: - + TiDB 中该值默认为 2,并且目前 TiDB 只支持设置该值为 2 - + MySQL 中默认设置: - + Linux 系统中该值为 0 - + Windows 系统中该值为 1 - + macOS 系统中该值为 2 -+ `explicit_defaults_for_timestamp` 的默认值不同: - + TiDB 中该值默认为 `ON`,并且目前 TiDB 只支持设置该值为 `ON` - + MySQL 中默认设置: - + MySQL 5.7:`OFF` - + MySQL 8.0:`ON` +- 字符集: + + TiDB 默认:`utf8mb4`。 + + MySQL 5.7 默认:`latin1`。 + + MySQL 8.0 默认: `utf8mb4`。 + +- 排序规则: + + TiDB 中 `utf8mb4` 字符集默认: `utf8mb4_bin`。 + + MySQL 5.7 中 `utf8mb4` 字符集默认: `utf8mb4_general_ci`。 + + MySQL 8.0 中 `utf8mb4` 字符集默认: `utf8mb4_0900_ai_ci`。 + +- `foreign_key_checks`: + + TiDB 默认: `OFF`,且仅支持设置该值为 `OFF`。 + + MySQL 5.7 默认: `ON`。 + +- SQL mode: + + TiDB 默认: `ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION` + + MySQL 5.7 默认 与 TiDB 相同。 + + MySQL 8.0 默认 `ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION`。 + +- `lower_case_table_names`: + + TiDB 默认: 2,且仅支持设置该值为 2。 + + MySQL 默认如下: + - Linux 系统中该值为 0 + - Windows 系统中该值为 1 + - macOS 系统中该值为 2 + +- `explicit_defaults_for_timestamp`: + + TiDB 默认: `ON`,且仅支持设置该值为 `ON`。 + + MySQL 5.7 默认:`OFF`。 + + MySQL 8.0 默认:`ON`。 ### 日期时间处理的区别 #### 时区 -MySQL 默认使用本地时区,依赖于系统内置的当前的时区规则(例如什么时候开始夏令时等)进行计算;且在未[导入时区表数据](https://dev.mysql.com/doc/refman/8.0/en/time-zone-support.html#time-zone-installation)的情况下不能通过时区名称来指定时区。 - -TiDB 不需要导入时区表数据也能使用所有时区名称,采用系统当前安装的所有时区规则进行计算(一般为 `tzdata` 包),且无法通过导入时区表数据的形式修改计算规则。 - +- TiDB 采用系统当前安装的所有时区规则进行计算(一般为 `tzdata` 包), 不需要导入时区表数据就能使用所有时区名称,无法通过导入时区表数据的形式修改计算规则。 +- MySQL 默认使用本地时区,依赖于系统内置的当前的时区规则(例如什么时候开始夏令时等)进行计算;且在未[导入时区表数据](https://dev.mysql.com/doc/refman/8.0/en/time-zone-support.html#time-zone-installation)的情况下不能通过时区名称来指定时区。 > **注意:** > -> 能下推到 TiKV 的时间相关表达式会由 TiKV 进行计算。TiKV 总是采用 TiKV 内置时区规则计算,而不依赖于系统所安装的时区规则。若系统安装的时区规则与 TiKV 内置的时区规则版本不匹配,则在少数情况下可能发生能插入的时间数据无法再读出来的问题。例如,若系统上安装了 tzdata 2018a 时区规则,则在时区设置为 Asia/Shanghai 或时区设置为本地时区且本地时区为 Asia/Shanghai 的情况下,时间 `1988-04-17 02:00:00` 可以被正常插入 TiDB 3.0 RC.1,但该记录对于特定类型 SQL 则无法再读出来,原因是 TiKV 3.0 RC.1 依据的 tzdata 2018i 规则中该时间在 Asia/Shanghai 时区中不存在(夏令时时间后移一小时)。 +> TiKV 采用自己内置时区规则来计算,若系统安装的时区规则与 TiKV 内置的时区规则版本不匹配时,部分情况下可能会发生写入的数据无法读出来的情况。例如,若系统上安装了 tzdata 2018a 时区规则,则在时区设置为 Asia/Shanghai 或时区设置为本地时区且本地时区为 Asia/Shanghai 的情况下,时间 `1988-04-17 02:00:00` 可以被正常插入 TiDB 3.0 RC.1,但该记录对于特定类型 SQL 则无法再读出来,原因是 TiKV 3.0 RC.1 依据的 tzdata 2018i 规则中该时间在 Asia/Shanghai 时区中不存在(夏令时时间后移一小时)。 > > TiKV 各个版本内置的时区规则如下: > @@ -208,13 +181,11 @@ TiDB 不需要导入时区表数据也能使用所有时区名称,采用系统 #### 零月和零日 -与 MySQL 一样,TiDB 默认启用了 `NO_ZERO_DATE` 和 `NO_ZERO_IN_DATE` 模式,不建议将这两个模式设为禁用。尽管将这些模式设为禁用时 TiDB 仍可正常使用,但 TiKV coprocessor 会受到影响,具体表现为,执行特定类型的语句,将日期和时间处理函数下推到 TiKV 时可能会导致语句错误。 - -### 类型系统的区别 +- 与 MySQL 一样,TiDB 默认启用了 `NO_ZERO_DATE` 和 `NO_ZERO_IN_DATE` 模式,不建议将这两个模式设为禁用。尽管将这些模式设为禁用时 TiDB 仍可正常使用,但 TiKV coprocessor 会受到影响,具体表现为,执行特定类型的语句,将日期和时间处理函数下推到 TiKV 时可能会导致语句错误。 -以下的列类型 MySQL 支持,但 TiDB 不支持: +### 类型系统 -+ FLOAT4/FLOAT8 -+ FIXED (alias for DECIMAL) -+ SERIAL (alias for BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE) -+ SQL_TSI_* (包括 SQL_TSI_YEAR、SQL_TSI_MONTH、SQL_TSI_WEEK、SQL_TSI_DAY、SQL_TSI_HOUR、SQL_TSI_MINUTE 和 SQL_TSI_SECOND) ++ 不支持 FLOAT4/FLOAT8 ++ 不支持 FIXED (alias for DECIMAL) ++ 不支持 SERIAL (alias for BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE) ++ 不支持 SQL_TSI_* (包括 SQL_TSI_YEAR、SQL_TSI_MONTH、SQL_TSI_WEEK、SQL_TSI_DAY、SQL_TSI_HOUR、SQL_TSI_MINUTE 和 SQL_TSI_SECOND) From 8b9dee579ecc3060407b0ea749f1eeeac162134e Mon Sep 17 00:00:00 2001 From: ruofly0425 Date: Thu, 21 May 2020 12:45:03 +0800 Subject: [PATCH 07/68] Update mysql-compatibility.md --- mysql-compatibility.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mysql-compatibility.md b/mysql-compatibility.md index dec172e61ae6..0bd0845f6d30 100644 --- a/mysql-compatibility.md +++ b/mysql-compatibility.md @@ -13,7 +13,7 @@ aliases: ['/docs-cn/dev/reference/mysql-compatibility/'] > > 本页内容仅涉及 MySQL 与 TiDB 的总体差异。关于[安全特性](/security-compatibility-with-mysql.md)、[悲观事务模型](/pessimistic-transaction.md#和-mysql-innodb-的差异) 相关的兼容信息请查看各自具体页面。 -## 不支持的特性 +## 不支持的功能特性 * 存储过程与函数 * 触发器 @@ -48,7 +48,7 @@ aliases: ['/docs-cn/dev/reference/mysql-compatibility/'] > * `tidb_allow_remove_auto_inc` 要求版本号 >= v2.1.18 或者 >= v3.0.4。 > * 表的 `AUTO_ID_CACHE` 属性要求版本号 >= v3.0.14 或者 >= v3.1.2 或者 >= v4.0.rc-2。 > * 若创建表时没有指定主键时, TiDB 会使用 `_tidb_rowid` 来标识行,该数值的分配会和自增列(如果存在的话)共用一个分配器。如果指定了自增列为主键,则 TiDB 会用该列来标识行。因此会有以下的示例情况: -> * +> ```sql mysql> create table t(id int unique key AUTO_INCREMENT); Query OK, 0 rows affected (0.05 sec) From 2348c6da0e475587b899fef1955ffbe082a8c20d Mon Sep 17 00:00:00 2001 From: ruofly0425 Date: Thu, 21 May 2020 14:01:54 +0800 Subject: [PATCH 08/68] Update tidb-limitations.md --- tidb-limitations.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tidb-limitations.md b/tidb-limitations.md index e69de29bb2d1..c665dd422301 100644 --- a/tidb-limitations.md +++ b/tidb-limitations.md @@ -0,0 +1,4 @@ +--- +title: TiDB 限制说明 +category: introduction +--- From be34c99f020ba4f704001c8d7a609c7b58976789 Mon Sep 17 00:00:00 2001 From: ruofly0425 Date: Thu, 21 May 2020 14:10:41 +0800 Subject: [PATCH 09/68] Update tidb-limitations.md --- tidb-limitations.md | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/tidb-limitations.md b/tidb-limitations.md index c665dd422301..0e51a7b1c820 100644 --- a/tidb-limitations.md +++ b/tidb-limitations.md @@ -1,4 +1,17 @@ --- -title: TiDB 限制说明 +title: TiDB 使用限制 category: introduction --- + +# 使用限制 + +本文会将详细描述 TiDB 中常见的使用限制,包括:标识符长度,最大支持的数据库、表、索引、分区表、序列等的个数 + +## 标识符长度限制说明 + +| 标识符类型 | 最大长度(字符) | +|:---------------------------|:---------------------------| +| Database | 64 | +| Table | 64 | + +## 贡献文档 From 3bb6475c5b283f4af9f51e5b2a1217af578b1beb Mon Sep 17 00:00:00 2001 From: ruofly0425 Date: Thu, 21 May 2020 14:16:39 +0800 Subject: [PATCH 10/68] Update tidb-limitations.md --- tidb-limitations.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tidb-limitations.md b/tidb-limitations.md index 0e51a7b1c820..78ed9774cce5 100644 --- a/tidb-limitations.md +++ b/tidb-limitations.md @@ -13,5 +13,10 @@ category: introduction |:---------------------------|:---------------------------| | Database | 64 | | Table | 64 | +| Cloumn | 64 | +| Index | 64 | +| View | 64 | +| Sequence | 64 | +| User Name| 32 | ## 贡献文档 From 0fed0c6f73069bb2fb5530d9ef6d651dc9a6cab4 Mon Sep 17 00:00:00 2001 From: ruofly0425 Date: Thu, 21 May 2020 14:25:58 +0800 Subject: [PATCH 11/68] Update tidb-limitations.md --- tidb-limitations.md | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/tidb-limitations.md b/tidb-limitations.md index 78ed9774cce5..1fa15875cbec 100644 --- a/tidb-limitations.md +++ b/tidb-limitations.md @@ -7,16 +7,21 @@ category: introduction 本文会将详细描述 TiDB 中常见的使用限制,包括:标识符长度,最大支持的数据库、表、索引、分区表、序列等的个数 -## 标识符长度限制说明 +## 标识符长度限制 -| 标识符类型 | 最大长度(字符) | -|:---------------------------|:---------------------------| +| 标识符类型 | 最大长度(字符)| +|:---------|:--------------| | Database | 64 | | Table | 64 | | Cloumn | 64 | | Index | 64 | | View | 64 | | Sequence | 64 | -| User Name| 32 | -## 贡献文档 +## Databases、Tables、Views 总个数限制 + +| 标识符类型 | 最大个数 | +|:----------|:--------| +| Databases | unlimit | +| Tables | unlimit | +| Views | unlimit | From 60203eaeab9923bfe01c3b96b3e0ef0f8e3a104c Mon Sep 17 00:00:00 2001 From: ruofly0425 Date: Thu, 21 May 2020 14:35:42 +0800 Subject: [PATCH 12/68] Update tidb-limitations.md --- tidb-limitations.md | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/tidb-limitations.md b/tidb-limitations.md index 1fa15875cbec..b9e26a0dd1c4 100644 --- a/tidb-limitations.md +++ b/tidb-limitations.md @@ -18,10 +18,22 @@ category: introduction | View | 64 | | Sequence | 64 | -## Databases、Tables、Views 总个数限制 +## Databases、Tables、Views、Connections 总个数限制 + +| 标识符类型 | 最大个数 | +|:----------|:----------| +| Databases | unlimited | +| Tables | unlimited | +| Views | unlimited | +| Connections| unlimited | + +## 单个 Table 相关的限制 + +| 类型 | 最大个数 | +|:----------|:----------| +| Cloumns | 512 | +| Indexs | 64 | +| Rows | unlimited | +| Size | unlimited | + -| 标识符类型 | 最大个数 | -|:----------|:--------| -| Databases | unlimit | -| Tables | unlimit | -| Views | unlimit | From ea0e1de1474ab5d9c1caaede295a22abca457df4 Mon Sep 17 00:00:00 2001 From: ruofly0425 Date: Thu, 21 May 2020 14:50:23 +0800 Subject: [PATCH 13/68] Update tidb-limitations.md --- tidb-limitations.md | 44 +++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 41 insertions(+), 3 deletions(-) diff --git a/tidb-limitations.md b/tidb-limitations.md index b9e26a0dd1c4..c3f4f63ae99c 100644 --- a/tidb-limitations.md +++ b/tidb-limitations.md @@ -25,15 +25,53 @@ category: introduction | Databases | unlimited | | Tables | unlimited | | Views | unlimited | -| Connections| unlimited | +| Connections| unlimited| -## 单个 Table 相关的限制 -| 类型 | 最大个数 | +## 单个 Database 的限制 + +| 类型 | 最大限制 | +|:----------|:----------| +| Tables |unlimited | + +## 单个 Table 的限制 + +| 类型 | 最大限制 | |:----------|:----------| | Cloumns | 512 | | Indexs | 64 | | Rows | unlimited | | Size | unlimited | +| Partitions| 1024 | + +## 单行的限制 + +| 类型 | 最大限制 | +|:----------|:----------| +| Sze | 6MB | +## 单列的限制 +| 类型 | 最大限制 | +|:----------|:----------| +| Sze | 6MB | + +## 字符串类型限制 + +| 类型 | 最大限制 | +|:----------|:----------| +| CHAR | 256 字符 | +| BINARY | 256 字节 | +| VARBINARY | 65535 字节 | +| VARCHAR | 16383 字符 | +| TEXT | 6MB 字节 | +| BLOB | 6MB 字节 | + +## SQL Statements 的限制 + +| 类型 | 最大限制 | +|:----------|:----------| +| 单条 INSERT statement 语句写入的 Key-Value 对数量 | 3000000 | +| 单个事务写入的行数 | 3000000 / 单个表索引的数量 | +| 单条 INSERT statement 语句写入的 Key-Value 对数量 | 3000000 | +| 单个事务写入的行数 | 3000000 / 单个表索引的数量 | From 5878942c72133350082dbe0e8eddff52887a1e8f Mon Sep 17 00:00:00 2001 From: ruofly0425 Date: Thu, 21 May 2020 15:59:10 +0800 Subject: [PATCH 14/68] Update overview.md Co-authored-by: Lilian Lee --- overview.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/overview.md b/overview.md index 5566871fef62..77c76c8116e8 100644 --- a/overview.md +++ b/overview.md @@ -5,7 +5,7 @@ category: introduction # TiDB 简介 -TiDB 是 PingCAP 公司自主设计、研发的开源分布式数据库,是一款在线事务处理/在线分析处理( HTAP: Hybrid Transactional/Analytical Processing)融合型分布式数据库产品,具备水平扩容或者缩容、高可用、实时 HTAP 、云原生的分布式数据库、兼容 MySQL5.7 协议和 MySQL 生态等重要特性。目标是为用户提供一站式 Online Transactional Processing、OLAP (Online Analytical Processing)、Hybrid Transactional/Analytical Processing 解决方案。TiDB 适合高可用、强一致要求较高,数据规模较大等各种场景。 +TiDB 是 PingCAP 公司自主设计、研发的开源分布式数据库,是一款同时支持在线事务处理与在线分析处理 (Hybrid Transactional and Analytical Processing, HTAP)的融合型分布式数据库产品,具备水平扩容或者缩容、高可用、实时 HTAP、云原生的分布式数据库、兼容 MySQL 5.7 协议和 MySQL 生态等重要特性。目标是为用户提供一站式 OLTP (Online Transactional Processing)、OLAP (Online Analytical Processing)、HTAP 解决方案。TiDB 适合高可用、强一致要求较高、数据规模较大等各种场景。 五大核心特性,如下: From 0f3941e884f1fba70bdd9e49d4456a625525919c Mon Sep 17 00:00:00 2001 From: ruofly0425 Date: Thu, 21 May 2020 15:59:35 +0800 Subject: [PATCH 15/68] Update overview.md Co-authored-by: Lilian Lee --- overview.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/overview.md b/overview.md index 77c76c8116e8..3e0bf00cc059 100644 --- a/overview.md +++ b/overview.md @@ -23,7 +23,7 @@ TiDB 是 PingCAP 公司自主设计、研发的开源分布式数据库,是一 - 云原生的分布式数据库 - 专为云而设计的分布式数据库,通过[TiDB Operator](https://pingcap.com/docs-cn/tidb-in-kubernetes/stable/tidb-operator-overview/) 可在公有云、私有云、混合云中实现部署工具化、自动化。 + 专为云而设计的分布式数据库,通过 [TiDB Operator](https://pingcap.com/docs-cn/tidb-in-kubernetes/stable/tidb-operator-overview/) 可在公有云、私有云、混合云中实现部署工具化、自动化。 - 兼容 MySQL5.7 协议和 MySQL 生态 From 4c89b3bff66c4a3a9f29e58d18f4bea6356badfe Mon Sep 17 00:00:00 2001 From: ruofly0425 Date: Thu, 21 May 2020 16:04:06 +0800 Subject: [PATCH 16/68] Update key-features.md Co-authored-by: Keke Yi <40977455+yikeke@users.noreply.github.com> --- key-features.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/key-features.md b/key-features.md index 53b7d8aceb40..9119529e3d7e 100644 --- a/key-features.md +++ b/key-features.md @@ -5,7 +5,7 @@ category: introduction # TiDB 核心特性 -本文详细介绍 TiDB 的具备的基本功能。 +本文详细介绍 TiDB 具备的基本功能。 ## 数据类型 From 03a17a713e14095ed8d376edf11fb048351a4a68 Mon Sep 17 00:00:00 2001 From: ruofly0425 Date: Thu, 21 May 2020 19:17:38 +0800 Subject: [PATCH 17/68] Update overview.md Co-authored-by: Lilian Lee --- overview.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/overview.md b/overview.md index 3e0bf00cc059..375162b3103d 100644 --- a/overview.md +++ b/overview.md @@ -15,7 +15,7 @@ TiDB 是 PingCAP 公司自主设计、研发的开源分布式数据库,是一 - 高可用 - 数据采用多副本存储,数据副本通过 Mutil-Raft 协议同步事务日志,多数派写入成功事务才能提交,确保数据强一致性且少数副本发生故障时不影响数据的可用性。可按需配置副本地理位置、副本数量等策略满足不同容灾级别的要求。 + 数据采用多副本存储,数据副本通过 Multi-Raft 协议同步事务日志,多数派写入成功事务才能提交,确保数据强一致性且少数副本发生故障时不影响数据的可用性。可按需配置副本地理位置、副本数量等策略满足不同容灾级别的要求。 - 实时 HTAP From 93c40e7fde88d6352761bbef20a9fab20f169e23 Mon Sep 17 00:00:00 2001 From: ruofly0425 Date: Thu, 21 May 2020 19:18:44 +0800 Subject: [PATCH 18/68] Update overview.md Co-authored-by: Lilian Lee --- overview.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/overview.md b/overview.md index 375162b3103d..b0c350cb39cf 100644 --- a/overview.md +++ b/overview.md @@ -19,7 +19,7 @@ TiDB 是 PingCAP 公司自主设计、研发的开源分布式数据库,是一 - 实时 HTAP - 提供行存储引擎 TiKV、列存储引擎 TiFlash 两款存储引擎,TiFlash 通过 Mutil-Raft Lenrner 协议实时从 TiKV 复制数据,确保行存储引擎 TiKV 和列存储引擎 TiFlash 之间的数据强一致。TiKV、TiFlash 可按需部署在不同的机器,解决 HTAP 资源隔离的问题。 + 提供行存储引擎 TiKV、列存储引擎 TiFlash 两款存储引擎,TiFlash 通过 Multi-Raft Learner 协议实时从 TiKV 复制数据,确保行存储引擎 TiKV 和列存储引擎 TiFlash 之间的数据强一致。TiKV、TiFlash 可按需部署在不同的机器,解决 HTAP 资源隔离的问题。 - 云原生的分布式数据库 From 7d0d8adc52498be347505dfee1bfc1fbea4e4890 Mon Sep 17 00:00:00 2001 From: ruofly0425 Date: Thu, 21 May 2020 19:19:54 +0800 Subject: [PATCH 19/68] Update overview.md Co-authored-by: Lilian Lee --- overview.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/overview.md b/overview.md index b0c350cb39cf..9d144d29fe11 100644 --- a/overview.md +++ b/overview.md @@ -25,6 +25,6 @@ TiDB 是 PingCAP 公司自主设计、研发的开源分布式数据库,是一 专为云而设计的分布式数据库,通过 [TiDB Operator](https://pingcap.com/docs-cn/tidb-in-kubernetes/stable/tidb-operator-overview/) 可在公有云、私有云、混合云中实现部署工具化、自动化。 -- 兼容 MySQL5.7 协议和 MySQL 生态 +- 兼容 MySQL 5.7 协议和 MySQL 生态 兼容 MySQL 5.7 协议、MySQL 常用的功能、MySQL 生态,应用无需或者修改少量代码即可从 MySQL 迁移到 TiDB。提供丰富的数据迁移工具帮助应用便捷完成数据迁移。 From 7828fbc9d7b23645b0411abb7cc5da693fb9d1ca Mon Sep 17 00:00:00 2001 From: ruofly0425 Date: Thu, 21 May 2020 19:21:14 +0800 Subject: [PATCH 20/68] Update key-features.md --- key-features.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/key-features.md b/key-features.md index 9119529e3d7e..8d6c5d9a44f5 100644 --- a/key-features.md +++ b/key-features.md @@ -21,7 +21,7 @@ category: introduction ## 字符集及排序规则 - 字符集:`UTF8、UTF8MB4、BINARY`。 -- 字符集:`UTF8MB4_GENERAL_CI、UTF8MB4_GENERAL_BIN、UTF8_GENERAL_CI、UTF8_GENERAL_BIN、BINARY`。 +- 排序规则:`UTF8MB4_GENERAL_CI、UTF8MB4_GENERAL_BIN、UTF8_GENERAL_CI、UTF8_GENERAL_BIN、BINARY`。 ## 函数 From 4ba0ff30e4a65a635ab498a23537b8408aac0bc6 Mon Sep 17 00:00:00 2001 From: ruofly0425 Date: Thu, 21 May 2020 19:21:40 +0800 Subject: [PATCH 21/68] Update mysql-compatibility.md Co-authored-by: Zhang Jian --- mysql-compatibility.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mysql-compatibility.md b/mysql-compatibility.md index 0bd0845f6d30..181bf15b4791 100644 --- a/mysql-compatibility.md +++ b/mysql-compatibility.md @@ -39,7 +39,7 @@ aliases: ['/docs-cn/dev/reference/mysql-compatibility/'] ### 自增 ID -- TiDB 的自增列仅保证自增且唯一、但不保证自动分配的值的连续性,建议不要将缺省值和自定义值混用,若混用可能会收`Duplicated Error` 的错误信息。 +- TiDB 的自增列仅保证自增且唯一、但不保证自动分配的值的连续性,建议不要将缺省值和自定义值混用,若混用可能会收 `Duplicated Error` 的错误信息。 - TiDB 在工程实现上会在每一个 tidb-server 实例上缓存一段 ID 的值用于给表的自增列分配值,缓存 ID 的个数由表的 `AUTO_ID_CACHE` 确定,默认值:30000,请特别注意:自增列和`_tidb_rowid`都会消耗缓存的 ID,如果 `INSERT` 语句中所要求的连续的 ID 个数大于 `AUTO_ID_CACHE` 的值时系统会自动调整 `AUTO_ID_CACHE` 的值以确保该语句能正常执行。 - TiDB 可通过 `tidb_allow_remove_auto_inc` 系统变量开启或者关闭删除列的 `AUTO_INCREMENT` 属性,删除列属性的语法是:`alter table modify` 或 `alter table change` 。 From a7ca276c17207e9df53b29ae8597084c46442500 Mon Sep 17 00:00:00 2001 From: ruofly0425 Date: Fri, 22 May 2020 11:10:07 +0800 Subject: [PATCH 22/68] Update overview.md --- overview.md | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/overview.md b/overview.md index 9d144d29fe11..5b1d28b8184f 100644 --- a/overview.md +++ b/overview.md @@ -5,9 +5,9 @@ category: introduction # TiDB 简介 -TiDB 是 PingCAP 公司自主设计、研发的开源分布式数据库,是一款同时支持在线事务处理与在线分析处理 (Hybrid Transactional and Analytical Processing, HTAP)的融合型分布式数据库产品,具备水平扩容或者缩容、高可用、实时 HTAP、云原生的分布式数据库、兼容 MySQL 5.7 协议和 MySQL 生态等重要特性。目标是为用户提供一站式 OLTP (Online Transactional Processing)、OLAP (Online Analytical Processing)、HTAP 解决方案。TiDB 适合高可用、强一致要求较高、数据规模较大等各种场景。 +TiDB 是 PingCAP 公司自主设计、研发的开源分布式数据库,是一款同时支持在线事务处理与在线分析处理 (Hybrid Transactional and Analytical Processing, HTAP)的融合型分布式数据库产品,具备水平扩容或者缩容、高可用、实时 HTAP、云原生的分布式数据库、兼容 MySQL 5.7 协议和 MySQL 生态等重要特性。目标是为用户提供一站式 OLTP (Online Transactional Processing)、OLAP (Online Analytical Processing)、HTAP 解决方案。TiDB 适合高可用、强一致要求较高、数据规模较大等各种应用场景。 -五大核心特性,如下: +## 五大核心特性 - 一键水平扩容或者缩容 @@ -28,3 +28,23 @@ TiDB 是 PingCAP 公司自主设计、研发的开源分布式数据库,是一 - 兼容 MySQL 5.7 协议和 MySQL 生态 兼容 MySQL 5.7 协议、MySQL 常用的功能、MySQL 生态,应用无需或者修改少量代码即可从 MySQL 迁移到 TiDB。提供丰富的数据迁移工具帮助应用便捷完成数据迁移。 + +## 四大核心应用场景 + +- 对数据一致性及高可靠、系统高可用、可扩展性、容灾要求较高的金融行业属性的场景 + + 众所周知,金融行业对数据一致性及高可靠、系统高可用、可扩展性、容灾要求较高,传统的解决方案是同城两个机房提供服务、异地一个机房提供数据容灾能务但不提供服务,此解决方案存在资源利用率低、维扩成本高、RTO 及 PRO 无法真实达到企业所期望的值。TiDB 采用多副本 + Mutli Raft 协议的方式将数据调度到不同的机房、机架、机器,当部分机器故障时系统可自动进行切换,确保系统的 RTO <= 30s 及 RPO = 0 。 + +- 对存储容量、可扩展性、并发要求较高的海量数量及高并的 OLTP 场景 + + 随着业务的高速发展,数据呈现爆炸性的增长,传统的单机数据库无法满足因数据爆炸性的增长对数据的容量要求,可行方案是采用分库分表的中间件产品或者 NewSQL 数据库替代、采用高端的存储设备等,其中性价比最大的是 NewSQL 数据库,例如:TiDB。TiDB 采用计算、存储分离的架构,可对计算、存储分别进行扩容和缩容,计算节点最大支持 512 节点,第个节点最大支持 1000 并发,集群容量最大支持 PB 级别。 + +- Real-time HTAP 场景 + + 随着 5G、物联网、人工智能的高速发展,企业所生产的数据会越来越多,其规模可能达到数百 TB 甚至 PB 级别,传统的解决方案是通过 OLTP 型数据库处理在线联机交易业务,通过 ETL 工具将数据同步到 OLAP 型数据库进行数据分析,这种处理方案存在存储成本高、实际性差等多方面的问题。TiDB 在 4.0 版本中引入列存储引擎 TiFlash 结合行存储引擎 TiKV 构建真正的 HTAP 数据库,在增加少量存储成本的情况下,可以同一个系统中做联机交易处理、实时数据分析,极大的节省企业的成本。 + +- 数据汇聚、二次加工处理的场景 + + 当前绝大部分企业的业务数据都分散在不同的系统中,没有一个统一的汇总,随着业务的发展,企业的决策层需要了解整个公司的业务状况方便即时的做出决策,故需要将分散在各个系统的数据汇聚在同一个系统并进行二次加工处理生成 T + 0/1 的报表。传统常见的解决方案是采用 ETL + Hadoop 来完成,但 Hadoop 体系统太复杂,运维、存储成本太高无法满度用户的需求。与 Hadoop 相比, TiDB 就会简单得多,业务通过 ETL 工具或者 TiDB 的同步工具将数据同步到 TiDB,在 TiDB 中可通过 SQL 直接生成报表。 + + From 0ffb70b0effec20dd099e5e1a1087fa9e321c791 Mon Sep 17 00:00:00 2001 From: meyu44 Date: Fri, 22 May 2020 11:17:10 +0800 Subject: [PATCH 23/68] some typos some typos --- overview.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/overview.md b/overview.md index 5b1d28b8184f..75171f42067d 100644 --- a/overview.md +++ b/overview.md @@ -5,7 +5,7 @@ category: introduction # TiDB 简介 -TiDB 是 PingCAP 公司自主设计、研发的开源分布式数据库,是一款同时支持在线事务处理与在线分析处理 (Hybrid Transactional and Analytical Processing, HTAP)的融合型分布式数据库产品,具备水平扩容或者缩容、高可用、实时 HTAP、云原生的分布式数据库、兼容 MySQL 5.7 协议和 MySQL 生态等重要特性。目标是为用户提供一站式 OLTP (Online Transactional Processing)、OLAP (Online Analytical Processing)、HTAP 解决方案。TiDB 适合高可用、强一致要求较高、数据规模较大等各种应用场景。 +TiDB 是 PingCAP 公司自主设计、研发的开源分布式关系型数据库,是一款同时支持在线事务处理与在线分析处理 (Hybrid Transactional and Analytical Processing, HTAP)的融合型分布式数据库产品,具备水平扩容或者缩容、金融级高可用、实时 HTAP、云原生的分布式数据库、兼容 MySQL 5.7 协议和 MySQL 生态等重要特性。目标是为用户提供一站式 OLTP (Online Transactional Processing)、OLAP (Online Analytical Processing)、HTAP 解决方案。TiDB 适合高可用、强一致要求较高、数据规模较大等各种应用场景。 ## 五大核心特性 @@ -13,7 +13,7 @@ TiDB 是 PingCAP 公司自主设计、研发的开源分布式数据库,是一 得益于 TiDB 存储计算分离的架构的设计,可按需对计算、存储分别进行在线扩容或者缩容,扩容或者缩容过程中对应用、运维人员透明。 - - 高可用 + - 金融级高可用 数据采用多副本存储,数据副本通过 Multi-Raft 协议同步事务日志,多数派写入成功事务才能提交,确保数据强一致性且少数副本发生故障时不影响数据的可用性。可按需配置副本地理位置、副本数量等策略满足不同容灾级别的要求。 @@ -37,7 +37,7 @@ TiDB 是 PingCAP 公司自主设计、研发的开源分布式数据库,是一 - 对存储容量、可扩展性、并发要求较高的海量数量及高并的 OLTP 场景 - 随着业务的高速发展,数据呈现爆炸性的增长,传统的单机数据库无法满足因数据爆炸性的增长对数据的容量要求,可行方案是采用分库分表的中间件产品或者 NewSQL 数据库替代、采用高端的存储设备等,其中性价比最大的是 NewSQL 数据库,例如:TiDB。TiDB 采用计算、存储分离的架构,可对计算、存储分别进行扩容和缩容,计算节点最大支持 512 节点,第个节点最大支持 1000 并发,集群容量最大支持 PB 级别。 + 随着业务的高速发展,数据呈现爆炸性的增长,传统的单机数据库无法满足因数据爆炸性的增长对数据的容量要求,可行方案是采用分库分表的中间件产品或者 NewSQL 数据库替代、采用高端的存储设备等,其中性价比最大的是 NewSQL 数据库,例如:TiDB。TiDB 采用计算、存储分离的架构,可对计算、存储分别进行扩容和缩容,计算节点最大支持 512 节点,每个节点最大支持 1000 并发,集群容量最大支持 PB 级别。 - Real-time HTAP 场景 From b300d308eb82584c76a0cf5aca530559896919d8 Mon Sep 17 00:00:00 2001 From: ruofly0425 Date: Sat, 23 May 2020 11:08:17 +0800 Subject: [PATCH 24/68] Update key-features.md --- key-features.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/key-features.md b/key-features.md index 8d6c5d9a44f5..a9aa3f0d1f5d 100644 --- a/key-features.md +++ b/key-features.md @@ -10,8 +10,11 @@ category: introduction ## 数据类型 - 数值类型: `BIT、BOOL|BOOLEAN、SMALLINT、MEDIUMINT、INT|INTEGER、BIGINT、FLOAT、DOUBLE、DECIMAL`。 + - 日期和时间类型: `DATE、TIME、DATETIME、TIMESTAMP、YEAR`。 + - 字符串类型: `CHAR、VARCHAR、TEXT、TINYTEXT、MEDIUMTEXT、LONGTEXT、BINARY、VARBINARY、BLOB、TINYBLOB、MEDIUMBLOB、LONGBLOB、ENUM、SET`。 + - JSON 类型。 ## 运算符 @@ -21,6 +24,7 @@ category: introduction ## 字符集及排序规则 - 字符集:`UTF8、UTF8MB4、BINARY`。 + - 排序规则:`UTF8MB4_GENERAL_CI、UTF8MB4_GENERAL_BIN、UTF8_GENERAL_CI、UTF8_GENERAL_BIN、BINARY`。 ## 函数 @@ -30,30 +34,47 @@ category: introduction ## SQL 语句 - 完全支持 `SQL GROUP BY` 和 `ORDER BY` 子语句。 + - 完全支持标准 SQL 语法的 `LEFT OUTER JOIN` 和 `RIGHT OUTER JOIN`。 + - 完全支持标准 SQL 要求的表和列别名。 + - 完全支持 DELETE,INSERT,REPLACE、UPDATE、CREATE、DROP、ALTER 等语句。 ## 分区表 + - 支持 Range 分区。 + - 支持 Hash 分区。 ## 视图 + - 支持普通视图。 ## 约束 + - 支持非空约束。 + - 支持主键约束。 + - 支持唯一约束。 ## 安全 + - 支持基于 RBAC 的权限管理。 + - 支持密码管理。 + - 支持通信、数据加密。 + - 支持 IP 白名单。 + - 支持审记功能。 ## 工具 + - 支持快速备份功能 + - 支持通过工具从 MySQL 迁移数据到 TiDB。 + - 支持通过工具部署、运维 TiDB。 From a6061a35650c542304ab3eaefd467ff6046c6f80 Mon Sep 17 00:00:00 2001 From: ruofly0425 Date: Sat, 23 May 2020 11:10:09 +0800 Subject: [PATCH 25/68] Update overview.md --- overview.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/overview.md b/overview.md index 75171f42067d..826292605955 100644 --- a/overview.md +++ b/overview.md @@ -46,5 +46,3 @@ TiDB 是 PingCAP 公司自主设计、研发的开源分布式关系型数据库 - 数据汇聚、二次加工处理的场景 当前绝大部分企业的业务数据都分散在不同的系统中,没有一个统一的汇总,随着业务的发展,企业的决策层需要了解整个公司的业务状况方便即时的做出决策,故需要将分散在各个系统的数据汇聚在同一个系统并进行二次加工处理生成 T + 0/1 的报表。传统常见的解决方案是采用 ETL + Hadoop 来完成,但 Hadoop 体系统太复杂,运维、存储成本太高无法满度用户的需求。与 Hadoop 相比, TiDB 就会简单得多,业务通过 ETL 工具或者 TiDB 的同步工具将数据同步到 TiDB,在 TiDB 中可通过 SQL 直接生成报表。 - - From 9fc1abdba606b4265d52207bfa5e93a039dc6e13 Mon Sep 17 00:00:00 2001 From: ruofly0425 Date: Sat, 23 May 2020 11:13:53 +0800 Subject: [PATCH 26/68] Update mysql-compatibility.md --- mysql-compatibility.md | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/mysql-compatibility.md b/mysql-compatibility.md index 181bf15b4791..482a8949e99e 100644 --- a/mysql-compatibility.md +++ b/mysql-compatibility.md @@ -7,6 +7,7 @@ aliases: ['/docs-cn/dev/reference/mysql-compatibility/'] # 与 MySQL 兼容性对比概览 - TiDB 100% 兼容 MySQL5.7 协议、MySQL5.7 常用的功能及语法,MySQL5.7 生态中系统的工具(PHPMyAdmin, Navicat, MySQL Workbench、mysqldump、Mydumper/myloader)、客户端等均用于 TiDB。 + - TiDB 是一款分布式数据库, MySQL5.7 中的部分特性由于工程实现难较大,投入产出比较低等多种原因在 TiDB 未能实现或者仅兼容语法但功能并没有实现,因此使用过程中请特别注意。例如:`CREATE TABLE` 语句中 `ENGINE`,仅兼容语法功能并没有实现,因此 TiDB 中没有 `ENGINE` 这类的概念。 > **注意:** @@ -40,7 +41,9 @@ aliases: ['/docs-cn/dev/reference/mysql-compatibility/'] ### 自增 ID - TiDB 的自增列仅保证自增且唯一、但不保证自动分配的值的连续性,建议不要将缺省值和自定义值混用,若混用可能会收 `Duplicated Error` 的错误信息。 + - TiDB 在工程实现上会在每一个 tidb-server 实例上缓存一段 ID 的值用于给表的自增列分配值,缓存 ID 的个数由表的 `AUTO_ID_CACHE` 确定,默认值:30000,请特别注意:自增列和`_tidb_rowid`都会消耗缓存的 ID,如果 `INSERT` 语句中所要求的连续的 ID 个数大于 `AUTO_ID_CACHE` 的值时系统会自动调整 `AUTO_ID_CACHE` 的值以确保该语句能正常执行。 + - TiDB 可通过 `tidb_allow_remove_auto_inc` 系统变量开启或者关闭删除列的 `AUTO_INCREMENT` 属性,删除列属性的语法是:`alter table modify` 或 `alter table change` 。 > **注意:** @@ -85,21 +88,28 @@ mysql> select _tidb_rowid, id from t; - Add Index + 同一条 SQL 语句不支持创建多个索引。 + 仅在语法在支持创建不同类刑的索引 (HASH/BTREE/RTREE),功能未实现。 + - Add Column + 不支持设置`PRIMARY KEY` 及 `UNIQUE KEY`,不支持设置 `AUTO_INCREMENT` 属性。 + - Drop Column + 不支持删除主键列及索引列。 + - Change/Modify Column + 不支持有损变更,比如从 `BIGINT` 变为 `INTEGER`,或者从 `VARCHAR(255)` 变为 `VARCHAR(10)` + 不支持修改 `DECIMAL` 类型的精度 + 不支持更改 `UNSIGNED` 属性 + 只支持将 `CHARACTER SET` 属性从 `utf8` 更改为 `utf8mb4` + - `LOCK [=] {DEFAULT|NONE|SHARED|EXCLUSIVE}` + 仅在语法上支持,功能未实现,故所有的 DDL 都不会锁表。 + - `ALGORITHM [=] {DEFAULT|INSTANT|INPLACE|COPY}` + 支持 `ALGORITHM=INSTANT` 和 `ALGORITHM=INPLACE` 语法,但行为与 MySQL 有所不同,MySQL 中的一些 `INPLACE` 操作在 TiDB 中的 是`INSTANT` 操作。 + 仅在语法上支持 `ALGORITHM=COPY`,功能未实现,会返回警告信息。 + - 单条 `ALTER TABLE` 语句中无法完成多个操作。例如:不能用一条语句来添加多个列或多个索引。 + - Table Option 不支持以下语法: + `WITH/WITHOUT VALIDATION` + `SECONDARY_LOAD/SECONDARY_UNLOAD` @@ -107,6 +117,7 @@ mysql> select _tidb_rowid, id from t; + `STATS_AUTO_RECALC/STATS_SAMPLE_PAGES` + `SECONDARY_ENGINE` + `ENCRYPTION` + - Table Partition 不支持以下语法: + `PARTITION BY LIST` + `PARTITION BY KEY` @@ -128,7 +139,9 @@ mysql> select _tidb_rowid, id from t; ### SQL 模式 - 不支持兼容模式,例如: `ORACLE` 和 `POSTGRESQL`,MySQL 5.7 已弃用兼容模式,MySQL 8.0 已移除兼容模式。 + - `ONLY_FULL_GROUP_BY` 与 MySQL 5.7 相比有细微的[语义差别](/functions-and-operators/aggregate-group-by-functions.md#与-mysql-的区别)。 + - `NO_DIR_IN_CREATE` 和 `NO_ENGINE_SUBSTITUTION` MySQL 用于解决兼容问题,并不适用于 TiDB。 ### 默认设置的区别 @@ -169,7 +182,9 @@ mysql> select _tidb_rowid, id from t; #### 时区 - TiDB 采用系统当前安装的所有时区规则进行计算(一般为 `tzdata` 包), 不需要导入时区表数据就能使用所有时区名称,无法通过导入时区表数据的形式修改计算规则。 + - MySQL 默认使用本地时区,依赖于系统内置的当前的时区规则(例如什么时候开始夏令时等)进行计算;且在未[导入时区表数据](https://dev.mysql.com/doc/refman/8.0/en/time-zone-support.html#time-zone-installation)的情况下不能通过时区名称来指定时区。 + > **注意:** > > TiKV 采用自己内置时区规则来计算,若系统安装的时区规则与 TiKV 内置的时区规则版本不匹配时,部分情况下可能会发生写入的数据无法读出来的情况。例如,若系统上安装了 tzdata 2018a 时区规则,则在时区设置为 Asia/Shanghai 或时区设置为本地时区且本地时区为 Asia/Shanghai 的情况下,时间 `1988-04-17 02:00:00` 可以被正常插入 TiDB 3.0 RC.1,但该记录对于特定类型 SQL 则无法再读出来,原因是 TiKV 3.0 RC.1 依据的 tzdata 2018i 规则中该时间在 Asia/Shanghai 时区中不存在(夏令时时间后移一小时)。 @@ -185,7 +200,10 @@ mysql> select _tidb_rowid, id from t; ### 类型系统 -+ 不支持 FLOAT4/FLOAT8 -+ 不支持 FIXED (alias for DECIMAL) -+ 不支持 SERIAL (alias for BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE) -+ 不支持 SQL_TSI_* (包括 SQL_TSI_YEAR、SQL_TSI_MONTH、SQL_TSI_WEEK、SQL_TSI_DAY、SQL_TSI_HOUR、SQL_TSI_MINUTE 和 SQL_TSI_SECOND) ++ 不支持 FLOAT4/FLOAT8。 + ++ 不支持 FIXED (alias for DECIMAL)。 + ++ 不支持 SERIAL (alias for BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE)。 + ++ 不支持 SQL_TSI_* (包括 SQL_TSI_YEAR、SQL_TSI_MONTH、SQL_TSI_WEEK、SQL_TSI_DAY、SQL_TSI_HOUR、SQL_TSI_MINUTE 和 SQL_TSI_SECOND)。 From 33d37d04b10e947c08b1a84a7092a7dc106dd8dc Mon Sep 17 00:00:00 2001 From: ruofly0425 Date: Sat, 23 May 2020 11:17:19 +0800 Subject: [PATCH 27/68] Update tidb-limitations.md --- tidb-limitations.md | 1 - 1 file changed, 1 deletion(-) diff --git a/tidb-limitations.md b/tidb-limitations.md index c3f4f63ae99c..21a86a56e327 100644 --- a/tidb-limitations.md +++ b/tidb-limitations.md @@ -27,7 +27,6 @@ category: introduction | Views | unlimited | | Connections| unlimited| - ## 单个 Database 的限制 | 类型 | 最大限制 | From 9b858684544345dea3ff31c1118b18f792be367b Mon Sep 17 00:00:00 2001 From: ruofly0425 Date: Sat, 23 May 2020 12:59:19 +0800 Subject: [PATCH 28/68] Update key-features.md Co-authored-by: kissmydb --- key-features.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/key-features.md b/key-features.md index a9aa3f0d1f5d..3b98c550a73b 100644 --- a/key-features.md +++ b/key-features.md @@ -3,7 +3,7 @@ title: TiDB 核心特性 category: introduction --- -# TiDB 核心特性 +# TiDB 基本功能 本文详细介绍 TiDB 具备的基本功能。 From faee52ac07cbe0ad4e23178a94b19229de0e8c82 Mon Sep 17 00:00:00 2001 From: ruofly0425 Date: Sat, 23 May 2020 12:59:52 +0800 Subject: [PATCH 29/68] Update key-features.md --- key-features.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/key-features.md b/key-features.md index 3b98c550a73b..d27fc4d9b4e5 100644 --- a/key-features.md +++ b/key-features.md @@ -1,5 +1,5 @@ --- -title: TiDB 核心特性 +title: TiDB 基本功能 category: introduction --- From 846a1d4a417fdce76395183ded499fddaf57477c Mon Sep 17 00:00:00 2001 From: ruofly0425 Date: Sat, 23 May 2020 15:40:01 +0800 Subject: [PATCH 30/68] Update key-features.md --- key-features.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/key-features.md b/key-features.md index d27fc4d9b4e5..92885a8db485 100644 --- a/key-features.md +++ b/key-features.md @@ -21,9 +21,9 @@ category: introduction - 算术运符、位运算符、比较运算符、逻辑运算符、日期和时间运算符等。 -## 字符集及排序规则 +## 字符集及排序规则 -- 字符集:`UTF8、UTF8MB4、BINARY`。 +- 字符集:`UTF8、UTF8MB4、BINARY、ASCII、LATIN1`。 - 排序规则:`UTF8MB4_GENERAL_CI、UTF8MB4_GENERAL_BIN、UTF8_GENERAL_CI、UTF8_GENERAL_BIN、BINARY`。 From 68f58498391050a0d065f0d74fd894dce710c09e Mon Sep 17 00:00:00 2001 From: ruofly0425 Date: Sat, 23 May 2020 20:59:28 +0800 Subject: [PATCH 31/68] Update key-features.md --- key-features.md | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/key-features.md b/key-features.md index 92885a8db485..fcd3be3c3048 100644 --- a/key-features.md +++ b/key-features.md @@ -33,14 +33,22 @@ category: introduction ## SQL 语句 +- 完全支持标准的 Data Definition Statements 语句,例如:CREATE、DROP、ALTER、RENAME、RUNCATE 等。 + +- 完全支持标准的 Data Manipulation Statements 语名,例如:INSERT、REPLACE、SELECT、Subqueries、UPDATE、LOAD DATA 等。 + +- 完全支持标准的 Transactional and Locking Statements 语名,例如:START TRANSACTION、COMMIT、ROLLBACK、SET TRANSACTION 等。 + +- 完全支持标准的 Database Administration Statements 语名,例如:SHOW、SET 等。 + +- 完全支持标准的 Utility Statements语句, 例如:DESCRIBE、EXPLAIN、USE 等。 + - 完全支持 `SQL GROUP BY` 和 `ORDER BY` 子语句。 - 完全支持标准 SQL 语法的 `LEFT OUTER JOIN` 和 `RIGHT OUTER JOIN`。 - 完全支持标准 SQL 要求的表和列别名。 -- 完全支持 DELETE,INSERT,REPLACE、UPDATE、CREATE、DROP、ALTER 等语句。 - ## 分区表 - 支持 Range 分区。 From a69ec192d1d6e59bf3b592ade07aed4869762fde Mon Sep 17 00:00:00 2001 From: ruofly0425 Date: Tue, 26 May 2020 11:59:10 +0800 Subject: [PATCH 32/68] Create Sysbench.md --- Sysbench.md | 139 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 139 insertions(+) create mode 100644 Sysbench.md diff --git a/Sysbench.md b/Sysbench.md new file mode 100644 index 000000000000..4ad11bb0ba63 --- /dev/null +++ b/Sysbench.md @@ -0,0 +1,139 @@ +--- +title: Sysbench 性能测试报告 +category: introduction +--- + +# 测试目的 + +测试对比 TiDB v4.0 和 v3.0 OLTP 场景下的性能。 + +## 测试环境 (AWS EC2) + +### 硬件配置 + +| 服务类型 | EC2 类型 | 节点数 | +|:----------|:----------|:----------| +| PD | m5.xlarge | 3 | +| TiDB | i3.4xlarge| 3 | +| TiKV | c5.4xlarge| 3 | +| Sysbench | m5.4xlarge| 1 | + +### 软件版本 + +| 服务类型 | 软件版本 +|:----------|:-----------| +| PD | 3.0、4.0 | +| TiDB | 3.0、4.0 | +| TiKV | 3.0、4.0 | +| Sysbench | 1.0.20 | + +### 配置参数 + +#### v3.0 + +#### tidb: + log.level: “error” + performance.max-procs: 20 + prepared-plan-cache.enabled: true + tikv-client.max-batch-wait-time: 2000000 + +#### tikv: + storage.scheduler-worker-pool-size: 5 + raftstore.store-pool-size: 3 + raftstore.apply-pool-size: 3 + rocksdb.max-background-jobs: 3 + raftdb.max-background-jobs: 3 + raftdb.allow-concurrent-memtable-write: true + server.grpc-concurrency: 6 + readpool.storage.normal-concurrency: 10 + readpool.coprocessor.normal-concurrency: 5 + +### v4.0 +#### tidb: + log.level: "error" + performance.max-procs: 20 + prepared-plan-cache.enabled: true + tikv-client.max-batch-wait-time: 2000000 + +#### tikv: + storage.scheduler-worker-pool-size: 5 + raftstore.store-pool-size: 3 + raftstore.apply-pool-size: 3 + rocksdb.max-background-jobs: 3 + raftdb.max-background-jobs: 3 + raftdb.allow-concurrent-memtable-write: true + server.request-batch-enable-cross-command: false + server.grpc-concurrency: 6 + readpool.unifiy-read-pool: true + readpool.unified.min-thread-count: 5 + readpool.unified.max-thread-count: 20 + readpool.storage.normal-concurrency: 10 + pessimistic-txn.pipelined: true + +#### 全局变量 + +- set global tidb_hashagg_final_concurrency=1; + +- set global tidb_hashagg_partial_concurrency=1; + +- set global tidb_disable_txn_auto_retry=0; + +### 测试方案 + +- 通过 TiUP 部署 TiDB v4.0 和 v3.0。 + +- 通过 Sysbench 导入 16 张表,每张表数据 1000 万数据。 + +- 分别对每个表执行 `analyze table` 命令。 + +- 备份数据用于不同并发测试前进行恢复以保证每次数据一致。 + +- 启动 Sysbench 客户端,测试 point_select, read_write,update_index, update_non_index,通过 aws nlb 向 TIDB 加压,单次预热 1 分钟,测试 5 分钟。 + +- 每轮完成后停止集群,使用之前的备份的数据覆盖,再启动集群 + +### 准备数据命令: + +sysbench oltp_common \ + --threads=16 \ + --rand-type=uniform \ + --db-driver=mysql \ + --mysql-db=sbtest \ + --mysql-host=$aws_nlb_host \ + --mysql-port=$aws_nlb_port \ + --mysql-user=root \ + --mysql-password=password \ + prepare --tables=16 --table-size=10000000 + +### 执行测试命令: + +sysbench $testname \ + --threads=$threads \ + --time=300 \ + --report-interval=1 \ + --rand-type=uniform \ + --db-driver=mysql \ + --mysql-db=sbtest \ + --mysql-host=$aws_nlb_host \ + --mysql-port=$aws_nlb_port \ + run --tables=16 --table-size=10000000 + +### 测试结果 + +#### Point Select + +![Point Select](/media/sysbench_v4vsv3_point_select.png) + +#### Update Non-index + +![Update Non-index](/media/sysbench_v4vsv3_update_non_index.png) + +#### Update Index + +![Update Index](/media/sysbench_v4vsv3_update_index.png) + +#### Read Write + +![Read Write](/media/sysbench_v4vsv3_read_write.png) + + From 637643322508470598cf640bec18ddd5f2c2d3f4 Mon Sep 17 00:00:00 2001 From: ruofly0425 Date: Tue, 26 May 2020 13:23:52 +0800 Subject: [PATCH 33/68] Create TPC-C.md --- TPC-C.md | 105 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 TPC-C.md diff --git a/TPC-C.md b/TPC-C.md new file mode 100644 index 000000000000..7b4dfb40066d --- /dev/null +++ b/TPC-C.md @@ -0,0 +1,105 @@ +--- +title: TPC-C 性能测试报告 +category: introduction +--- + +# 测试目的 + +测试对比 TiDB v4.0 和 v3.0 OLTP 场景下的性能。 + +## 测试环境 (AWS EC2) + +### 硬件配置 + +| 服务类型 | EC2 类型 | 节点数 | +|:----------|:----------|:----------| +| PD | m5.xlarge | 3 | +| TiKV | i3.4xlarge| 3 | +| TiDB | c5.4xlarge| 3 | +| Sysbench | m5.4xlarge| 1 | + +### 软件版本 + +| 服务类型 | 软件版本 +|:----------|:-----------| +| PD | 3.0、4.0 | +| TiDB | 3.0、4.0 | +| TiKV | 3.0、4.0 | +| Sysbench | 1.0.20 | + +### 配置参数 + +#### v3.0 + +#### tidb: + log.level: “error” + performance.max-procs: 20 + prepared-plan-cache.enabled: true + tikv-client.max-batch-wait-time: 2000000 + +#### tikv: + storage.scheduler-worker-pool-size: 5 + raftstore.store-pool-size: 3 + raftstore.apply-pool-size: 3 + rocksdb.max-background-jobs: 3 + raftdb.max-background-jobs: 3 + raftdb.allow-concurrent-memtable-write: true + server.grpc-concurrency: 6 + readpool.storage.normal-concurrency: 10 + readpool.coprocessor.normal-concurrency: 5 + +### v4.0 +#### tidb: + log.level: "error" + performance.max-procs: 20 + prepared-plan-cache.enabled: true + tikv-client.max-batch-wait-time: 2000000 + +#### tikv: + storage.scheduler-worker-pool-size: 5 + raftstore.store-pool-size: 3 + raftstore.apply-pool-size: 3 + rocksdb.max-background-jobs: 3 + raftdb.max-background-jobs: 3 + raftdb.allow-concurrent-memtable-write: true + server.request-batch-enable-cross-command: false + server.grpc-concurrency: 6 + readpool.unifiy-read-pool: true + readpool.unified.min-thread-count: 5 + readpool.unified.max-thread-count: 20 + readpool.storage.normal-concurrency: 10 + pessimistic-txn.pipelined: true + +#### 全局变量 + +- set global tidb_hashagg_final_concurrency=1; + +- set global tidb_hashagg_partial_concurrency=1; + +- set global tidb_disable_txn_auto_retry=0; + +### 测试方案 + +- 通过 TiUP 部署 TiDB v4.0 和 v3.0。 + +- 通过 Benchmarksql 导入 TPC-C 5000 Warehouse 数据。 + + * 编译 Benchmarksql, `git clone https://github.com/pingcap/benchmarksql && cd benchmarksql && ant`。 + + * 进入 run 目录,根据实际情况编辑 props.mysql 文件,调整 conn、warehouses、loadWorkers、terminals、runMins 配置项。 + + * 运行 runSQL.sh ./props.mysql sql.mysql/tableCreates.sql + + * 运行 runSQL.sh ./props.mysql sql.mysql/indexCreates.sql + + * 运行 MySQL Client 并对每个表执行 `analyze table` 命令。 + + - 运行 runBenchmark.sh ./props.mysql。 + + - 从结果中提取 New Order 的 tpmC 的数据。 + +### 测试结果 + +#### TPC-C + +![TPC-C](/media/tpcc_v4vsv3.png) From e96d05ee2335aca7b48c5537f6da6e5e9662e64e Mon Sep 17 00:00:00 2001 From: ruofly0425 Date: Tue, 26 May 2020 13:25:28 +0800 Subject: [PATCH 34/68] Update TPC-C.md --- TPC-C.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TPC-C.md b/TPC-C.md index 7b4dfb40066d..c116f42fb00f 100644 --- a/TPC-C.md +++ b/TPC-C.md @@ -25,7 +25,7 @@ category: introduction | PD | 3.0、4.0 | | TiDB | 3.0、4.0 | | TiKV | 3.0、4.0 | -| Sysbench | 1.0.20 | +| Benchmarksql | non | ### 配置参数 From cf6c49346c119de9c11cc0a710d414b98ee0f521 Mon Sep 17 00:00:00 2001 From: ruofly0425 Date: Tue, 26 May 2020 13:32:49 +0800 Subject: [PATCH 35/68] Update Sysbench.md --- Sysbench.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Sysbench.md b/Sysbench.md index 4ad11bb0ba63..f9523f10f2b2 100644 --- a/Sysbench.md +++ b/Sysbench.md @@ -14,8 +14,8 @@ category: introduction | 服务类型 | EC2 类型 | 节点数 | |:----------|:----------|:----------| | PD | m5.xlarge | 3 | -| TiDB | i3.4xlarge| 3 | -| TiKV | c5.4xlarge| 3 | +| TiKV | i3.4xlarge| 3 | +| TiDB | c5.4xlarge| 3 | | Sysbench | m5.4xlarge| 1 | ### 软件版本 From 1ece4866ecc7e0162ea48ffb4ba6b42cb8cba478 Mon Sep 17 00:00:00 2001 From: ruofly0425 Date: Tue, 26 May 2020 16:05:44 +0800 Subject: [PATCH 36/68] Update Sysbench.md --- Sysbench.md | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/Sysbench.md b/Sysbench.md index f9523f10f2b2..7ee1682e3ab8 100644 --- a/Sysbench.md +++ b/Sysbench.md @@ -31,13 +31,15 @@ category: introduction #### v3.0 -#### tidb: +#### tidb + log.level: “error” performance.max-procs: 20 prepared-plan-cache.enabled: true tikv-client.max-batch-wait-time: 2000000 -#### tikv: +#### tikv + storage.scheduler-worker-pool-size: 5 raftstore.store-pool-size: 3 raftstore.apply-pool-size: 3 @@ -49,13 +51,16 @@ category: introduction readpool.coprocessor.normal-concurrency: 5 ### v4.0 -#### tidb: + +#### tidb + log.level: "error" performance.max-procs: 20 prepared-plan-cache.enabled: true tikv-client.max-batch-wait-time: 2000000 -#### tikv: +#### tikv + storage.scheduler-worker-pool-size: 5 raftstore.store-pool-size: 3 raftstore.apply-pool-size: 3 From 33caadf0f2cc1972b65b0163102d6e73c95b8809 Mon Sep 17 00:00:00 2001 From: ruofly0425 Date: Tue, 26 May 2020 16:06:50 +0800 Subject: [PATCH 37/68] Update TPC-C.md --- TPC-C.md | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/TPC-C.md b/TPC-C.md index c116f42fb00f..d93328a99229 100644 --- a/TPC-C.md +++ b/TPC-C.md @@ -31,13 +31,15 @@ category: introduction #### v3.0 -#### tidb: +#### tidb + log.level: “error” performance.max-procs: 20 prepared-plan-cache.enabled: true tikv-client.max-batch-wait-time: 2000000 -#### tikv: +#### tikv + storage.scheduler-worker-pool-size: 5 raftstore.store-pool-size: 3 raftstore.apply-pool-size: 3 @@ -49,13 +51,16 @@ category: introduction readpool.coprocessor.normal-concurrency: 5 ### v4.0 -#### tidb: + +#### tidb + log.level: "error" performance.max-procs: 20 prepared-plan-cache.enabled: true tikv-client.max-batch-wait-time: 2000000 -#### tikv: +#### tikv + storage.scheduler-worker-pool-size: 5 raftstore.store-pool-size: 3 raftstore.apply-pool-size: 3 From 4ebc63e83c386b24199525453887d3a4b3ab20fc Mon Sep 17 00:00:00 2001 From: ruofly0425 Date: Tue, 26 May 2020 16:10:24 +0800 Subject: [PATCH 38/68] Rename Sysbench.md to sysbench.md --- Sysbench.md => sysbench.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Sysbench.md => sysbench.md (100%) diff --git a/Sysbench.md b/sysbench.md similarity index 100% rename from Sysbench.md rename to sysbench.md From 9a272faa60a48f409cec608d94a2afb1e85ea71d Mon Sep 17 00:00:00 2001 From: ruofly0425 Date: Tue, 26 May 2020 16:13:06 +0800 Subject: [PATCH 39/68] Rename TPC-C.md to benchmark-tpcc-v3vsv4.md --- TPC-C.md => benchmark-tpcc-v3vsv4.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename TPC-C.md => benchmark-tpcc-v3vsv4.md (100%) diff --git a/TPC-C.md b/benchmark-tpcc-v3vsv4.md similarity index 100% rename from TPC-C.md rename to benchmark-tpcc-v3vsv4.md From 0aaf06146385c8b6be1c66ac84731fcb67e68051 Mon Sep 17 00:00:00 2001 From: ruofly0425 Date: Tue, 26 May 2020 16:21:20 +0800 Subject: [PATCH 40/68] Update and rename sysbench.md to benchmark-sysbench-v3vsv4.md --- sysbench.md => benchmark-sysbench-v3vsv4.md | 86 ++++++++++++++------- 1 file changed, 56 insertions(+), 30 deletions(-) rename sysbench.md => benchmark-sysbench-v3vsv4.md (67%) diff --git a/sysbench.md b/benchmark-sysbench-v3vsv4.md similarity index 67% rename from sysbench.md rename to benchmark-sysbench-v3vsv4.md index 7ee1682e3ab8..b2e0d5b1d372 100644 --- a/sysbench.md +++ b/benchmark-sysbench-v3vsv4.md @@ -33,47 +33,73 @@ category: introduction #### tidb - log.level: “error” - performance.max-procs: 20 - prepared-plan-cache.enabled: true - tikv-client.max-batch-wait-time: 2000000 +log.level: “error” + +performance.max-procs: 20 + +prepared-plan-cache.enabled: true + +tikv-client.max-batch-wait-time: 2000000 #### tikv - storage.scheduler-worker-pool-size: 5 - raftstore.store-pool-size: 3 - raftstore.apply-pool-size: 3 - rocksdb.max-background-jobs: 3 - raftdb.max-background-jobs: 3 - raftdb.allow-concurrent-memtable-write: true - server.grpc-concurrency: 6 - readpool.storage.normal-concurrency: 10 - readpool.coprocessor.normal-concurrency: 5 +storage.scheduler-worker-pool-size: 5 + +raftstore.store-pool-size: 3 + +raftstore.apply-pool-size: 3 + +rocksdb.max-background-jobs: 3 + +raftdb.max-background-jobs: 3 + +raftdb.allow-concurrent-memtable-write: true + +server.grpc-concurrency: 6 + +readpool.storage.normal-concurrency: 10 + +readpool.coprocessor.normal-concurrency: 5 ### v4.0 #### tidb - log.level: "error" - performance.max-procs: 20 - prepared-plan-cache.enabled: true - tikv-client.max-batch-wait-time: 2000000 +log.level: “error” + +performance.max-procs: 20 + +prepared-plan-cache.enabled: true + +tikv-client.max-batch-wait-time: 2000000 #### tikv - storage.scheduler-worker-pool-size: 5 - raftstore.store-pool-size: 3 - raftstore.apply-pool-size: 3 - rocksdb.max-background-jobs: 3 - raftdb.max-background-jobs: 3 - raftdb.allow-concurrent-memtable-write: true - server.request-batch-enable-cross-command: false - server.grpc-concurrency: 6 - readpool.unifiy-read-pool: true - readpool.unified.min-thread-count: 5 - readpool.unified.max-thread-count: 20 - readpool.storage.normal-concurrency: 10 - pessimistic-txn.pipelined: true +storage.scheduler-worker-pool-size: 5 + +raftstore.store-pool-size: 3 + +raftstore.apply-pool-size: 3 + +rocksdb.max-background-jobs: 3 + +raftdb.max-background-jobs: 3 + +raftdb.allow-concurrent-memtable-write: true + +server.request-batch-enable-cross-command: false + +server.grpc-concurrency: 6 + +readpool.unifiy-read-pool: true + +readpool.unified.min-thread-count: 5 + +readpool.unified.max-thread-count: 20 + +readpool.storage.normal-concurrency: 10 + +pessimistic-txn.pipelined: true #### 全局变量 From 8ec8592ba2044c79ade5e05a9ae3cb7d60563047 Mon Sep 17 00:00:00 2001 From: ruofly0425 Date: Tue, 26 May 2020 16:22:16 +0800 Subject: [PATCH 41/68] Update benchmark-sysbench-v3vsv4.md --- benchmark-sysbench-v3vsv4.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/benchmark-sysbench-v3vsv4.md b/benchmark-sysbench-v3vsv4.md index b2e0d5b1d372..5eb39b3d1ce2 100644 --- a/benchmark-sysbench-v3vsv4.md +++ b/benchmark-sysbench-v3vsv4.md @@ -31,7 +31,7 @@ category: introduction #### v3.0 -#### tidb +#### TiDB log.level: “error” @@ -41,7 +41,7 @@ prepared-plan-cache.enabled: true tikv-client.max-batch-wait-time: 2000000 -#### tikv +#### TiKV storage.scheduler-worker-pool-size: 5 @@ -63,7 +63,7 @@ readpool.coprocessor.normal-concurrency: 5 ### v4.0 -#### tidb +#### TiDB log.level: “error” @@ -73,7 +73,7 @@ prepared-plan-cache.enabled: true tikv-client.max-batch-wait-time: 2000000 -#### tikv +#### TiKV storage.scheduler-worker-pool-size: 5 From 1f5c8a401fdd12062525170b405f0ba50ba6b4d7 Mon Sep 17 00:00:00 2001 From: ruofly0425 Date: Tue, 26 May 2020 16:22:58 +0800 Subject: [PATCH 42/68] Update benchmark-tpcc-v3vsv4.md --- benchmark-tpcc-v3vsv4.md | 98 +++++++++++++++++++++++++--------------- 1 file changed, 62 insertions(+), 36 deletions(-) diff --git a/benchmark-tpcc-v3vsv4.md b/benchmark-tpcc-v3vsv4.md index d93328a99229..7f7acfecf3e0 100644 --- a/benchmark-tpcc-v3vsv4.md +++ b/benchmark-tpcc-v3vsv4.md @@ -31,49 +31,75 @@ category: introduction #### v3.0 -#### tidb +#### TiDB - log.level: “error” - performance.max-procs: 20 - prepared-plan-cache.enabled: true - tikv-client.max-batch-wait-time: 2000000 +log.level: “error” + +performance.max-procs: 20 + +prepared-plan-cache.enabled: true + +tikv-client.max-batch-wait-time: 2000000 -#### tikv - - storage.scheduler-worker-pool-size: 5 - raftstore.store-pool-size: 3 - raftstore.apply-pool-size: 3 - rocksdb.max-background-jobs: 3 - raftdb.max-background-jobs: 3 - raftdb.allow-concurrent-memtable-write: true - server.grpc-concurrency: 6 - readpool.storage.normal-concurrency: 10 - readpool.coprocessor.normal-concurrency: 5 +#### TiKV + +storage.scheduler-worker-pool-size: 5 + +raftstore.store-pool-size: 3 + +raftstore.apply-pool-size: 3 + +rocksdb.max-background-jobs: 3 + +raftdb.max-background-jobs: 3 + +raftdb.allow-concurrent-memtable-write: true + +server.grpc-concurrency: 6 + +readpool.storage.normal-concurrency: 10 + +readpool.coprocessor.normal-concurrency: 5 ### v4.0 -#### tidb +#### TiDB + +log.level: “error” + +performance.max-procs: 20 - log.level: "error" - performance.max-procs: 20 - prepared-plan-cache.enabled: true - tikv-client.max-batch-wait-time: 2000000 +prepared-plan-cache.enabled: true + +tikv-client.max-batch-wait-time: 2000000 -#### tikv - - storage.scheduler-worker-pool-size: 5 - raftstore.store-pool-size: 3 - raftstore.apply-pool-size: 3 - rocksdb.max-background-jobs: 3 - raftdb.max-background-jobs: 3 - raftdb.allow-concurrent-memtable-write: true - server.request-batch-enable-cross-command: false - server.grpc-concurrency: 6 - readpool.unifiy-read-pool: true - readpool.unified.min-thread-count: 5 - readpool.unified.max-thread-count: 20 - readpool.storage.normal-concurrency: 10 - pessimistic-txn.pipelined: true +#### TiKV + +storage.scheduler-worker-pool-size: 5 + +raftstore.store-pool-size: 3 + +raftstore.apply-pool-size: 3 + +rocksdb.max-background-jobs: 3 + +raftdb.max-background-jobs: 3 + +raftdb.allow-concurrent-memtable-write: true + +server.request-batch-enable-cross-command: false + +server.grpc-concurrency: 6 + +readpool.unifiy-read-pool: true + +readpool.unified.min-thread-count: 5 + +readpool.unified.max-thread-count: 20 + +readpool.storage.normal-concurrency: 10 + +pessimistic-txn.pipelined: true #### 全局变量 From f42207e27929315641c3a917831c5119a543f3b4 Mon Sep 17 00:00:00 2001 From: ruofly0425 Date: Tue, 26 May 2020 16:28:26 +0800 Subject: [PATCH 43/68] Rename benchmark-sysbench-v3vsv4.md to benchmark/benchmark-sysbench-v3vsv4.md --- .../benchmark-sysbench-v3vsv4.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename benchmark-sysbench-v3vsv4.md => benchmark/benchmark-sysbench-v3vsv4.md (100%) diff --git a/benchmark-sysbench-v3vsv4.md b/benchmark/benchmark-sysbench-v3vsv4.md similarity index 100% rename from benchmark-sysbench-v3vsv4.md rename to benchmark/benchmark-sysbench-v3vsv4.md From a1ae2879a82bf794cf88da587bac230b1100e5de Mon Sep 17 00:00:00 2001 From: ruofly0425 Date: Tue, 26 May 2020 16:29:02 +0800 Subject: [PATCH 44/68] Rename benchmark-tpcc-v3vsv4.md to benchmark/benchmark-tpcc-v3vsv4.md --- benchmark-tpcc-v3vsv4.md => benchmark/benchmark-tpcc-v3vsv4.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename benchmark-tpcc-v3vsv4.md => benchmark/benchmark-tpcc-v3vsv4.md (100%) diff --git a/benchmark-tpcc-v3vsv4.md b/benchmark/benchmark-tpcc-v3vsv4.md similarity index 100% rename from benchmark-tpcc-v3vsv4.md rename to benchmark/benchmark-tpcc-v3vsv4.md From d797e458adbf05f15cde6d3720ef1d81da9bf7b9 Mon Sep 17 00:00:00 2001 From: ruofly0425 Date: Tue, 26 May 2020 16:51:37 +0800 Subject: [PATCH 45/68] Update benchmark-sysbench-v3vsv4.md --- benchmark/benchmark-sysbench-v3vsv4.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/benchmark/benchmark-sysbench-v3vsv4.md b/benchmark/benchmark-sysbench-v3vsv4.md index 5eb39b3d1ce2..f07e93dc1c61 100644 --- a/benchmark/benchmark-sysbench-v3vsv4.md +++ b/benchmark/benchmark-sysbench-v3vsv4.md @@ -121,9 +121,9 @@ pessimistic-txn.pipelined: true - 启动 Sysbench 客户端,测试 point_select, read_write,update_index, update_non_index,通过 aws nlb 向 TIDB 加压,单次预热 1 分钟,测试 5 分钟。 -- 每轮完成后停止集群,使用之前的备份的数据覆盖,再启动集群 +- 每轮完成后停止集群,使用之前的备份的数据覆盖,再启动集群。 -### 准备数据命令: +### 准备数据命令 sysbench oltp_common \ --threads=16 \ @@ -136,7 +136,7 @@ sysbench oltp_common \ --mysql-password=password \ prepare --tables=16 --table-size=10000000 -### 执行测试命令: +### 执行测试命令 sysbench $testname \ --threads=$threads \ From 10f93eca3834955e7e60e72b46c7304a48823918 Mon Sep 17 00:00:00 2001 From: ruofly0425 Date: Tue, 26 May 2020 17:11:43 +0800 Subject: [PATCH 46/68] Update benchmark-sysbench-v3vsv4.md --- benchmark/benchmark-sysbench-v3vsv4.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/benchmark/benchmark-sysbench-v3vsv4.md b/benchmark/benchmark-sysbench-v3vsv4.md index f07e93dc1c61..b83b61ec9856 100644 --- a/benchmark/benchmark-sysbench-v3vsv4.md +++ b/benchmark/benchmark-sysbench-v3vsv4.md @@ -166,5 +166,3 @@ sysbench $testname \ #### Read Write ![Read Write](/media/sysbench_v4vsv3_read_write.png) - - From 95e766b084375e14f715c20b0cd011391ce54aa7 Mon Sep 17 00:00:00 2001 From: ruofly0425 Date: Tue, 26 May 2020 18:03:21 +0800 Subject: [PATCH 47/68] Update benchmark-sysbench-v3vsv4.md --- benchmark/benchmark-sysbench-v3vsv4.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/benchmark/benchmark-sysbench-v3vsv4.md b/benchmark/benchmark-sysbench-v3vsv4.md index b83b61ec9856..fcae7e5dced9 100644 --- a/benchmark/benchmark-sysbench-v3vsv4.md +++ b/benchmark/benchmark-sysbench-v3vsv4.md @@ -153,16 +153,20 @@ sysbench $testname \ #### Point Select -![Point Select](/media/sysbench_v4vsv3_point_select.png) +TODO + #### Update Non-index -![Update Non-index](/media/sysbench_v4vsv3_update_non_index.png) +TODO + #### Update Index -![Update Index](/media/sysbench_v4vsv3_update_index.png) +TODO + #### Read Write -![Read Write](/media/sysbench_v4vsv3_read_write.png) +TODO + From a44e3344840378c2d9f0aa4e4210dfc0ef2cdc26 Mon Sep 17 00:00:00 2001 From: ruofly0425 Date: Tue, 26 May 2020 18:04:03 +0800 Subject: [PATCH 48/68] Update benchmark-tpcc-v3vsv4.md --- benchmark/benchmark-tpcc-v3vsv4.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/benchmark/benchmark-tpcc-v3vsv4.md b/benchmark/benchmark-tpcc-v3vsv4.md index 7f7acfecf3e0..c8a7cf48fcf7 100644 --- a/benchmark/benchmark-tpcc-v3vsv4.md +++ b/benchmark/benchmark-tpcc-v3vsv4.md @@ -133,4 +133,5 @@ pessimistic-txn.pipelined: true #### TPC-C -![TPC-C](/media/tpcc_v4vsv3.png) +TODO + From 8d0f979269578c2a55c55ea2e1e24a7d46d7508a Mon Sep 17 00:00:00 2001 From: ruofly0425 Date: Tue, 26 May 2020 18:19:04 +0800 Subject: [PATCH 49/68] Update mysql-compatibility.md --- mysql-compatibility.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mysql-compatibility.md b/mysql-compatibility.md index 0b8ae60b9981..8eb0ad108df3 100644 --- a/mysql-compatibility.md +++ b/mysql-compatibility.md @@ -74,7 +74,7 @@ mysql> select _tidb_rowid, id from t; ### Performance schema -- TiDB 主要使用 [Prometheus 和 Grafana](/monitor-a-tidb-cluster.md) 来存储及查询相关的性能监控指标,故 Performance schema 部分表是空表。 +- TiDB 主要使用 Prometheus 和 Grafana 来存储及查询相关的性能监控指标,故 Performance schema 部分表是空表。 ### 查询计划 From 91c3194a4d065d3aaedf5247d9b359c1bcdabf1b Mon Sep 17 00:00:00 2001 From: lilin90 Date: Tue, 26 May 2020 20:58:29 +0800 Subject: [PATCH 50/68] benchmark: rename, fix format and update wording --- ...vsv4.md => benchmark-sysbench-v4-vs-v3.md} | 139 +++++++----------- 1 file changed, 52 insertions(+), 87 deletions(-) rename benchmark/{benchmark-sysbench-v3vsv4.md => benchmark-sysbench-v4-vs-v3.md} (57%) diff --git a/benchmark/benchmark-sysbench-v3vsv4.md b/benchmark/benchmark-sysbench-v4-vs-v3.md similarity index 57% rename from benchmark/benchmark-sysbench-v3vsv4.md rename to benchmark/benchmark-sysbench-v4-vs-v3.md index fcae7e5dced9..94b720456071 100644 --- a/benchmark/benchmark-sysbench-v3vsv4.md +++ b/benchmark/benchmark-sysbench-v4-vs-v3.md @@ -1,13 +1,15 @@ --- -title: Sysbench 性能测试报告 -category: introduction +title: TiDB Sysbench 性能对比测试报告 - v4.0 对比 v3.0 +category: benchmark --- -# 测试目的 +# TiDB Sysbench 性能对比测试报告 - v4.0 对比 v3.0 -测试对比 TiDB v4.0 和 v3.0 OLTP 场景下的性能。 +## 测试目的 -## 测试环境 (AWS EC2) +测试对比 TiDB v4.0 和 v3.0 在 OLTP 场景下的性能。 + +## 测试环境 (AWS EC2) ### 硬件配置 @@ -27,100 +29,63 @@ category: introduction | TiKV | 3.0、4.0 | | Sysbench | 1.0.20 | -### 配置参数 - -#### v3.0 - -#### TiDB - -log.level: “error” - -performance.max-procs: 20 +### 参数配置 -prepared-plan-cache.enabled: true +#### TiDB 3.0 参数配置 -tikv-client.max-batch-wait-time: 2000000 +- log.level: “error” +- performance.max-procs: 20 +- prepared-plan-cache.enabled: true +- tikv-client.max-batch-wait-time: 2000000 -#### TiKV - -storage.scheduler-worker-pool-size: 5 - -raftstore.store-pool-size: 3 - -raftstore.apply-pool-size: 3 - -rocksdb.max-background-jobs: 3 - -raftdb.max-background-jobs: 3 - -raftdb.allow-concurrent-memtable-write: true - -server.grpc-concurrency: 6 - -readpool.storage.normal-concurrency: 10 - -readpool.coprocessor.normal-concurrency: 5 - -### v4.0 - -#### TiDB - -log.level: “error” - -performance.max-procs: 20 - -prepared-plan-cache.enabled: true - -tikv-client.max-batch-wait-time: 2000000 +#### TiKV 3.0 参数配置 + +- storage.scheduler-worker-pool-size: 5 +- raftstore.store-pool-size: 3 +- raftstore.apply-pool-size: 3 +- rocksdb.max-background-jobs: 3 +- raftdb.max-background-jobs: 3 +- raftdb.allow-concurrent-memtable-write: true +- server.grpc-concurrency: 6 +- readpool.storage.normal-concurrency: 10 +- readpool.coprocessor.normal-concurrency: 5 + +#### TiDB 4.0 参数配置 + +- log.level: “error” +- performance.max-procs: 20 +- prepared-plan-cache.enabled: true +- tikv-client.max-batch-wait-time: 2000000 -#### TiKV - -storage.scheduler-worker-pool-size: 5 - -raftstore.store-pool-size: 3 - -raftstore.apply-pool-size: 3 - -rocksdb.max-background-jobs: 3 - -raftdb.max-background-jobs: 3 - -raftdb.allow-concurrent-memtable-write: true - -server.request-batch-enable-cross-command: false - -server.grpc-concurrency: 6 - -readpool.unifiy-read-pool: true - -readpool.unified.min-thread-count: 5 - -readpool.unified.max-thread-count: 20 - -readpool.storage.normal-concurrency: 10 - -pessimistic-txn.pipelined: true +#### TiKV 4.0 参数配置 + +- storage.scheduler-worker-pool-size: 5 +- raftstore.store-pool-size: 3 +- raftstore.apply-pool-size: 3 +- rocksdb.max-background-jobs: 3 +- raftdb.max-background-jobs: 3 +- raftdb.allow-concurrent-memtable-write: true +- server.request-batch-enable-cross-command: false +- server.grpc-concurrency: 6 +- readpool.unifiy-read-pool: true +- readpool.unified.min-thread-count: 5 +- readpool.unified.max-thread-count: 20 +- readpool.storage.normal-concurrency: 10 +- pessimistic-txn.pipelined: true #### 全局变量 - set global tidb_hashagg_final_concurrency=1; - - set global tidb_hashagg_partial_concurrency=1; - - set global tidb_disable_txn_auto_retry=0; -### 测试方案 +## 测试方案 - 通过 TiUP 部署 TiDB v4.0 和 v3.0。 - - 通过 Sysbench 导入 16 张表,每张表数据 1000 万数据。 - - 分别对每个表执行 `analyze table` 命令。 - - 备份数据用于不同并发测试前进行恢复以保证每次数据一致。 - - 启动 Sysbench 客户端,测试 point_select, read_write,update_index, update_non_index,通过 aws nlb 向 TIDB 加压,单次预热 1 分钟,测试 5 分钟。 - - 每轮完成后停止集群,使用之前的备份的数据覆盖,再启动集群。 ### 准备数据命令 @@ -149,24 +114,24 @@ sysbench $testname \ --mysql-port=$aws_nlb_port \ run --tables=16 --table-size=10000000 -### 测试结果 +## 测试结果 -#### Point Select +### Point Select TODO -#### Update Non-index +### Update Non-index TODO -#### Update Index +### Update Index TODO -#### Read Write +### Read Write TODO From 86e4527dec921b3d949b0cdca67afcbdb936bcbc Mon Sep 17 00:00:00 2001 From: ruofly0425 Date: Tue, 26 May 2020 21:49:04 +0800 Subject: [PATCH 51/68] Update overview.md Co-authored-by: Lilian Lee --- overview.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/overview.md b/overview.md index 826292605955..cd052e0fd753 100644 --- a/overview.md +++ b/overview.md @@ -45,4 +45,4 @@ TiDB 是 PingCAP 公司自主设计、研发的开源分布式关系型数据库 - 数据汇聚、二次加工处理的场景 - 当前绝大部分企业的业务数据都分散在不同的系统中,没有一个统一的汇总,随着业务的发展,企业的决策层需要了解整个公司的业务状况方便即时的做出决策,故需要将分散在各个系统的数据汇聚在同一个系统并进行二次加工处理生成 T + 0/1 的报表。传统常见的解决方案是采用 ETL + Hadoop 来完成,但 Hadoop 体系统太复杂,运维、存储成本太高无法满度用户的需求。与 Hadoop 相比, TiDB 就会简单得多,业务通过 ETL 工具或者 TiDB 的同步工具将数据同步到 TiDB,在 TiDB 中可通过 SQL 直接生成报表。 + 当前绝大部分企业的业务数据都分散在不同的系统中,没有一个统一的汇总,随着业务的发展,企业的决策层需要了解整个公司的业务状况方便即时的做出决策,故需要将分散在各个系统的数据汇聚在同一个系统并进行二次加工处理生成 T + 0/1 的报表。传统常见的解决方案是采用 ETL + Hadoop 来完成,但 Hadoop 体系统太复杂,运维、存储成本太高无法满度用户的需求。与 Hadoop 相比,TiDB 就会简单得多,业务通过 ETL 工具或者 TiDB 的同步工具将数据同步到 TiDB,在 TiDB 中可通过 SQL 直接生成报表。 From b256c8bc3c6ef6d72d509f7bcec1a133502d400b Mon Sep 17 00:00:00 2001 From: ruofly0425 Date: Tue, 26 May 2020 21:53:17 +0800 Subject: [PATCH 52/68] Update key-features.md --- key-features.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/key-features.md b/key-features.md index fcd3be3c3048..b2b431de7f54 100644 --- a/key-features.md +++ b/key-features.md @@ -9,11 +9,11 @@ category: introduction ## 数据类型 -- 数值类型: `BIT、BOOL|BOOLEAN、SMALLINT、MEDIUMINT、INT|INTEGER、BIGINT、FLOAT、DOUBLE、DECIMAL`。 +- 数值类型: BIT、BOOL|BOOLEAN、SMALLINT、MEDIUMINT、INT|INTEGER、BIGINT、FLOAT、DOUBLE、DECIMAL。 -- 日期和时间类型: `DATE、TIME、DATETIME、TIMESTAMP、YEAR`。 +- 日期和时间类型: DATE、TIME、DATETIME、TIMESTAMP、YEAR。 -- 字符串类型: `CHAR、VARCHAR、TEXT、TINYTEXT、MEDIUMTEXT、LONGTEXT、BINARY、VARBINARY、BLOB、TINYBLOB、MEDIUMBLOB、LONGBLOB、ENUM、SET`。 +- 字符串类型: CHAR、VARCHAR、TEXT、TINYTEXT、MEDIUMTEXT、LONGTEXT、BINARY、VARBINARY、BLOB、TINYBLOB、MEDIUMBLOB、LONGBLOB、ENUM、SET。 - JSON 类型。 @@ -23,9 +23,9 @@ category: introduction ## 字符集及排序规则 -- 字符集:`UTF8、UTF8MB4、BINARY、ASCII、LATIN1`。 +- 字符集:UTF8、UTF8MB4、BINARY、ASCII、LATIN1。 -- 排序规则:`UTF8MB4_GENERAL_CI、UTF8MB4_GENERAL_BIN、UTF8_GENERAL_CI、UTF8_GENERAL_BIN、BINARY`。 +- 排序规则:UTF8MB4_GENERAL_CI、UTF8MB4_GENERAL_BIN、UTF8_GENERAL_CI、UTF8_GENERAL_BIN、BINARY。 ## 函数 @@ -43,9 +43,9 @@ category: introduction - 完全支持标准的 Utility Statements语句, 例如:DESCRIBE、EXPLAIN、USE 等。 -- 完全支持 `SQL GROUP BY` 和 `ORDER BY` 子语句。 +- 完全支持 SQL GROUP BY 和 ORDER BY 子语句。 -- 完全支持标准 SQL 语法的 `LEFT OUTER JOIN` 和 `RIGHT OUTER JOIN`。 +- 完全支持标准 SQL 语法的 LEFT OUTER JOIN 和 RIGHT OUTER JOIN。 - 完全支持标准 SQL 要求的表和列别名。 From db186b76c8a96306be15366ef4aa10b03b149bb9 Mon Sep 17 00:00:00 2001 From: ruofly0425 Date: Tue, 26 May 2020 21:55:22 +0800 Subject: [PATCH 53/68] Update v4.0-performance-benchmarking-with-tpcc.md --- ...v4.0-performance-benchmarking-with-tpcc.md | 214 ++++++++++-------- 1 file changed, 119 insertions(+), 95 deletions(-) diff --git a/benchmark/v4.0-performance-benchmarking-with-tpcc.md b/benchmark/v4.0-performance-benchmarking-with-tpcc.md index 06bfcd758bc1..94b720456071 100644 --- a/benchmark/v4.0-performance-benchmarking-with-tpcc.md +++ b/benchmark/v4.0-performance-benchmarking-with-tpcc.md @@ -1,113 +1,137 @@ --- -title: TPC-C 性能对比 - v4.0 对比 v3.0 +title: TiDB Sysbench 性能对比测试报告 - v4.0 对比 v3.0 category: benchmark -aliases: ['/docs-cn/dev/benchmark/tpcc-v2/'] --- -# TPC-C 性能对比 - v4.0 对比 v3.0 +# TiDB Sysbench 性能对比测试报告 - v4.0 对比 v3.0 ## 测试目的 -对比 TiDB 4.0 版本和 3.0 版本的 TPC-C 性能表现。 +测试对比 TiDB v4.0 和 v3.0 在 OLTP 场景下的性能。 + +## 测试环境 (AWS EC2) + +### 硬件配置 + +| 服务类型 | EC2 类型 | 节点数 | +|:----------|:----------|:----------| +| PD | m5.xlarge | 3 | +| TiKV | i3.4xlarge| 3 | +| TiDB | c5.4xlarge| 3 | +| Sysbench | m5.4xlarge| 1 | + +### 软件版本 + +| 服务类型 | 软件版本 +|:----------|:-----------| +| PD | 3.0、4.0 | +| TiDB | 3.0、4.0 | +| TiKV | 3.0、4.0 | +| Sysbench | 1.0.20 | + +### 参数配置 + +#### TiDB 3.0 参数配置 + +- log.level: “error” +- performance.max-procs: 20 +- prepared-plan-cache.enabled: true +- tikv-client.max-batch-wait-time: 2000000 + +#### TiKV 3.0 参数配置 + +- storage.scheduler-worker-pool-size: 5 +- raftstore.store-pool-size: 3 +- raftstore.apply-pool-size: 3 +- rocksdb.max-background-jobs: 3 +- raftdb.max-background-jobs: 3 +- raftdb.allow-concurrent-memtable-write: true +- server.grpc-concurrency: 6 +- readpool.storage.normal-concurrency: 10 +- readpool.coprocessor.normal-concurrency: 5 + +#### TiDB 4.0 参数配置 + +- log.level: “error” +- performance.max-procs: 20 +- prepared-plan-cache.enabled: true +- tikv-client.max-batch-wait-time: 2000000 + +#### TiKV 4.0 参数配置 + +- storage.scheduler-worker-pool-size: 5 +- raftstore.store-pool-size: 3 +- raftstore.apply-pool-size: 3 +- rocksdb.max-background-jobs: 3 +- raftdb.max-background-jobs: 3 +- raftdb.allow-concurrent-memtable-write: true +- server.request-batch-enable-cross-command: false +- server.grpc-concurrency: 6 +- readpool.unifiy-read-pool: true +- readpool.unified.min-thread-count: 5 +- readpool.unified.max-thread-count: 20 +- readpool.storage.normal-concurrency: 10 +- pessimistic-txn.pipelined: true + +#### 全局变量 + +- set global tidb_hashagg_final_concurrency=1; +- set global tidb_hashagg_partial_concurrency=1; +- set global tidb_disable_txn_auto_retry=0; -## 测试版本、时间、地点 - -TiDB 版本:v4.0.0-rc vs. v3.0.8 - -时间:2020 年 4 月 - -地点:北京 - -## 测试环境 +## 测试方案 -AWS 机器: +- 通过 TiUP 部署 TiDB v4.0 和 v3.0。 +- 通过 Sysbench 导入 16 张表,每张表数据 1000 万数据。 +- 分别对每个表执行 `analyze table` 命令。 +- 备份数据用于不同并发测试前进行恢复以保证每次数据一致。 +- 启动 Sysbench 客户端,测试 point_select, read_write,update_index, update_non_index,通过 aws nlb 向 TIDB 加压,单次预热 1 分钟,测试 5 分钟。 +- 每轮完成后停止集群,使用之前的备份的数据覆盖,再启动集群。 + +### 准备数据命令 + +sysbench oltp_common \ + --threads=16 \ + --rand-type=uniform \ + --db-driver=mysql \ + --mysql-db=sbtest \ + --mysql-host=$aws_nlb_host \ + --mysql-port=$aws_nlb_port \ + --mysql-user=root \ + --mysql-password=password \ + prepare --tables=16 --table-size=10000000 + +### 执行测试命令 + +sysbench $testname \ + --threads=$threads \ + --time=300 \ + --report-interval=1 \ + --rand-type=uniform \ + --db-driver=mysql \ + --mysql-db=sbtest \ + --mysql-host=$aws_nlb_host \ + --mysql-port=$aws_nlb_port \ + run --tables=16 --table-size=10000000 -| 类别 | 机型 | 数量 | vCPUs | -| :- | :- | :- | :- | -| TiKV | i3.4xlarge | 3 | 16 | -| TiDB | c5.4xlarge | 2 | 16 | -| PD | m5.xlarge | 3 | 4 | +## 测试结果 -本文使用开源的 BenchmarkSQL 5.0 作为 TPC-C 测试工具并添加对 MySQL 协议支持。可以通过以下命令下载测试程序: +### Point Select -{{< copyable "shell-regular" >}} +TODO + -```shell -git clone -b 5.0-mysql-support-opt https://github.com/pingcap/benchmarksql.git -``` +### Update Non-index -## 测试方案 +TODO + -使用 BenchmarkSQL 向集群导入 **5000 warehouse** 的数据。通过 HAProxy 代理,分别以递增并发数向集群发送请求,单次并发测试时间 10 分钟。 - -### TiDB 版本信息 - -#### v4.0.0-rc - -| 组件 | GitHash | -| :- | :- | -| TiDB | 79db9e30ab8f98ac07c8ae55c66dfecc24b43d56 | -| TiKV | f45d0c963df3ee4b1011caf5eb146cacd1fbbad8 | -| PD | 6f06805f3b0070107fcb4af68b2fc224dee0714d | - -#### v3.0.8 - -| 组件 | GitHash | -| :- | :- | -| TiDB | 8f13cf1449bd8903ff465a4f12ed89ecbac858a4 | -| TiKV | 0d3168cfd8224fbc48a07796df83ddac0fbcbf46 | -| PD | 456c42b8b0955b33426b58054e43b771801a74d0 | - -### TiDB 参数配置 - -{{< copyable "" >}} - -```toml -[log] -level = "error" -[performance] -max-procs = 20 -[prepared_plan_cache] -enabled = true -``` - -### TiKV 参数配置 - -{{< copyable "" >}} - -```toml -[readpool] -unify-read-pool = true -[readpool.unified] -min-thread-count = 5 -max-thread-count = 6 -[readpool.storage] - -[readpool.coprocessor] -[storage] -scheduler-worker-pool-size = 3 -[raftstore] -store-pool-size = 3 -[rocksdb] -max-background-jobs = 3 -wal-dir = "" -[raftdb] -max-background-jobs = 3 -allow-concurrent-memtable-write = true -[server] -request-batch-enable-cross-command = false -[pessimistic-txn] -pipelined = true -``` - -### 集群拓扑 - -* 每台 i3.4xlarge 上部署一个 TiKV 实例,一共三台。 -* 每台 c5.4xlarge 部署一个 TiDB 实例,一共两台。 -* 每台 m5.xlarge 部署一个 PD 实例,一共三台。 +### Update Index -## 测试结果 +TODO + -![tpcc](/media/tpcc-3.0-4.0.png) +### Read Write -v4.0.0-rc 比 v3.0.8 在 TPC-C 性能上,**提升了 40%**。 +TODO + From 48b1a91b87c3f4e1cb2fbaa8fd2646588835b47c Mon Sep 17 00:00:00 2001 From: ruofly0425 Date: Tue, 26 May 2020 21:57:05 +0800 Subject: [PATCH 54/68] Update v4.0-performance-benchmarking-with-tpcc.md --- ...v4.0-performance-benchmarking-with-tpcc.md | 190 +++++++++--------- 1 file changed, 95 insertions(+), 95 deletions(-) diff --git a/benchmark/v4.0-performance-benchmarking-with-tpcc.md b/benchmark/v4.0-performance-benchmarking-with-tpcc.md index 94b720456071..c8a7cf48fcf7 100644 --- a/benchmark/v4.0-performance-benchmarking-with-tpcc.md +++ b/benchmark/v4.0-performance-benchmarking-with-tpcc.md @@ -1,15 +1,13 @@ --- -title: TiDB Sysbench 性能对比测试报告 - v4.0 对比 v3.0 -category: benchmark +title: TPC-C 性能测试报告 +category: introduction --- -# TiDB Sysbench 性能对比测试报告 - v4.0 对比 v3.0 +# 测试目的 -## 测试目的 +测试对比 TiDB v4.0 和 v3.0 OLTP 场景下的性能。 -测试对比 TiDB v4.0 和 v3.0 在 OLTP 场景下的性能。 - -## 测试环境 (AWS EC2) +## 测试环境 (AWS EC2) ### 硬件配置 @@ -27,111 +25,113 @@ category: benchmark | PD | 3.0、4.0 | | TiDB | 3.0、4.0 | | TiKV | 3.0、4.0 | -| Sysbench | 1.0.20 | +| Benchmarksql | non | + +### 配置参数 + +#### v3.0 + +#### TiDB -### 参数配置 +log.level: “error” -#### TiDB 3.0 参数配置 +performance.max-procs: 20 -- log.level: “error” -- performance.max-procs: 20 -- prepared-plan-cache.enabled: true -- tikv-client.max-batch-wait-time: 2000000 +prepared-plan-cache.enabled: true + +tikv-client.max-batch-wait-time: 2000000 -#### TiKV 3.0 参数配置 - -- storage.scheduler-worker-pool-size: 5 -- raftstore.store-pool-size: 3 -- raftstore.apply-pool-size: 3 -- rocksdb.max-background-jobs: 3 -- raftdb.max-background-jobs: 3 -- raftdb.allow-concurrent-memtable-write: true -- server.grpc-concurrency: 6 -- readpool.storage.normal-concurrency: 10 -- readpool.coprocessor.normal-concurrency: 5 - -#### TiDB 4.0 参数配置 - -- log.level: “error” -- performance.max-procs: 20 -- prepared-plan-cache.enabled: true -- tikv-client.max-batch-wait-time: 2000000 +#### TiKV + +storage.scheduler-worker-pool-size: 5 + +raftstore.store-pool-size: 3 + +raftstore.apply-pool-size: 3 + +rocksdb.max-background-jobs: 3 + +raftdb.max-background-jobs: 3 + +raftdb.allow-concurrent-memtable-write: true + +server.grpc-concurrency: 6 + +readpool.storage.normal-concurrency: 10 + +readpool.coprocessor.normal-concurrency: 5 + +### v4.0 + +#### TiDB + +log.level: “error” + +performance.max-procs: 20 + +prepared-plan-cache.enabled: true + +tikv-client.max-batch-wait-time: 2000000 -#### TiKV 4.0 参数配置 - -- storage.scheduler-worker-pool-size: 5 -- raftstore.store-pool-size: 3 -- raftstore.apply-pool-size: 3 -- rocksdb.max-background-jobs: 3 -- raftdb.max-background-jobs: 3 -- raftdb.allow-concurrent-memtable-write: true -- server.request-batch-enable-cross-command: false -- server.grpc-concurrency: 6 -- readpool.unifiy-read-pool: true -- readpool.unified.min-thread-count: 5 -- readpool.unified.max-thread-count: 20 -- readpool.storage.normal-concurrency: 10 -- pessimistic-txn.pipelined: true +#### TiKV -#### 全局变量 +storage.scheduler-worker-pool-size: 5 -- set global tidb_hashagg_final_concurrency=1; -- set global tidb_hashagg_partial_concurrency=1; -- set global tidb_disable_txn_auto_retry=0; +raftstore.store-pool-size: 3 -## 测试方案 +raftstore.apply-pool-size: 3 -- 通过 TiUP 部署 TiDB v4.0 和 v3.0。 -- 通过 Sysbench 导入 16 张表,每张表数据 1000 万数据。 -- 分别对每个表执行 `analyze table` 命令。 -- 备份数据用于不同并发测试前进行恢复以保证每次数据一致。 -- 启动 Sysbench 客户端,测试 point_select, read_write,update_index, update_non_index,通过 aws nlb 向 TIDB 加压,单次预热 1 分钟,测试 5 分钟。 -- 每轮完成后停止集群,使用之前的备份的数据覆盖,再启动集群。 - -### 准备数据命令 - -sysbench oltp_common \ - --threads=16 \ - --rand-type=uniform \ - --db-driver=mysql \ - --mysql-db=sbtest \ - --mysql-host=$aws_nlb_host \ - --mysql-port=$aws_nlb_port \ - --mysql-user=root \ - --mysql-password=password \ - prepare --tables=16 --table-size=10000000 - -### 执行测试命令 +rocksdb.max-background-jobs: 3 -sysbench $testname \ - --threads=$threads \ - --time=300 \ - --report-interval=1 \ - --rand-type=uniform \ - --db-driver=mysql \ - --mysql-db=sbtest \ - --mysql-host=$aws_nlb_host \ - --mysql-port=$aws_nlb_port \ - run --tables=16 --table-size=10000000 +raftdb.max-background-jobs: 3 -## 测试结果 +raftdb.allow-concurrent-memtable-write: true -### Point Select +server.request-batch-enable-cross-command: false -TODO - +server.grpc-concurrency: 6 -### Update Non-index +readpool.unifiy-read-pool: true -TODO - +readpool.unified.min-thread-count: 5 -### Update Index +readpool.unified.max-thread-count: 20 -TODO - +readpool.storage.normal-concurrency: 10 + +pessimistic-txn.pipelined: true + +#### 全局变量 + +- set global tidb_hashagg_final_concurrency=1; + +- set global tidb_hashagg_partial_concurrency=1; + +- set global tidb_disable_txn_auto_retry=0; + +### 测试方案 + +- 通过 TiUP 部署 TiDB v4.0 和 v3.0。 + +- 通过 Benchmarksql 导入 TPC-C 5000 Warehouse 数据。 + + * 编译 Benchmarksql, `git clone https://github.com/pingcap/benchmarksql && cd benchmarksql && ant`。 + + * 进入 run 目录,根据实际情况编辑 props.mysql 文件,调整 conn、warehouses、loadWorkers、terminals、runMins 配置项。 + + * 运行 runSQL.sh ./props.mysql sql.mysql/tableCreates.sql + + * 运行 runSQL.sh ./props.mysql sql.mysql/indexCreates.sql + + * 运行 MySQL Client 并对每个表执行 `analyze table` 命令。 + + - 运行 runBenchmark.sh ./props.mysql。 + + - 从结果中提取 New Order 的 tpmC 的数据。 + +### 测试结果 -### Read Write +#### TPC-C TODO - + From fa73878d45f4095d1c48ec220bac50a0e1b73612 Mon Sep 17 00:00:00 2001 From: ruofly0425 Date: Tue, 26 May 2020 21:57:37 +0800 Subject: [PATCH 55/68] Update v4.0-performance-benchmarking-with-tpcc.md --- benchmark/v4.0-performance-benchmarking-with-tpcc.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/benchmark/v4.0-performance-benchmarking-with-tpcc.md b/benchmark/v4.0-performance-benchmarking-with-tpcc.md index c8a7cf48fcf7..a5bff5cd8f5f 100644 --- a/benchmark/v4.0-performance-benchmarking-with-tpcc.md +++ b/benchmark/v4.0-performance-benchmarking-with-tpcc.md @@ -1,6 +1,6 @@ --- title: TPC-C 性能测试报告 -category: introduction +category: benchmark --- # 测试目的 From ed4783498c697df74a1d215de27926cc251d7f5d Mon Sep 17 00:00:00 2001 From: ruofly0425 Date: Tue, 26 May 2020 22:02:25 +0800 Subject: [PATCH 56/68] Rename key-features.md to base-features.md --- key-features.md => base-features.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename key-features.md => base-features.md (100%) diff --git a/key-features.md b/base-features.md similarity index 100% rename from key-features.md rename to base-features.md From bba61a6d2a65e28cebb6a3b80dbf22ae9324034b Mon Sep 17 00:00:00 2001 From: ruofly0425 Date: Tue, 26 May 2020 22:12:18 +0800 Subject: [PATCH 57/68] Update TOC.md --- TOC.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TOC.md b/TOC.md index 7d01050e3683..d0c44eec3fa9 100644 --- a/TOC.md +++ b/TOC.md @@ -10,7 +10,7 @@ + [TiDB 简介](/overview.md) + [开源信息说明](/licensing.md) + [核心用户列表](/adopters.md) - + [核心特性](/key-features.md) @段兵 + + [核心特性](/basic-features.md) @段兵 + 数据类型 + SQL 与功能 + 安全性 From 59393b355d549f0eb0fcc8d7902bb055ba91449a Mon Sep 17 00:00:00 2001 From: ruofly0425 Date: Tue, 26 May 2020 22:13:01 +0800 Subject: [PATCH 58/68] Rename base-features.md to basic-features.md --- base-features.md => basic-features.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename base-features.md => basic-features.md (100%) diff --git a/base-features.md b/basic-features.md similarity index 100% rename from base-features.md rename to basic-features.md From bce0c17959c33455d7835707594a901fbff82192 Mon Sep 17 00:00:00 2001 From: ruofly0425 Date: Tue, 26 May 2020 23:26:52 +0800 Subject: [PATCH 59/68] Update mysql-compatibility.md Co-authored-by: Keke Yi <40977455+yikeke@users.noreply.github.com> --- mysql-compatibility.md | 1 - 1 file changed, 1 deletion(-) diff --git a/mysql-compatibility.md b/mysql-compatibility.md index 8eb0ad108df3..5a9f6184611b 100644 --- a/mysql-compatibility.md +++ b/mysql-compatibility.md @@ -52,7 +52,6 @@ aliases: ['/docs-cn/dev/reference/mysql-compatibility/'] > * `tidb_allow_remove_auto_inc` 要求版本号 >= v2.1.18 或者 >= v3.0.4。 > * 表的 `AUTO_ID_CACHE` 属性要求版本号 >= v3.0.14 或者 >= v3.1.2 或者 >= v4.0.rc-2。 > * 若创建表时没有指定主键时, TiDB 会使用 `_tidb_rowid` 来标识行,该数值的分配会和自增列(如果存在的话)共用一个分配器。如果指定了自增列为主键,则 TiDB 会用该列来标识行。因此会有以下的示例情况: -> ```sql mysql> create table t(id int unique key AUTO_INCREMENT); Query OK, 0 rows affected (0.05 sec) From 2558b2d660843217ddd9bd0c4560013ad1faf6df Mon Sep 17 00:00:00 2001 From: ruofly0425 Date: Tue, 26 May 2020 23:32:15 +0800 Subject: [PATCH 60/68] Update v4.0-performance-benchmarking-with-tpcc.md --- benchmark/v4.0-performance-benchmarking-with-tpcc.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/benchmark/v4.0-performance-benchmarking-with-tpcc.md b/benchmark/v4.0-performance-benchmarking-with-tpcc.md index a5bff5cd8f5f..ffb11b587b2b 100644 --- a/benchmark/v4.0-performance-benchmarking-with-tpcc.md +++ b/benchmark/v4.0-performance-benchmarking-with-tpcc.md @@ -1,9 +1,9 @@ --- -title: TPC-C 性能测试报告 +title: TiDB TPC-C 性能对比测试报告 - v4.0 对比 v3.0 category: benchmark --- -# 测试目的 +## 测试目的 测试对比 TiDB v4.0 和 v3.0 OLTP 场景下的性能。 From 229afb3931e819ed1fa5288cf1ff15b9aa9a3151 Mon Sep 17 00:00:00 2001 From: ruofly0425 Date: Tue, 26 May 2020 23:32:37 +0800 Subject: [PATCH 61/68] Delete benchmark-tpcc-v3vsv4.md --- benchmark/benchmark-tpcc-v3vsv4.md | 137 ----------------------------- 1 file changed, 137 deletions(-) delete mode 100644 benchmark/benchmark-tpcc-v3vsv4.md diff --git a/benchmark/benchmark-tpcc-v3vsv4.md b/benchmark/benchmark-tpcc-v3vsv4.md deleted file mode 100644 index c8a7cf48fcf7..000000000000 --- a/benchmark/benchmark-tpcc-v3vsv4.md +++ /dev/null @@ -1,137 +0,0 @@ ---- -title: TPC-C 性能测试报告 -category: introduction ---- - -# 测试目的 - -测试对比 TiDB v4.0 和 v3.0 OLTP 场景下的性能。 - -## 测试环境 (AWS EC2) - -### 硬件配置 - -| 服务类型 | EC2 类型 | 节点数 | -|:----------|:----------|:----------| -| PD | m5.xlarge | 3 | -| TiKV | i3.4xlarge| 3 | -| TiDB | c5.4xlarge| 3 | -| Sysbench | m5.4xlarge| 1 | - -### 软件版本 - -| 服务类型 | 软件版本 -|:----------|:-----------| -| PD | 3.0、4.0 | -| TiDB | 3.0、4.0 | -| TiKV | 3.0、4.0 | -| Benchmarksql | non | - -### 配置参数 - -#### v3.0 - -#### TiDB - -log.level: “error” - -performance.max-procs: 20 - -prepared-plan-cache.enabled: true - -tikv-client.max-batch-wait-time: 2000000 - -#### TiKV - -storage.scheduler-worker-pool-size: 5 - -raftstore.store-pool-size: 3 - -raftstore.apply-pool-size: 3 - -rocksdb.max-background-jobs: 3 - -raftdb.max-background-jobs: 3 - -raftdb.allow-concurrent-memtable-write: true - -server.grpc-concurrency: 6 - -readpool.storage.normal-concurrency: 10 - -readpool.coprocessor.normal-concurrency: 5 - -### v4.0 - -#### TiDB - -log.level: “error” - -performance.max-procs: 20 - -prepared-plan-cache.enabled: true - -tikv-client.max-batch-wait-time: 2000000 - -#### TiKV - -storage.scheduler-worker-pool-size: 5 - -raftstore.store-pool-size: 3 - -raftstore.apply-pool-size: 3 - -rocksdb.max-background-jobs: 3 - -raftdb.max-background-jobs: 3 - -raftdb.allow-concurrent-memtable-write: true - -server.request-batch-enable-cross-command: false - -server.grpc-concurrency: 6 - -readpool.unifiy-read-pool: true - -readpool.unified.min-thread-count: 5 - -readpool.unified.max-thread-count: 20 - -readpool.storage.normal-concurrency: 10 - -pessimistic-txn.pipelined: true - -#### 全局变量 - -- set global tidb_hashagg_final_concurrency=1; - -- set global tidb_hashagg_partial_concurrency=1; - -- set global tidb_disable_txn_auto_retry=0; - -### 测试方案 - -- 通过 TiUP 部署 TiDB v4.0 和 v3.0。 - -- 通过 Benchmarksql 导入 TPC-C 5000 Warehouse 数据。 - - * 编译 Benchmarksql, `git clone https://github.com/pingcap/benchmarksql && cd benchmarksql && ant`。 - - * 进入 run 目录,根据实际情况编辑 props.mysql 文件,调整 conn、warehouses、loadWorkers、terminals、runMins 配置项。 - - * 运行 runSQL.sh ./props.mysql sql.mysql/tableCreates.sql - - * 运行 runSQL.sh ./props.mysql sql.mysql/indexCreates.sql - - * 运行 MySQL Client 并对每个表执行 `analyze table` 命令。 - - - 运行 runBenchmark.sh ./props.mysql。 - - - 从结果中提取 New Order 的 tpmC 的数据。 - -### 测试结果 - -#### TPC-C - -TODO - From aecb3f2d56c623a0f3e1478cc209b9428af657a7 Mon Sep 17 00:00:00 2001 From: ruofly0425 Date: Tue, 26 May 2020 23:37:56 +0800 Subject: [PATCH 62/68] Update mysql-compatibility.md --- mysql-compatibility.md | 1 + 1 file changed, 1 insertion(+) diff --git a/mysql-compatibility.md b/mysql-compatibility.md index 5a9f6184611b..b06fbfa9d69f 100644 --- a/mysql-compatibility.md +++ b/mysql-compatibility.md @@ -52,6 +52,7 @@ aliases: ['/docs-cn/dev/reference/mysql-compatibility/'] > * `tidb_allow_remove_auto_inc` 要求版本号 >= v2.1.18 或者 >= v3.0.4。 > * 表的 `AUTO_ID_CACHE` 属性要求版本号 >= v3.0.14 或者 >= v3.1.2 或者 >= v4.0.rc-2。 > * 若创建表时没有指定主键时, TiDB 会使用 `_tidb_rowid` 来标识行,该数值的分配会和自增列(如果存在的话)共用一个分配器。如果指定了自增列为主键,则 TiDB 会用该列来标识行。因此会有以下的示例情况: + ```sql mysql> create table t(id int unique key AUTO_INCREMENT); Query OK, 0 rows affected (0.05 sec) From 4b0e63218f8ac07c128194e2517ab989602bd4f8 Mon Sep 17 00:00:00 2001 From: Lilian Lee Date: Tue, 26 May 2020 23:43:02 +0800 Subject: [PATCH 63/68] Add aliases for key features --- overview.md | 1 + 1 file changed, 1 insertion(+) diff --git a/overview.md b/overview.md index cd052e0fd753..3bf3948a4582 100644 --- a/overview.md +++ b/overview.md @@ -1,6 +1,7 @@ --- title: TiDB 简介 category: introduction +aliases: ['/docs-cn/dev/key-features/'] --- # TiDB 简介 From 7b72c1ebaed21ff186707ffbc28fa88008a2900d Mon Sep 17 00:00:00 2001 From: Lilian Lee Date: Tue, 26 May 2020 23:43:22 +0800 Subject: [PATCH 64/68] Update benchmark/benchmark-sysbench-v4-vs-v3.md --- benchmark/benchmark-sysbench-v4-vs-v3.md | 1 + 1 file changed, 1 insertion(+) diff --git a/benchmark/benchmark-sysbench-v4-vs-v3.md b/benchmark/benchmark-sysbench-v4-vs-v3.md index 94b720456071..ee2f8c68bd37 100644 --- a/benchmark/benchmark-sysbench-v4-vs-v3.md +++ b/benchmark/benchmark-sysbench-v4-vs-v3.md @@ -1,6 +1,7 @@ --- title: TiDB Sysbench 性能对比测试报告 - v4.0 对比 v3.0 category: benchmark +draft: true --- # TiDB Sysbench 性能对比测试报告 - v4.0 对比 v3.0 From 471562b5f543611fbaf94d0773ef16a8acfbc9fe Mon Sep 17 00:00:00 2001 From: ruofly0425 Date: Wed, 27 May 2020 00:05:06 +0800 Subject: [PATCH 65/68] Update v4.0-performance-benchmarking-with-tpcc.md --- benchmark/v4.0-performance-benchmarking-with-tpcc.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/benchmark/v4.0-performance-benchmarking-with-tpcc.md b/benchmark/v4.0-performance-benchmarking-with-tpcc.md index ffb11b587b2b..c08830a1a48a 100644 --- a/benchmark/v4.0-performance-benchmarking-with-tpcc.md +++ b/benchmark/v4.0-performance-benchmarking-with-tpcc.md @@ -3,6 +3,8 @@ title: TiDB TPC-C 性能对比测试报告 - v4.0 对比 v3.0 category: benchmark --- +# TiDB TPC-C 性能对比测试报告 - v4.0 对比 v3.0 + ## 测试目的 测试对比 TiDB v4.0 和 v3.0 OLTP 场景下的性能。 From 8c7ab5dfcd060760902df3a422e20309586b7a5d Mon Sep 17 00:00:00 2001 From: Lilian Lee Date: Wed, 27 May 2020 11:05:34 +0800 Subject: [PATCH 66/68] Update benchmark/v4.0-performance-benchmarking-with-tpcc.md --- benchmark/v4.0-performance-benchmarking-with-tpcc.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/benchmark/v4.0-performance-benchmarking-with-tpcc.md b/benchmark/v4.0-performance-benchmarking-with-tpcc.md index c08830a1a48a..12c1338cb5c3 100644 --- a/benchmark/v4.0-performance-benchmarking-with-tpcc.md +++ b/benchmark/v4.0-performance-benchmarking-with-tpcc.md @@ -9,7 +9,7 @@ category: benchmark 测试对比 TiDB v4.0 和 v3.0 OLTP 场景下的性能。 -## 测试环境 (AWS EC2) +## 测试环境 (AWS EC2) ### 硬件配置 From 23333e7db0a837b56939c56956bd382d53e21659 Mon Sep 17 00:00:00 2001 From: Lilian Lee Date: Wed, 27 May 2020 11:05:47 +0800 Subject: [PATCH 67/68] Update benchmark/v4.0-performance-benchmarking-with-tpcc.md --- benchmark/v4.0-performance-benchmarking-with-tpcc.md | 1 + 1 file changed, 1 insertion(+) diff --git a/benchmark/v4.0-performance-benchmarking-with-tpcc.md b/benchmark/v4.0-performance-benchmarking-with-tpcc.md index 12c1338cb5c3..71ead77fe300 100644 --- a/benchmark/v4.0-performance-benchmarking-with-tpcc.md +++ b/benchmark/v4.0-performance-benchmarking-with-tpcc.md @@ -1,6 +1,7 @@ --- title: TiDB TPC-C 性能对比测试报告 - v4.0 对比 v3.0 category: benchmark +draft: true --- # TiDB TPC-C 性能对比测试报告 - v4.0 对比 v3.0 From 49eb5739093626dc17386eb5d0a4e3947890226d Mon Sep 17 00:00:00 2001 From: Lilian Lee Date: Wed, 27 May 2020 11:10:48 +0800 Subject: [PATCH 68/68] Update tidb-limitations.md --- tidb-limitations.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tidb-limitations.md b/tidb-limitations.md index 21a86a56e327..62e449a3da7d 100644 --- a/tidb-limitations.md +++ b/tidb-limitations.md @@ -5,7 +5,7 @@ category: introduction # 使用限制 -本文会将详细描述 TiDB 中常见的使用限制,包括:标识符长度,最大支持的数据库、表、索引、分区表、序列等的个数 +本文会将详细描述 TiDB 中常见的使用限制,包括:标识符长度,最大支持的数据库、表、索引、分区表、序列等的个数。 ## 标识符长度限制