Skip to content

Commit

Permalink
*: Improve documentation readability and consistency (#15179) (#15250)
Browse files Browse the repository at this point in the history
  • Loading branch information
ti-chi-bot authored Oct 17, 2023
1 parent 9550d20 commit a8a1cdc
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 16 deletions.
20 changes: 13 additions & 7 deletions mysql-compatibility.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ TiDB 高度兼容 MySQL 协议,以及 MySQL 5.7 和 MySQL 8.0 常用的功能

> **注意:**
>
> 本页内容仅涉及 MySQL 与 TiDB 的总体差异。关于[安全特性](/security-compatibility-with-mysql.md)[悲观事务模式](/pessimistic-transaction.md#和-mysql-innodb-的差异)相关的兼容信息请查看各自具体页面
> 本页内容仅涉及 MySQL 与 TiDB 的总体差异。关于[安全特性](/security-compatibility-with-mysql.md)[悲观事务模式](/pessimistic-transaction.md#和-mysql-innodb-的差异)相关的兼容信息,请查看各自具体页面
## 不支持的功能特性

Expand Down Expand Up @@ -53,13 +53,13 @@ TiDB 高度兼容 MySQL 协议,以及 MySQL 5.7 和 MySQL 8.0 常用的功能

### 自增 ID

- TiDB 的自增列既能保证唯一,也能保证在单个 TiDB server 中自增,使用 [`AUTO_INCREMENT` MySQL 兼容模式](/auto-increment.md#mysql-兼容模式)能保证多个 TiDB server 中自增 ID,但不保证自动分配的值的连续性。不建议将缺省值和自定义值混用,若混用可能会收到 `Duplicated Error` 的错误信息
- TiDB 的自增列既能保证唯一,也能保证在单个 TiDB server 中自增,使用 [`AUTO_INCREMENT` MySQL 兼容模式](/auto-increment.md#mysql-兼容模式)能保证多个 TiDB server 中自增 ID,但不保证自动分配的值的连续性。建议避免将缺省值和自定义值混用,以免出现 `Duplicated Error` 的错误

- TiDB 可通过 `tidb_allow_remove_auto_inc` 系统变量开启或者关闭允许移除列的 `AUTO_INCREMENT` 属性。删除列属性的语法是:`ALTER TABLE MODIFY``ALTER TABLE CHANGE`

- TiDB 不支持添加列的 `AUTO_INCREMENT` 属性,移除该属性后不可恢复。

- 对于 v6.6.0 及更早的 TiDB 版本,TiDB 的行为与 MySQL InnoDB 保持一致,要求自增列必须为主键或者索引前缀。从 v7.0.0 开始,TiDB 移除自增列必须是索引或索引前缀的限制,允许用户更灵活地定义表的主键。关于此更改的详细信息,请参阅 [#40580](https://github.com/pingcap/tidb/issues/40580)
- 对于 v6.6.0 及更早的 TiDB 版本,TiDB 的自增列行为与 MySQL InnoDB 保持一致,要求自增列必须为主键或者索引前缀。从 v7.0.0 开始,TiDB 移除了该限制,允许用户更灵活地定义表的主键。关于此更改的详细信息,请参阅 [#40580](https://github.com/pingcap/tidb/issues/40580)

自增 ID 详情可参阅 [AUTO_INCREMENT](/auto-increment.md)

Expand Down Expand Up @@ -99,7 +99,7 @@ mysql> SELECT _tidb_rowid, id FROM t;
### Performance schema

TiDB 主要使用 Prometheus 和 Grafana 来存储及查询相关的性能监控指标,所以 Performance schema 部分表是空表
TiDB 主要使用 Prometheus 和 Grafana 来存储及查询相关的性能监控指标。因此,TiDB 的 Performance schema 表返回空结果

### 查询计划

Expand Down Expand Up @@ -135,12 +135,14 @@ TiDB 中,所有支持的 DDL 变更操作都是在线执行的。与 MySQL 相

### `ANALYZE TABLE`

TiDB 中的[信息统计](/statistics.md#手动收集)与 MySQL 中的有所不同:TiDB 中的信息统计会完全重构表的统计数据,语句执行过程较长,但在 MySQL/InnoDB 中,它是一个轻量级语句,执行过程较短。
TiDB 中的[信息统计](/statistics.md#手动收集)与 MySQL 中的有所不同:TiDB 中的信息统计会完全重构表的统计数据,语句消耗较多资源,执行过程较长,但在 MySQL/InnoDB 中,它是一个轻量级语句,执行过程较短。

更多信息统计的差异请参阅 [`ANALYZE TABLE`](/sql-statements/sql-statement-analyze-table.md)

### `SELECT` 的限制

TiDB 的 `SELECT` 语法有以下限制:

- 不支持 `SELECT ... INTO @变量` 语法。
- TiDB 中的 `SELECT .. GROUP BY expr` 的返回结果与 MySQL 5.7 并不一致。MySQL 5.7 的结果等价于 `GROUP BY expr ORDER BY expr`

Expand Down Expand Up @@ -180,6 +182,8 @@ TiDB 支持大部分 [SQL 模式](/sql-mode.md)。不支持的 SQL 模式如下

### 默认设置

TiDB 的默认设置与 MySQL 5.7 和 MySQL 8.0 有以下区别:

- 字符集:
+ TiDB 默认:`utf8mb4`
+ MySQL 5.7 默认:`latin1`
Expand Down Expand Up @@ -209,14 +213,16 @@ TiDB 支持大部分 [SQL 模式](/sql-mode.md)。不支持的 SQL 模式如下

### 日期时间处理的区别

#### 时区
TiDB 与 MySQL 在日期时间处理上有如下差异:

- TiDB 采用系统当前安装的所有时区规则进行计算(一般为 `tzdata` 包),不需要导入时区表数据就能使用所有时区名称,无法通过导入时区表数据的形式修改计算规则
- TiDB 采用系统当前安装的所有时区规则进行计算(一般为 `tzdata` 包),不需要导入时区表数据就能使用所有时区名称,导入时区表数据不会修改计算规则

- MySQL 默认使用本地时区,依赖于系统内置的当前的时区规则(例如什么时候开始夏令时等)进行计算;且在未[导入时区表数据](https://dev.mysql.com/doc/refman/8.0/en/time-zone-support.html#time-zone-installation)的情况下不能通过时区名称来指定时区。

### 类型系统

MySQL 支持以下列类型,但 TiDB 不支持:

+ 不支持 FLOAT4/FLOAT8。

+ 不支持 `SQL_TSI_*`(包括 `SQL_TSI_MONTH``SQL_TSI_WEEK``SQL_TSI_DAY``SQL_TSI_HOUR``SQL_TSI_MINUTE``SQL_TSI_SECOND`,但不包括 `SQL_TSI_YEAR`)。
Expand Down
18 changes: 9 additions & 9 deletions overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,13 @@ title: TiDB 简介

## 五大核心特性

- 一键水平扩容或者缩容
- 一键水平扩缩容

得益于 TiDB 存储计算分离的架构的设计,可按需对计算、存储分别进行在线扩容或者缩容,扩容或者缩容过程中对应用运维人员透明。

- 金融级高可用

数据采用多副本存储,数据副本通过 Multi-Raft 协议同步事务日志,多数派写入成功事务才能提交,确保数据强一致性且少数副本发生故障时不影响数据的可用性。可按需配置副本地理位置、副本数量等策略满足不同容灾级别的要求
数据采用多副本存储,数据副本通过 Multi-Raft 协议同步事务日志,多数派写入成功事务才能提交,确保数据强一致性且少数副本发生故障时不影响数据的可用性。可按需配置副本地理位置、副本数量等策略,满足不同容灾级别的要求

- 实时 HTAP

Expand All @@ -42,21 +42,21 @@ title: TiDB 简介

## 四大核心应用场景

- 对数据一致性及高可靠、系统高可用、可扩展性、容灾要求较高的金融行业属性的场景
- 金融行业场景

众所周知,金融行业对数据一致性及高可靠、系统高可用、可扩展性、容灾要求较高。传统的解决方案是同城两个机房提供服务、异地一个机房提供数据容灾能力但不提供服务,此解决方案存在以下缺点:资源利用率低、维护成本高、RTO (Recovery Time Objective) 及 RPO (Recovery Point Objective) 无法真实达到企业所期望的值。TiDB 采用多副本 + Multi-Raft 协议的方式将数据调度到不同的机房、机架、机器,当部分机器出现故障时系统可自动进行切换,确保系统的 RTO <= 30s 及 RPO = 0。
金融行业对数据一致性及高可靠、系统高可用、可扩展性、容灾要求较高。传统的解决方案的资源利用率低,维护成本高。TiDB 采用多副本 + Multi-Raft 协议的方式将数据调度到不同的机房、机架、机器,确保系统的 RTO <= 30s 及 RPO = 0。

- 对存储容量、可扩展性、并发要求较高的海量数据及高并发的 OLTP 场景
- 海量数据及高并发的 OLTP 场景

随着业务的高速发展,数据呈现爆炸性的增长,传统的单机数据库无法满足因数据爆炸性的增长对数据库的容量要求,可行方案是采用分库分表的中间件产品或者 NewSQL 数据库替代、采用高端的存储设备等,其中性价比最大的是 NewSQL 数据库,例如:TiDB。TiDB 采用计算、存储分离的架构,可对计算、存储分别进行扩容和缩容,计算最大支持 512 节点,每个节点最大支持 1000 并发,集群容量最大支持 PB 级别。
传统的单机数据库无法满足因数据爆炸性的增长对数据库的容量要求。TiDB 是一种性价比高的解决方案,采用计算、存储分离的架构,可对计算、存储分别进行扩缩容,计算最大支持 512 节点,每个节点最大支持 1000 并发,集群容量最大支持 PB 级别。

- Real-time HTAP 场景
- 实时 HTAP 场景

随着 5G、物联网、人工智能的高速发展,企业所生产的数据会越来越多,其规模可能达到数百 TB 甚至 PB 级别,传统的解决方案是通过 OLTP 型数据库处理在线联机交易业务,通过 ETL 工具将数据同步到 OLAP 型数据库进行数据分析,这种处理方案存在存储成本高、实时性差等多方面的问题。TiDB 在 4.0 版本中引入列存储引擎 TiFlash 结合行存储引擎 TiKV 构建真正的 HTAP 数据库,在增加少量存储成本的情况下,可以在同一个系统中做联机交易处理、实时数据分析,极大地节省企业的成本。
TiDB 适用于需要实时处理的大规模数据和高并发场景。TiDB 在 4.0 版本中引入列存储引擎 TiFlash结合行存储引擎 TiKV 构建真正的 HTAP 数据库,在增加少量存储成本的情况下,可以在同一个系统中做联机交易处理、实时数据分析,极大地节省企业的成本。

- 数据汇聚、二次加工处理的场景

当前绝大部分企业的业务数据都分散在不同的系统中,没有一个统一的汇总,随着业务的发展,企业的决策层需要了解整个公司的业务状况以便及时做出决策,故需要将分散在各个系统的数据汇聚在同一个系统并进行二次加工处理生成 T+0 或 T+1 的报表。传统常见的解决方案是采用 ETL + Hadoop 来完成,但 Hadoop 体系太复杂,运维、存储成本太高无法满足用户的需求。与 Hadoop 相比,TiDB 就简单得多,业务通过 ETL 工具或者 TiDB 的同步工具将数据同步到 TiDB,在 TiDB 中可通过 SQL 直接生成报表。
TiDB 适用于将企业分散在各个系统的数据汇聚在同一个系统,并进行二次加工处理生成 T+0 或 T+1 的报表。与 Hadoop 相比,TiDB 要简单得多,业务通过 ETL 工具或者 TiDB 的同步工具将数据同步到 TiDB,在 TiDB 中可通过 SQL 直接生成报表。

关于 TiDB 典型应用场景和用户案例的介绍,请观看以下视频。

Expand Down

0 comments on commit a8a1cdc

Please sign in to comment.