一 简介:介绍新型NEW SQL数据库tidb

二 目的: tidb出现的目的,就是代替mysql+中间件,实现横向水平扩展

三 核心理论观点

1 MySQL 是单机数据库,只能通过 XA 来满足跨数据库事务,而 TiDB 本身就通过 Google 的 Percolator 事务模型支持分布式事务,性能稳定性比 XA 要高出很多,所以不会也不需要支持 XA。也就是说tidb并不是依靠XA事务实现的分布式一致性

2 三层架构

TiDB 是 Server 计算层,主要负责 SQL 的解析、制定查询计划、生成执行器。,是消耗资源的主要进程,主要消耗 cpu 内存

TiKV 是分布式 Key-Value 存储引擎,用来存储真正的数据,简而言之,TiKV 是 TiDB 的存储引擎,采用raft协议,多地备份实现高可用(数据可用+服务可用) 无重要消耗

PD 是 TiDB 集群的管理组件,负责存储 TiKV 的元数据,同时也负责分配时间戳以及对 TiKV 做负载均衡调度 主要消耗 磁盘,最好SSD

3 TiDB 和mysql兼容性对比

1  不支持 存储过程与函数 视图 触发器 事件 自定义函数 外键约束 全文索引 空间索引 非 utf8 字符集 增加主键 删除主键 SYS schema MySQL 追踪优化器 X Protocol

2  TiDB 的自增 ID (Auto Increment ID) 只保证自增且唯一,并不保证连续分配,它的分片方式是 节点1 分配一段ID,节点2 再分配另一段ID,以此类推 建议不要混用缺省值和自定义值(要么都指定自增ID,要么都使用默认值)

3   Performance schema 表在 TiDB 中返回结果为空。TiDB 使用 Prometheus 和 Grafana 来监测性能指标。

4  TiDB 支持常用的 MySQL 内建函数,但是不是所有的函数都已经支持,具体请参考语法文档

5   DDL 操作 大多不会阻塞线上DML 但是要注意 有些会阻塞,而且有些并不支持

1 针对主键的操作 删除 增加

2 同时进行的操作,比如同时增加列 同时增加索引等

6 TiDB 使用乐观事务模型,在执行 Update、Insert、Delete 等语句时,只有在提交过程中才会检查写写冲突,而不是像 MySQL 一样使用行锁来避免写写冲突。所以业务端在执行 SQL 语句后,需要注意检查 commit 的返回值,即使执行时没有出错,commit的时候也可能会出错。

7 针对load date

TiDB 在执行 load data 时,默认每 2 万行记录作为一个事务进行持久化存储。如果一次 load data 操作插入的数据超过 2 万行,那么会分为多个事务进行提交。如果某个事务出错,这个事务会提交失败,但它前面的事务仍然会提交成功,在这种情况下一次 load data 操作会有部分数据插入成功,部分数据插入失败。

而 MySQL 中会将一次 load data 操作视为一个事务,如果其中发生失败情况,将会导致整个 load data 操作失败。

8  tidb 针对大事务的限制

9  tidb的explain和mysql的是不一致的

10 默认sql_mode

tidb   STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION

11 隔离级别

tidb  TiDB 实现的是论文中的 snapshot 隔离级别,该隔离级别不会出现幻读,但是会出现写偏斜

mysql  ANSI 可重复读隔离级别不会出现写偏斜,会出现幻读。

12 tidb 所需要的软硬件环境(推荐最佳配置)

系统环境  centos 7.3+

网卡        双万兆网卡

三层架构

tidb       sas

pd         ssd

tikv       ssd

监控     sas

tikv  硬盘大小配置建议 PCI-E SSD 不超过 2 TB,普通 SSD 不超过 1.5 TB。

tidb pd tikv 三者都放在单独的服务器上

补充 整个 TiDB 架构是面向未来、面向海量数据高并发场景,底层存储技术(如数据定位 seek)都是针对当前主流的 SSD 进行设计和优化的,不会对传统的 SATA/SAS 机械硬盘再进行优化。

tidb 架构~tidb 理论学习(1)的更多相关文章

  1. tidb 架构 ~Tidb学习系列(5)

    一 简介:今天我们继续学习tidb的增量传输 二 说明: tidb高度兼容mysql,可以仿照mysql的主从同步复制机制实现mysql->tidb的增量传输 三 实验: 1 下载tidb官方工 ...

  2. tidb 架构 ~Tidb学习系列(4)

    一 简介:今天我们继续学习tidb 二 集群管理 0 集群配置       验证 4台一组 3个kv 一个pd+server       上线 6台一组   1 动态添加kv服务       nohu ...

  3. tidb 架构 ~Tidb学习系列(3)

    tidb集群安装测试1 环境 3台机器2 配置   server1 pd服务+tidb-server   server2 tidb-kv   server3 tidb-kv3 环境配置命令   ser ...

  4. tidb 架构 ~Tidb学习系列(2)

    一 简介:咱们今天来学习导入数据篇 二  导入数据测试   1 工具   mysqldumper   loader   2 下载tidb企业版工具  wget http://download.ping ...

  5. tidb 架构 ~Tidb学习系列(1)

    一 简介:今天来研究Tidb 二 安装测试: 0 下载Tidb wget http://download.pingcap.org/tidb-latest-linux-amd64.tar.gz   按如 ...

  6. TiDB 架构及设计实现

    一. TiDB的核心特性 高度兼容 MySQL 大多数情况下,无需修改代码即可从 MySQL 轻松迁移至 TiDB,分库分表后的 MySQL 集群亦可通过 TiDB 工具进行实时迁移. 水平弹性扩展 ...

  7. 简单了解 TiDB 架构

    一.前言 大家如果看过我之前发过的文章就知道,我写过很多篇关于 MySQL 的文章,从我的 Github 汇总仓库 中可以看出来: 可能还不是很全,算是对 MySQL 有一个浅显但较为全面的理解.之前 ...

  8. 遇见 TiDB

    遇见 TiDB 文章来源:企鹅号 - 塔塔驿站 最近TiDB掀起了一波分布式数据库的热潮,公司也在着手准备TiDB的落地工作,前几天也参与了几场公司针对TiDB的分享会,下面我们了解一下关于TiDB. ...

  9. [转] 遇见 TiDB - 分布式关系数据库

    [From] http://kuaibao.qq.com/s/20180510G0UFL000?refer=cp_1026 最近TiDB掀起了一波分布式数据库的热潮,公司也在着手准备TiDB的落地工作 ...

随机推荐

  1. ef 仓储模式

    构建一个仓储模式. Model 大家自己创建就行了,上个图,就不多说了(我是code first) IDAL namespace IDAL { public interface IBaseReposi ...

  2. day27 封装

    广义上的面向对象的封装: 代码的保护,面向对象思想本身就是一种封装 只让自己的对象调用自己类的方法 狭义的封装: 面向对象的三大特性之一,其他两个是继承和多态. 属性和方法都可以藏起来不让你看到 cl ...

  3. Markdown公式编辑学习笔记

    一.公式使用参考 1.如何插入公式 行中公式(放在文中与其它文字混编)可以用如下方法表示:$ 数学公式 $ 独立公式可以用如下方法表示:$$ 数学公式 $$ 自动编号的公式可以用如下方法表示: 若需要 ...

  4. Leetcode 191.位1的个数 By Python

    编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 '1' 的个数(也被称为汉明重量). 示例 : 输入: 11 输出: 3 解释: 整数 11 的二进制表示为 00000000000 ...

  5. 【杂题1】USACO 2018 Open Contest-练习

    https://www.xoj.red/contests/show/1231 下面会写一些题目的解析什么的,当然不会粘贴题目只是简单提一下 (部分题目简单的题目就不概括了) 其实难度应该前面比较低. ...

  6. 洛谷 P4345 [SHOI2015]超能粒子炮·改 解题报告

    P4345 [SHOI2015]超能粒子炮·改 题意 求\(\sum_{i=0}^k\binom{n}{i}\),\(T\)组数据 范围 \(T\le 10^5,n,j\le 10^{18}\) 设\ ...

  7. UVALive - 6434 (思维题)

    题目链接:https://vjudge.net/contest/241341#problem/A 题目大意,给你n个数字,让你分成m组,每组的花费为每组的最大值-最小值,总的花费就是各组花费相加,要求 ...

  8. websocket c++ example

    //============================================================================ // Name : websocket.c ...

  9. Linux 常用命令——which, whereis, locate, find

    转载请注明出处:http://blog.csdn.net/drecik__/article/details/8455399 1. which 查找使用命令所在的位置 2. whereis 搜索文件,跟 ...

  10. 蛋白质结构模型和功能预测:I-TASSER工具的使用

    I-TASSER是一款用于预测蛋白质结构和功能的工具,网站链接:https://zhanglab.ccmb.med.umich.edu/I-TASSER/ 具体描述如下: I-TASSER (Iter ...