TiDB 是 PingCAP 公司自主设计、研发的开源分布式关系型数据库,是一款同时支持在线事务处理与在线分析处理 (Hybrid Transactional and Analytical Processing, HTAP) 的融合型分布式数据库产品,具备水平扩容或者缩容、金融级高可用、实时 HTAP、云原生的分布式数据库、兼容 MySQL 5.7 协议和 MySQL 生态等重要特性。目标是为用户提供一站式 OLTP (Online Transactional Processing)、OLAP (Online Analytical Processing)、HTAP 解决方案。TiDB 适合高可用、强一致要求较高、数据规模较大等各种应用场景。
TiDB软件特色
1、一键水平扩容或者缩容
得益于 TiDB 存储计算分离的架构的设计,可按需对计算、存储分别进行在线扩容或者缩容,扩容或者缩容过程中对应用运维人员透明。
2、金融级高可用
数据采用多副本存储,数据副本通过 Multi-Raft 协议同步事务日志,多数派写入成功事务才能提交,确保数据强一致性且少数副本发生故障时不影响数据的可用性。可按需配置副本地理位置、副本数量等策略满足不同容灾级别的要求。
3、实时 HTAP
提供行存储引擎 TiKV、列存储引擎 TiFlash 两款存储引擎,TiFlash 通过 Multi-Raft Learner 协议实时从 TiKV 复制数据,确保行存储引擎 TiKV 和列存储引擎 TiFlash 之间的数据强一致。TiKV、TiFlash 可按需部署在不同的机器,解决 HTAP 资源隔离的问题。
4、云原生的分布式数据库
专为云而设计的分布式数据库,通过 TiDB Operator 可在公有云、私有云、混合云中实现部署工具化、自动化。
5、兼容 MySQL 5.7 协议和 MySQL 生态
兼容 MySQL 5.7 协议、MySQL 常用的功能、MySQL 生态,应用无需或者修改少量代码即可从 MySQL 迁移到 TiDB。提供丰富的数据迁移工具帮助应用便捷完成数据迁移。
TiDB软件功能
一、数据类型
1、数值类型:BIT、BOOL|BOOLEAN、SMALLINT、MEDIUMINT、INT|INTEGER、BIGINT、FLOAT、DOUBLE、DECIMAL。
2、日期和时间类型:DATE、TIME、DATETIME、TIMESTAMP、YEAR
3、字符串类型:CHAR、VARCHAR、TEXT、TINYTEXT、MEDIUMTEXT、LONGTEXT、BINARY、VARBINARY、BLOB、TINYBLOB、MEDIUMBLOB、LONGBLOB、ENUM、SET。
4、JSON 类型。
二、运算符
算术运算符、位运算符、比较运算符、逻辑运算符、日期和时间运算符等。
三、字符集及排序规则
1、字符集:UTF8、UTF8MB4、BINARY、ASCII、LATIN1。
2、排序规则:UTF8MB4_GENERAL_CI、UTF8MB4_GENERAL_BIN、UTF8_GENERAL_CI、UTF8_GENERAL_BIN、BINARY。
四、函数
控制流函数、字符串函数、日期和时间函数、位函数、数据类型转换函数、数据加解密函数、压缩和解压函数、信息函数、JSON 函数、聚合函数、窗口函数等。
五、SQL 语句
1、完全支持标准的 Data Definition Language (DDL) 语句,例如:CREATE、DROP、ALTER、RENAME、TRUNCATE 等。
2、完全支持标准的 Data Manipulation Language (DML) 语句,例如:INSERT、REPLACE、SELECT、Subqueries、UPDATE、LOAD DATA 等。
3、完全支持标准的 Transactional and Locking 语句,例如:START TRANSACTION、COMMIT、ROLLBACK、SET TRANSACTION 等。
4、完全支持标准的 Database Administration 语句,例如:SHOW、SET 等。
5、完全支持标准的 Utility 语句,例如:DESCRIBE、EXPLAIN、USE 等。
6、完全支持 SQL GROUP BY 和 ORDER BY 子语句。
7、完全支持标准 SQL 语法的 LEFT OUTER JOIN 和 RIGHT OUTER JOIN。
8、完全支持标准 SQL 要求的表和列别名。
六、分区表
1、支持 Range 分区。
2、支持 Hash 分区。
七、视图
支持普通视图。
八、约束
1、支持非空约束。
2、支持主键约束。
3、支持唯一约束。
九、安全
1、支持基于 RBAC (role-based access control) 的权限管理。
2、支持密码管理。
3、支持通信、数据加密。
4、支持 IP 白名单。
5、支持审计功能。
十、工具
1、支持快速备份功能。
2、支持通过工具从 MySQL 迁移数据到 TiDB。
3、支持通过工具部署、运维 TiDB。
使用教程
1、查看、创建和删除数据库TiDB 语境中的 Database 或者说数据库,可以认为是表和索引等对象的集合。
使用 SHOW DATABASES 语句查看系统中数据库列表:SHOW DATABASES
2、使用名为 mysql 的数据库:USE mysql
3、使用 SHOW TABLES 语句查看数据库中的所有表。例如:SHOW TABLES FROM mysql
4、使用 CREATE DATABASE 语句创建数据库。语法如下:CREATE DATABASE db_name [options]
5、例如,要创建一个名为 samp_db 的数据库,可使用以下语句:CREATE DATABASE IF NOT EXISTS samp_db
6、添加 IF NOT EXISTS 可防止发生错误。
使用 DROP DATABASE 语句删除数据库。例如:DROP DATABASE samp_db
更新日志
兼容性更改TiDB
修复在新会话中执行 SHOW VARIABLES 速度较慢的问题。该修复回退了中的部分更改,可能会引起兼容性问题。
以下 Bug 修复涉及执行结果变化,可能引起兼容性变化:
修复了 greatest(datetime) union null 返回空字符串的问题
修复了 having 可能执行错误的问题
修复了当 between 表达式两边的 collation 不一致会导致查询结果错误的问题
修复了 extract 函数的参数是负数时查询结果错误的问题
修复了当 group_concat 函数包含非 bin 的 collation 时查询结果错误的问题
修复将 Apply 算子转为 Join 时漏掉列信息的问题
修复将非法字符串转为 DATE 类型时的非预期行为
修复开启 New Collation 时多列的 count distinct 返回结果错误的问题
功能增强
TiKV
支持动态修改 TiCDC 配置
提升改进
TiDB
基于直方图的 row count 来触发 auto-analyze
TiKV
分离处理读写的 ready 状态以减少读延迟
TiKV Coprocessor 慢日志只考虑处理请求所花费的时间
当 slogger 线程过载且队列已满时,删除日志而不是阻塞线程
减少 Resolved TS 消息的大小以节省网络带宽
PD
提升了 PD 之间同步 Region 信息的性能
Tools
Backup & Restore (BR)
并发执行分裂和打散 Region 的操作,提升恢复速度
遇到 PD 请求错误或 TiKV I/O 超时错误时重试 BR 任务
恢复大量小表时减少空 Region 的产生,避免影响恢复后的集群运行
创建表的时候自动执行 rebase auto id 操作,省去了单独的 rebase auto id DDL 操作,加快恢复速度
Dumpling
获取表信息前过滤掉不需要导出的数据库,提升 SHOW TABLE STATUS 的过滤效率
使用 SHOW FULL TABLES 来获取需要导出的表,因为 SHOW TABLE STATUS 在某些 MySQL 版本上运行存在问题
支持对 MySQL 兼容的特定数据库进行备份,这些数据库不支持 START TRANSACTION ... WITH CONSISTENT SNAPSHOT 和 SHOW CREATE TABLE 语法
完善 Dumpling 的警告日志,避免让用户误以为导出失败
TiDB Lightning
支持导入数据到带有表达式索引或带有基于虚拟生成列的索引的表中
TiCDC
TiCDC 总是内部从 TiKV 拉取 old value,提升 TiCDC 易用性
当某张表的 Region 从某个 TiKV 节点全部迁移走时,减少 goroutine 资源的使用
在高并发下减少 workerpool 中创建的 goroutine 数量
异步执行 DDL 语句,不阻塞其他 changefeed
为所有 KV 客户端创建全局共享的 gRPC 连接池
遇到无法恢复的 DML 错误立即退出,不进行重试
优化 Unified Sorter 使用内存排序时的内存管理
为执行 DDL 语句新增 Prometheus 监控指标
禁止使用不同的 major 和 minor 版本启动 TiCDC 节点
移除 file sorter 文件排序器
清理被删 changefeed 的监控数据和已退出处理节点的监控数据
优化 Region 初始化后的清锁算法
Bug 修复
TiDB
修复构建 range 时未正确给二进制字面值设置排序规则的问题
修复当查询包含 GROUP BY 和 UNION 时报错 "index out of range" 的问题
修复当 TiKV 有 tombstone store 时 TiDB 发送请求失败的问题 #23676
移除文档中未记录的 /debug/sub-optimal-plan HTTP API
修复 case when 表达式的字符集不正确的问题
TiKV
修复数据恢复期间启用 TDE 时 BR 报告文件已存在错误的问题
修复损坏的快照文件可能会造成磁盘空间无法回收的问题
修复 TiKV 过于频繁删除陈旧 Region 的问题
修复 TiKV 频繁重新连接 PD 客户端的问题
从加密文件字典中检查陈旧的文件信息
PD
修复 PD 未能及时修复 Down Peer 副本的问题
修复了 PD 在扩容 TiKV 时可能会 Panic 的问题
TiFlash
修复多盘部署时数据不一致的潜在问题
修复当查询过滤条件包含诸如 CONSTANT、<、<=、>、>= 或 COLUMN 时出现错误结果的问题
修复写入压力大时 metrics 中 store size 不准确的问题
修复 TiFlash 多盘部署时无法恢复数据的潜在问题
修复 TiFlash 长时间运行后无法回收 Delta 历史数据的潜在问题
Tools
Backup & Restore (BR)
修复了备份和恢复中平均速度计算不准确的问题
TiCDC
修复集成测试中遇到由于 DDL Job 重复导致的 ErrSchemaStorageTableMiss 错误
修复遇到 ErrGCTTLExceeded 错误时 changefeed 无法被删除的问题
修复 capture list 命令输出中出现已过期 capture 的问题
修复 TiCDC processor 出现死锁的问题
修复重新调度一张表时多个处理器将数据写入同一张表引发的数据不一致的问题
修复元数据管理出现 EtcdWorker 快照隔离被破坏的问题
修复因为 DDL sink 错误导致 changefeed 不能被停止的问题
修复一个 TiCDC Open Protocol 的问题:当一个事务中没有任何数据写入时候,TiCDC 产生一个空消息
修复 TiCDC 在处理无符号 TINYINT 类型时崩溃的问题
减小 gRPC 窗口来避免 Region 数量过多时触发内存溢出
修复因 TiCDC capture 过多 Regions 出现的 OOM 问题
修复将 mysql.TypeString, mysql.TypeVarString, mysql.TypeVarchar 等类型的数据编码为 JSON 时进程崩溃的问题
修复在创建新的 changefeed 时可能发生的内存泄漏问题
修复同步任务从一个表结构变更的 finish TS 开始时 DDL 处理失败的问题
修复 owner 在执行 DDL 语句时崩溃可能导致 DDL 任务丢失的问题
修复 SinkManager 中对 map 的不安全并发访问
上一篇:Steam商店网页增强插件
下一篇:XnviewMP图片浏览器