tidb courses: day7

tidb day7

Posted by cslqm on December 20, 2020

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 ....(表示多个)