{
    "componentChunkName": "component---src-templates-blog-blog-detail-tsx",
    "path": "/blog/tidb-2.0-ga-release",
    "result": {"pageContext":{"blog":{"id":"Blogs_13","title":"TiDB 2.0 GA Release","tags":["TiDB","Release"],"category":{"name":"公司动态"},"summary":"2018 年 4 月 27 日，TiDB 发布 2.0 GA 版。相比 1.0 版本，对 MySQL 兼容性、系统稳定性、优化器和执行器做了很多改进。","body":"2018 年 4 月 27 日，TiDB 发布 2.0 GA 版。相比 1.0 版本，对 MySQL 兼容性、系统稳定性、优化器和执行器做了很多改进。\n\n\n## TiDB\n\n* SQL 优化器\n\n\t* 精简统计信息数据结构，减小内存占用\n\n\t* 加快进程启动时加载统计信息速度\n\n\t* 支持统计信息动态更新 [experimental]\n\n\t* 优化代价模型，对代价估算更精准\n\n\t* 使用 `Count-Min Sketch` 更精确地估算点查的代价\n\n\t* 支持分析更复杂的条件，尽可能充分的使用索引\n\n\t* 支持通过 `STRAIGHT_JOIN` 语法手动指定 Join 顺序\n\n\t* `GROUP BY`子句为空时使用 Stream Aggregation 算子，提升性能\n\n\t* 支持使用索引计算 `Max/Min` 函数\n\n\t* 优化关联子查询处理算法，支持将更多类型的关联子查询解关联并转化成 `Left Outer Join`\n\n\t* 扩大 `IndexLookupJoin` 的使用范围，索引前缀匹配的场景也可以使用该算法\n\n\n* SQL 执行引擎\n\n\t* 使用 Chunk 结构重构所有执行器算子，提升分析型语句执行性能，减少内存占用，显著提升 TPC-H 结果\n\n\t* 支持 Streaming Aggregation 算子下推\n\n\t* 优化 `Insert Into Ignore` 语句性能，提升 10 倍以上\n\n\t* 优化 `Insert On Duplicate Key Update` 语句性能，提升 10 倍以上\n\n\t* 下推更多的数据类型和函数到 TiKV 计算\n\n\t* 优化 `Load Data` 性能，提升 10 倍以上\n\n\t* 支持对物理算子内存使用进行统计，通过配置文件以及系统变量指定超过阈值后的处理行为\n\n\t* 支持限制单条 SQL 语句使用内存的大小，减少程序 OOM 风险\n\n\t* 支持在 CRUD 操作中使用隐式的行 ID\n\n\t* 提升点查性能\n\n* Server\n\n\t* 支持 Proxy Protocol\n\n\t* 添加大量监控项, 优化日志\n\n\t* 支持配置文件的合法性检测\n\n\t* 支持 HTTP API 获取 TiDB 参数信息\n\n\t* 使用 Batch 方式 Resolve Lock，提升垃圾回收速度\n\n\t* 支持多线程垃圾回收\n\n\t* 支持 TLS\n\n* 兼容性\n\n\t* 支持更多 MySQL 语法\n\n\t* 支持配置文件修改 `lower_case_table_names` 系统变量，用于支持 OGG 数据同步工具\n\n\t* 提升对 Navicat 的兼容性\n\n\t* 在 `Information_Schema` 中支持显示建表时间\n\n\t* 修复部分函数/表达式返回类型和 MySQL 不同的问题\n\n\t* 提升对 JDBC 兼容性\n\n\t* 支持更多的 `SQL_MODE`\n\n* DDL\n\n\t* 优化 `Add Index` 的执行速度，部分场景下速度大幅度提升\n\n\t* `Add Index` 操作变更为低优先级，降低对线上业务影响\n\n\t* `Admin Show DDL Jobs` 输出更详细的 DDL 任务状态信息\n\n\t* 支持 `Admin Show DDL Job Queries JobID` 查询当前正在运行的 DDL 任务的原始语句\n\n\t* 支持 `Admin Recover Index` 命令，用于灾难恢复情况下修复索引数据\n支持通过 `Alter` 语句修改 Table Options\n\n## PD\n\n* 增加 `Region Merge` 支持，合并数据删除后产生的空 Region [experimental]\n\n* 增加 `Raft Learner` 支持 [experimental]\n\n* 调度器优化\n\n\t* 调度器适应不同的 Region size\n\n\t* 提升 TiKV 宕机时数据恢复的优先级和恢复速度\n\n\t* 提升下线 TiKV 节点搬迁数据的速度\n\n\t* 优化 TiKV 节点空间不足时的调度策略，尽可能防止空间不足时磁盘被写满\n\n\t* 提升 balance-leader scheduler 的调度效率\n\n\t* 减少 balance-region scheduler 调度开销\n\n\t* 优化 hot-region scheduler 的执行效率\n\n* 运维接口及配置\n\n\t* 增加 TLS 支持\n\n\t* 支持设置 PD leader 优先级\n\n\t* 支持基于 label 配置属性\n\n\t* 支持配置特定 label 的节点不调度 Region leader\n\n\t* 支持手动 Split Region，可用于处理单 Region 热点的问题\n\n\t* 支持打散指定 Region，用于某些情况下手动调整热点 Region 分布\n\n\t* 增加配置参数检查规则，完善配置项的合法性较验\n\n* 调试接口\n\t\n\t* 增加 `Drop Region` 调试接口\n\n\t* 增加枚举各个 PD health 状态的接口\n\n* 统计相关\n\n\t* 添加异常 Region 的统计\n\n\t* 添加 Region 隔离级别的统计\n\n\t* 添加调度相关 metrics\n\n* 性能优化\n\n\t* PD leader 尽量与 etcd leader 保持同步，提升写入性能\n\n\t* 优化 Region heartbeat 性能，现可支持超过 100 万 Region\n\n## TiKV\n\n* 功能\n\t\n\t* 保护关键配置，防止错误修改\n\n\t* 支持 `Region Merge` [experimental]\n\n\t* 添加 `Raw DeleteRange` API\n\n\t* 添加 `GetMetric` API\n\n\t* 添加 `Raw Batch Put`，`Raw Batch Get`，`Raw Batch Delete` 和 `Raw Batch Scan`\n\n\t* 给 Raw KV API 增加 Column Family 参数，能对特定 Column Family 进行操作\n\n\t* Coprocessor 支持 streaming 模式，支持 streaming 聚合\n\n\t* 支持配置 Coprocessor 请求的超时时间\n\n\t* 心跳包携带时间戳\n\n\t* 支持在线修改 RocksDB 的一些参数，包括 `block-cache-size` 大小等\n\n\t* 支持配置 Coprocessor 遇到某些错误时的行为\n\n\t* 支持以导数据模式启动，减少导数据过程中的写放大\n\n\t* 支持手动对 region 进行对半 split\n\n\t* 完善数据修复工具 tikv-ctl\n\n\t* Coprocessor 返回更多的统计信息，以便指导 TiDB 的行为\n\n\t* 支持 ImportSST API，可以用于 SST 文件导入 [experimental]\n\n\t* 新增 TiKV Importer 二进制，与 TiDB Lightning 集成用于快速导入数据 [experimental]\n\n* 性能\n\n\t* 使用 ReadPool 优化读性能，`raw_get/get/batch_get` 提升 30%\n\n\t* 提升 metrics 的性能\n\n\t* Raft snapshot 处理完之后立即通知 PD，加快调度速度\n\n\t* 解决 RocksDB 刷盘导致性能抖动问题\n\n\t* 提升在数据删除之后的空间回收\n\n\t* 加速启动过程中的垃圾清理过程\n\n\t* 使用 `DeleteFilesInRanges` 减少副本迁移时 I/O 开销\n\n* 稳定性\n\n\t* 解决在 PD leader 发送切换的情况下 gRPC call 不返回问题\n\n\t* 解决由于 snapshot 导致下线节点慢的问题\n\n\t* 限制搬移副本临时占用的空间大小\n\n\t* 如果有 Region 长时间没有 Leader，进行上报\n\n\t* 根据 compaction 事件及时更新统计的 Region size\n\n\t* 限制单次 scan lock 请求的扫描的数据量，防止超时\n\n\t* 限制接收 snapshot 过程中的内存占用，防止 OOM\n\n\t* 提升 CI test 的速度\n\n\t* 解决由于 snapshot 太多导致的 OOM 问题\n\n\t* 配置 gRPC 的 `keepalive` 参数\n\n\t* 修复 Region 增多容易 OOM 的问题\n\n\n## TiSpark\n\nTiSpark 使用独立的版本号，现为 1.0 GA。TiSpark 1.0 版本组件提供了针对 TiDB 上的数据使用 Apache Spark 进行分布式计算的能力。\n\n* 提供了针对 TiKV 读取的 gRPC 通信框架\n\n* 提供了对 TiKV 组件数据的和通信协议部分的编码解码\n\n* 提供了计算下推功能，包含\n\n\t* 聚合下推\n\n\t* 谓词下推\n\n\t* TopN 下推\n\n\t* Limit 下推\n\n* 提供了索引相关支持\n\n\t* 谓词转化聚簇索引范围\n\n\t* 谓词转化次级索引\n\n\t* Index Only 查询优化\n\n\t* 运行时索引退化扫表优化\n\n* 提供了基于代价优化\n\n\t* 统计信息支持\n\n\t* 索引选择\n\n\t* 广播表代价估算\n\n* 多种 Spark Interface 的支持\n\n\t* Spark Shell 支持\n\n\t* ThriftServer/JDBC 支持\n\n\t* Spark-SQL 交互支持\n\n\t* PySpark Shell 支持\n\n\t* SparkR 支持\n\n\n**如今，在社区和 PingCAP 技术团队的共同努力下，TiDB 2.0 GA 版已发布，在此感谢社区小伙伴们长久以来的参与和贡献。**\n\n\n\n> 作为世界级开源的分布式关系型数据库，TiDB 灵感来自于 Google Spanner/F1，具备『分布式强一致性事务、在线弹性水平扩展、故障自恢复的高可用、跨数据中心多活』等核心特性。TiDB 于 2015 年 5 月在 GitHub 创建，同年 12 月发布 Alpha 版本，而后于 2016 年 6 月发布 Beta 版，12 月发布 RC1 版， 2017 年 3 月发布 RC2 版，6 月发布 RC3 版，8 月发布 RC4 版，10 月发版 TiDB 1.0，并在 2018 年 3 月发版 2.0 RC1。","date":"2018-04-27","author":"PingCAP","fillInMethod":"writeDirectly","customUrl":"tidb-2.0-ga-release","file":null,"relatedBlogs":[]}}},
    "staticQueryHashes": ["1327623483","1820662718","3081853212","3430003955","3649515864","4265596160","63159454"]}