TiDB 开源分布式关系型数据库
这套系统可以很好的解决: 行存储和列存储的取舍问题; OLTP 负载和 OLAP 负载的资源隔离问题; 快速批量写与事务型写操作混合模式的问题; Adhoc 查询与 Adhoc 混合负载及批处理作业共存的问题; 。 数据 0ffload 到数据仓库引起的不一致风险。 Sattayer Te/TEpark 能、可用性和业务多活问题。 分布式数据库实践 新一代财富管理平台是支撑光大银行理财公司运营的核心系统,提供理财业务的全流程管理。依托私有 云基础设施与平台 4.0 开发框架,光大银行定制了分布式批处理方案,设计目标是余额宝每小时理财交易 2000 万笔,零钱通单日 5000 万笔,同时还要满足未来 3-5 年业务发展和接入更多互联网代销渠道需求。 光大银行在同城两数据中心构建 TiDB 双活集群,采用 两地三中心方案部署 TiDB 集群搭建实时数据中 台,构建 HTAP 解决方案,实时地对电网运行数据进行统计分析。 TiDB 提供 HTAP AlL-in-One 的解决方案,不需要建设流处理、批处理、查询系统等一系列复杂的技术 栈,大幅降低了电力企业数据中台的建设与维护成本。TiDB 实现了处理与存储能力的弹性扩容,整体 性能表现很好地满足了业务要求,2019 年 10 月至今系统运行平稳,数据量为90 码力 | 58 页 | 9.51 MB | 1 年前3TiDB v8.4 中文手册
确保数据在存储和传输过程中的安全性。 2.2.1 功能详情 2.2.1.1 性能 • 新增 TSO 请求的并行批处理模式,降低获取 TSO 的延迟 #54960 #8432 @MyonKeminta 在 v8.4.0 之前,TiDB 向 PD 请求TSO 时会将一段时间内的请求汇总起来并以串行的方式进行批处理,以减 少 RPC (Remote Procedure Call) 请求数量,从而降低 PD 负载。对于延迟敏感的场景,这种串行模式的性能 负载。对于延迟敏感的场景,这种串行模式的性能 并不理想。 在 v8.4.0 中,TiDB 新增 TSO 请求的并行批处理模式,并提供不同的并发能力。并行模式可以降低获取 TSO 的延迟,但可能会增加 PD 的负载。你可以通过tidb_tso_client_rpc_mode 变量设定获取 TSO 的 RPC 模 式。 更多信息,请参考用户文档。 • 优化 TiDB Hash Join 算子的执行效率(实验特性)#55153 单字段主键表的分页批处理 常规的分页更新 SQL 一般使用主键或者唯一索引进行排序,再配合 LIMIT 语法中的 offset,按固定行数拆分 页面。然后把页面包装进独立的事务中,从而实现灵活的分页更新。但是,劣势也很明显:由于需要对主键 或者唯一索引进行排序,越靠后的页面参与排序的行数就会越多,尤其当批量处理涉及的数据体量较大时, 可能会占用过多计算资源。 下面将介绍一种更为高效的分页批处理方案: 使用0 码力 | 5072 页 | 104.05 MB | 9 月前3TiDB v8.5 中文手册
确保数据在存储和传输过程中的安全性。 2.2.1 功能详情 2.2.1.1 性能 • 新增 TSO 请求的并行批处理模式,降低获取 TSO 的延迟 #54960 #8432 @MyonKeminta 在 v8.4.0 之前,TiDB 向 PD 请求TSO 时会将一段时间内的请求汇总起来并以串行的方式进行批处理,以减 少 RPC (Remote Procedure Call) 请求数量,从而降低 PD 负载。对于延迟敏感的场景,这种串行模式的性能 负载。对于延迟敏感的场景,这种串行模式的性能 并不理想。 在 v8.4.0 中,TiDB 新增 TSO 请求的并行批处理模式,并提供不同的并发能力。并行模式可以降低获取 TSO 的延迟,但可能会增加 PD 的负载。你可以通过tidb_tso_client_rpc_mode 变量设定获取 TSO 的 RPC 模 式。 更多信息,请参考用户文档。 • 优化 TiDB Hash Join 算子的执行效率(实验特性)#55153 单字段主键表的分页批处理 常规的分页更新 SQL 一般使用主键或者唯一索引进行排序,再配合 LIMIT 语法中的 offset,按固定行数拆分 页面。然后把页面包装进独立的事务中,从而实现灵活的分页更新。但是,劣势也很明显:由于需要对主键 或者唯一索引进行排序,越靠后的页面参与排序的行数就会越多,尤其当批量处理涉及的数据体量较大时, 可能会占用过多计算资源。 下面将介绍一种更为高效的分页批处理方案: 使用0 码力 | 5095 页 | 104.54 MB | 9 月前3TiDB v6.1 中文手册
单字段主键表的分页批处理 常规的分页更新 SQL 一般使用主键或者唯一索引进行排序,再配合 LIMIT 语法中的 offset,按固定行数拆分 页面。然后把页面包装进独立的事务中,从而实现灵活的分页更新。但是,劣势也很明显:由于需要对主键 或者唯一索引进行排序,越靠后的页面参与排序的行数就会越多,尤其当批量处理涉及的数据体量较大时, 可能会占用过多计算资源。 下面将介绍一种更为高效的分页批处理方案: 使用 使用 SQL 实现分页批处理,可以按照如下步骤进行: 首先将数据按照主键排序,然后调用窗口函数 row_number() 为每一行数据生成行号,接着调用聚合函数按照 设置好的页面大小对行号进行分组,最终计算出每页的最小值和最大值。 SELECT floor((t.row_num - 1) / 1000) + 1 AS page_num, min(t.id) AS start_key, max(t (SQLException e) { e.printStackTrace(); } }); 改进方案由于规避了频繁的数据排序操作造成的性能损耗,显著改善了批量处理的效率。 4.7.4.3 复合主键表的分页批处理 4.7.4.3.1 非聚簇索引表 对于非聚簇索引表(又被称为 “非索引组织表”)而言,可以使用隐藏字段 _tidb_rowid 作为分页的 key,分 页的方法与单列主键表中所介绍的方法相同。0 码力 | 3572 页 | 84.36 MB | 1 年前3TiDB v8.0 中文手册
TiDB 兼容该场景,数据可以正常迁移到下游。#10741 @okJiang – TiDB Lightning * 在逻辑导入模式下,支持使用logical-import-batch-rows 配置批处理的最大行数 #46607 @kennytm * 当 TiFlash 的导入空间不足时,TiDB Lightning 会报错 #50324 @okJiang 2.2.5 错误修复 • TiDB 单字段主键表的分页批处理 常规的分页更新 SQL 一般使用主键或者唯一索引进行排序,再配合 LIMIT 语法中的 offset,按固定行数拆分 页面。然后把页面包装进独立的事务中,从而实现灵活的分页更新。但是,劣势也很明显:由于需要对主键 或者唯一索引进行排序,越靠后的页面参与排序的行数就会越多,尤其当批量处理涉及的数据体量较大时, 可能会占用过多计算资源。 下面将介绍一种更为高效的分页批处理方案: 使用 使用 SQL 实现分页批处理,可以按照如下步骤进行: 首先将数据按照主键排序,然后调用窗口函数 row_number() 为每一行数据生成行号,接着调用聚合函数按照 设置好的页面大小对行号进行分组,最终计算出每页的最小值和最大值。 SELECT floor((t.row_num - 1) / 1000) + 1 AS page_num, min(t.id) AS start_key, max(t0 码力 | 4805 页 | 101.28 MB | 1 年前3TiDB v7.1 中文手册
单字段主键表的分页批处理 常规的分页更新 SQL 一般使用主键或者唯一索引进行排序,再配合 LIMIT 语法中的 offset,按固定行数拆分 页面。然后把页面包装进独立的事务中,从而实现灵活的分页更新。但是,劣势也很明显:由于需要对主键 或者唯一索引进行排序,越靠后的页面参与排序的行数就会越多,尤其当批量处理涉及的数据体量较大时, 可能会占用过多计算资源。 下面将介绍一种更为高效的分页批处理方案: 使用 使用 SQL 实现分页批处理,可以按照如下步骤进行: 首先将数据按照主键排序,然后调用窗口函数 row_number() 为每一行数据生成行号,接着调用聚合函数按照 设置好的页面大小对行号进行分组,最终计算出每页的最小值和最大值。 SELECT floor((t.row_num - 1) / 1000) + 1 AS page_num, min(t.id) AS start_key, max(t (SQLException e) { e.printStackTrace(); } }); 改进方案由于规避了频繁的数据排序操作造成的性能损耗,显著改善了批量处理的效率。 4.7.4.3 复合主键表的分页批处理 4.7.4.3.1 非聚簇索引表 对于非聚簇索引表(又被称为 “非索引组织表”)而言,可以使用隐藏字段 _tidb_rowid 作为分页的 key,分 页的方法与单列主键表中所介绍的方法相同。0 码力 | 4369 页 | 98.92 MB | 1 年前3TiDB v6.5 中文手册
单字段主键表的分页批处理 常规的分页更新 SQL 一般使用主键或者唯一索引进行排序,再配合 LIMIT 语法中的 offset,按固定行数拆分 页面。然后把页面包装进独立的事务中,从而实现灵活的分页更新。但是,劣势也很明显:由于需要对主键 或者唯一索引进行排序,越靠后的页面参与排序的行数就会越多,尤其当批量处理涉及的数据体量较大时, 可能会占用过多计算资源。 下面将介绍一种更为高效的分页批处理方案: 使用 使用 SQL 实现分页批处理,可以按照如下步骤进行: 首先将数据按照主键排序,然后调用窗口函数 row_number() 为每一行数据生成行号,接着调用聚合函数按照 设置好的页面大小对行号进行分组,最终计算出每页的最小值和最大值。 SELECT floor((t.row_num - 1) / 1000) + 1 AS page_num, min(t.id) AS start_key, max(t (SQLException e) { e.printStackTrace(); } }); 改进方案由于规避了频繁的数据排序操作造成的性能损耗,显著改善了批量处理的效率。 4.7.4.3 复合主键表的分页批处理 4.7.4.3.1 非聚簇索引表 对于非聚簇索引表(又被称为 “非索引组织表”)而言,可以使用隐藏字段 _tidb_rowid 作为分页的 key,分 页的方法与单列主键表中所介绍的方法相同。0 码力 | 4049 页 | 94.00 MB | 1 年前3TiDB v8.1 中文手册
单字段主键表的分页批处理 常规的分页更新 SQL 一般使用主键或者唯一索引进行排序,再配合 LIMIT 语法中的 offset,按固定行数拆分 页面。然后把页面包装进独立的事务中,从而实现灵活的分页更新。但是,劣势也很明显:由于需要对主键 或者唯一索引进行排序,越靠后的页面参与排序的行数就会越多,尤其当批量处理涉及的数据体量较大时, 可能会占用过多计算资源。 下面将介绍一种更为高效的分页批处理方案: 使用 使用 SQL 实现分页批处理,可以按照如下步骤进行: 首先将数据按照主键排序,然后调用窗口函数 row_number() 为每一行数据生成行号,接着调用聚合函数按照 设置好的页面大小对行号进行分组,最终计算出每页的最小值和最大值。 SELECT floor((t.row_num - 1) / 1000) + 1 AS page_num, min(t.id) AS start_key, max(t (SQLException e) { e.printStackTrace(); } }); 改进方案由于规避了频繁的数据排序操作造成的性能损耗,显著改善了批量处理的效率。 4.7.4.3 复合主键表的分页批处理 4.7.4.3.1 非聚簇索引表 对于非聚簇索引表(又被称为 “非索引组织表”)而言,可以使用隐藏字段 _tidb_rowid 作为分页的 key,分 页的方法与单列主键表中所介绍的方法相同。0 码力 | 4807 页 | 101.31 MB | 1 年前3TiDB v7.5 中文手册
单字段主键表的分页批处理 常规的分页更新 SQL 一般使用主键或者唯一索引进行排序,再配合 LIMIT 语法中的 offset,按固定行数拆分 页面。然后把页面包装进独立的事务中,从而实现灵活的分页更新。但是,劣势也很明显:由于需要对主键 或者唯一索引进行排序,越靠后的页面参与排序的行数就会越多,尤其当批量处理涉及的数据体量较大时, 可能会占用过多计算资源。 下面将介绍一种更为高效的分页批处理方案: 使用 使用 SQL 实现分页批处理,可以按照如下步骤进行: 首先将数据按照主键排序,然后调用窗口函数 row_number() 为每一行数据生成行号,接着调用聚合函数按照 设置好的页面大小对行号进行分组,最终计算出每页的最小值和最大值。 SELECT floor((t.row_num - 1) / 1000) + 1 AS page_num, min(t.id) AS start_key, max(t (SQLException e) { e.printStackTrace(); } }); 改进方案由于规避了频繁的数据排序操作造成的性能损耗,显著改善了批量处理的效率。 4.7.4.3 复合主键表的分页批处理 4.7.4.3.1 非聚簇索引表 对于非聚簇索引表(又被称为 “非索引组织表”)而言,可以使用隐藏字段 _tidb_rowid 作为分页的 key,分 页的方法与单列主键表中所介绍的方法相同。0 码力 | 4590 页 | 100.91 MB | 1 年前3TiDB v7.6 中文手册
单字段主键表的分页批处理 常规的分页更新 SQL 一般使用主键或者唯一索引进行排序,再配合 LIMIT 语法中的 offset,按固定行数拆分 页面。然后把页面包装进独立的事务中,从而实现灵活的分页更新。但是,劣势也很明显:由于需要对主键 或者唯一索引进行排序,越靠后的页面参与排序的行数就会越多,尤其当批量处理涉及的数据体量较大时, 可能会占用过多计算资源。 下面将介绍一种更为高效的分页批处理方案: 使用 使用 SQL 实现分页批处理,可以按照如下步骤进行: 首先将数据按照主键排序,然后调用窗口函数 row_number() 为每一行数据生成行号,接着调用聚合函数按照 设置好的页面大小对行号进行分组,最终计算出每页的最小值和最大值。 SELECT floor((t.row_num - 1) / 1000) + 1 AS page_num, min(t.id) AS start_key, max(t (SQLException e) { e.printStackTrace(); } }); 改进方案由于规避了频繁的数据排序操作造成的性能损耗,显著改善了批量处理的效率。 4.7.4.3 复合主键表的分页批处理 4.7.4.3.1 非聚簇索引表 对于非聚簇索引表(又被称为 “非索引组织表”)而言,可以使用隐藏字段 _tidb_rowid 作为分页的 key,分 页的方法与单列主键表中所介绍的方法相同。0 码力 | 4666 页 | 101.24 MB | 1 年前3
共 15 条
- 1
- 2