TiDB 与 MySQL 的区别
协议兼容 语法兼容 数据定义 数据处理 基本事务/锁 语义兼容
AUTO_INCREMENT
在单个 TIDB 上,可以唯一性,自增性,连续性。 多个 TiDB 上,只能唯一性。 为了提高 AUTO_INCREMENT 效率。
INDEX
不支持的 index: 全文索引 fulltext index 空间索引 spatial index 索引选项 VISIBLE/INVISIBLE
primary key
不支持 整数主键 other primary kes: stored as unique index
multi-schema change
不支持 在同一个 SQL 中,去修改多个 schema change 。 alter table modify colume a int, modify colume b int;
lossy colume type changes
不支持
char(10)->char(5) varchar(255)->varchar(10) decimal(5)->decimal(3)
隔离级别
REPEATABLE READ(default) 实际上是快照级别
READ COMMITTED
一条 SQL 在 TiDB 的生命周期
t«tableID»_r«rowID» => [col1, col2, col3, col4]
t«tableID»_i«indexID»_indexedColumnsValue => rowID Or t«tableID»_i«indexID»_indexedColumnsValue_rowID => nil
CREATE TABLE user_table ( id INT, name VARCHAR(64), email VARCHAR(1024), PRIMARY KEY(id) );
user_data | ||
---|---|---|
1 | dongxu | hunag@ping.com |
2 | foo | bar@ping.com |
对应的 KV: t101_r1 => [1, dongxu, hunag@ping.com] t101_r2 => [2, foo, bar@ping.com]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
--SQL--> Parser --AST--> logical optimizer
|
|
logical Plan
|
V
<-result -- root executor <-physical plan-- physical optimizer
|---------------------- ^
| | |
V Feedback cardinality estimation
DistSQL | |
| V |
| statistics-----------
CopTask
|
V
TiKV ....(表示多个)