Skip to content

Commit

Permalink
Merge pull request #792 from lhyPingcap/master
Browse files Browse the repository at this point in the history
Update FAQ.md
  • Loading branch information
liubo0127 committed Jul 9, 2018
2 parents 0471ee6 + 83e54e5 commit ffb69e4
Showing 1 changed file with 9 additions and 12 deletions.
21 changes: 9 additions & 12 deletions FAQ.md
Original file line number Diff line number Diff line change
Expand Up @@ -464,9 +464,10 @@ Client 连接只能通过 TiDB 访问集群,TiDB 负责连接 PD 与 TiKV,PD
#### 3.3.2 DDL 在正常情况下的耗时是多少?

一般情况下处理一个 DDL 操作(之前没有其他 DDL 操作在处理)的耗时基本可以分如下为三种:
- add index 操作,且此操作对应表数据行数比较少,耗时约为 3s.

- add index 操作,且此操作对应表数据行数比较少,耗时约为 3s。
- add index 操作,且此操作对应表数据行数比较多,耗时具体由表中数据行数和当时 QPS 情况定(add index 操作优先级比一般 SQL 低)。
- 其他 DDL 操作耗时约为 1s.
- 其他 DDL 操作耗时约为 1s

此外,如果接收 DDL 请求的 TiDB 和 DDL owner 所处的 TiDB 是一台,那么上面列举的第一和第三种可能的耗时应该在几十到几百毫秒。

Expand All @@ -481,7 +482,7 @@ Client 连接只能通过 TiDB 访问集群,TiDB 负责连接 PD 与 TiKV,PD

#### 3.3.4 TiDB 可以使用 S3 作为后端存储吗?

不可以,目前 TiDB 只支持分布式存储引擎和 Goleveldb/Rocksdb/Boltdb 引擎
不可以,目前 TiDB 只支持分布式存储引擎和 Goleveldb/Rocksdb/Boltdb 引擎

#### 3.3.5 Infomation_schema 能否支持更多真实信息?

Expand Down Expand Up @@ -764,26 +765,22 @@ DELETE,TRUNCATE 和 DROP 都不会立即释放空间。对于 TRUNCATE 和 DRO

支持,但是 load data 不支持 replace into 语法。

#### 4.3.8 数据删除后空间多长时间空间回收?

Delete,Truncate 和 Drop 都不会立即释放空间,对于 Truncate 和 Drop 操作,在达到 TiDB 的 GC (Garbage Collection) 时间后(默认 10 分钟),TiDB 的 GC 机制会删除数据并释放空间。对于 Delete 操作 TiDB 的 GC 机制会删除数据,但不会释放空间,而是当后续数据写入 RocksDB 且进行 Compact 时对空间重新利用。

#### 4.3.9 数据删除后查询速度为何会变慢?
#### 4.3.8 数据删除后查询速度为何会变慢?

大量删除数据后,会有很多无用的 key 存在,影响查询效率。目前正在开发 Region Merge 功能,完善之后可以解决这个问题,具体看参考[最佳实践](https://pingcap.com/blog-cn/tidb-best-practice/) 中的删除数据部分。
大量删除数据后,会有很多无用的 key 存在,影响查询效率。目前正在开发 Region Merge 功能,完善之后可以解决这个问题,具体看参考[最佳实践](https://pingcap.com/blog-cn/tidb-best-practice/)中的删除数据部分。

#### 4.3.10 数据删除最高效最快的方式?
#### 4.3.9 数据删除最高效最快的方式?

在删除大量数据的时候,建议使用 `Delete * from t where xx limit 5000`(xx 建议在满足业务过滤逻辑下,尽量加上强过滤索引列或者直接使用主键选定范围,如 `id >= 5000*n+m and id <= 5000*(n+1)+m` 这样的方案,通过循环来删除,用 `Affected Rows == 0` 作为循环结束条件,这样避免遇到事务大小的限制。如果一次删除的数据量非常大,这种循环的方式会越来越慢,因为每次删除都是从前向后遍历,前面的删除之后,短时间内会残留不少删除标记(后续会被 GC 掉),影响后面的 Delete 语句。如果有可能,建议把 Where 条件细化。可以参考官网[最佳实践](https://pingcap.com/blog-cn/tidb-best-practice/)

#### 4.3.11 TiDB 如何提高数据加载速度?
#### 4.3.10 TiDB 如何提高数据加载速度?

主要三个方面:

- 目前正在开发分布式导入工具 Lightning,需要注意的是数据导入过程中为了性能考虑,不会执行完整的事务流程,所以没办法保证导入过程中正在导入的数据的 ACID 约束,只能保证整个导入过程结束以后导入数据的 ACID 约束。因此适用场景主要为新数据的导入(比如新的表或者新的索引),或者是全量的备份恢复(先 Truncate 原表再导入)。
- TiDB 的数据加载与磁盘以及整体集群状态相关,加载数据时应关注该主机的磁盘利用率,TiClient Error/Backoff/Thread CPU 等相关 metric,可以分析相应瓶颈。

#### 4.3.12 对数据做删除操作之后,空间回收比较慢,如何处理?
#### 4.3.11 对数据做删除操作之后,空间回收比较慢,如何处理?

可以设置并行 GC,加快对空间的回收速度。默认并发为 1,最大可调整为 tikv 实例数量的 50%。可使用 `update mysql.tidb set VARIABLE_VALUE="3" where VARIABLE_NAME="tikv_gc_concurrency";` 命令来调整。

Expand Down

0 comments on commit ffb69e4

Please sign in to comment.