【TiDB 4.0 PCTA 学习笔记】- 2.4 Behavior Differences Between MySQL and TiDB(TiDB 与 MySQL 的差异) 2.5.1 The Lifecycle of a SQL Statement(在 TiDB 中一条 SQL 的生命周期)@1班+李墨白

课程名称:课程版本(101/201/301)+ 2.4 Behavior Differences Between MySQL and TiDB(TiDB 与 MySQL 的差异) 2.5.1 The Lifecycle of a SQL Statement(在 TiDB 中一条 SQL 的生命周期)

学习时长:

30min

课程收获:

TiDB 和 MySQL 在语法、功能和行为上的主要差异
TiDB的sql生命周期

课程内容:

  1. 兼容性概览
  • 协议
    • 100%兼容MySQL5.7协议
    • Client/Server 协议
    • 可以使用MySQL生态系统工具
  • 语法
    • 大多数MySQL5.7和8.0语法高度兼容
    • DDL
    • DML
  • 语义
    • 一些特性不同或不支持
    • 不支持是因为
      • 在分布式环境下很难实现
      • 尚未实现
      • 低回报(low ROI)
    • 不同
      • auto_increment
      • storage engine
  1. 与MySQL不同的主要特性
  • 不支持特性
    • 存储过程和函数
    • 触发器
    • 事件
    • UDF
    • 外键约束和Check约束
  • 不同
    • auto_increment
      • auto_increment限制
        • 不支持添加到对已存在的列
      • auto_increment语义
        • 单TiDB集群
          • 唯一,自增且连续
        • 多TiDB集群
          • 唯一,不保证自增或连续
    • 索引
      • 不支持全文索引
        • 不支持spatial index
          不支持一些索引选项(除了visible/invisible)
    • 主键
      • 整数索引:聚簇索引
      • 其他索引:唯一索引
    • 不支持multi-schema change,即不能在同一个语句中同时修改多个列
    • 不支持有损变更
    • 隔离级别
      • 默认可重复读
        • 使用快照隔离实现
        • 和MySQL的可重复度有轻微不同
      • 读提交
        • 只适用于悲观事务
    • analyze table
      • MySQL中轻量操作,TiDB中重操作
    • 视图
      • 不支持insert/update/delete
    • 存储引擎
      • SQL层的“storage=xxx”会被忽略
      • 在启动时声明存储引擎: --store
    • 字符集
      • 只支持:utf8, utf8mb4, ascii, latin1以及二进制
    • 执行计划
      • explain结果和MySQL 显著不同

TiDB架构

数据组织

一条SQL的生命周期

学习过程中参考的其他资料