快速了解:数据库的分类,OLTP、OLAP与HTAP

本文介绍了数据库的三种主要类型:OLTP(联机事务处理)、OLAP(联机分析处理)和HTAP(混合事务/分析处理)。OLTP关注并发事务处理,适用于实时性要求高的系统,如电子商务和金融。OLAP专注于数据分析,适合大数据量的聚合处理,对磁盘I/O有较高要求。HTAP旨在同一系统中实现OLTP和OLAP的功能,提高决策支持系统的时效性。

争取一篇文章能讲明白一个知识点。

 

一、概述

我们常用的SQL数据库一般是OLTP。那么数据库有哪些分类呢?

一般有3种:OLTP、OLAP与HTAP

如果上面这张图看懂了,下面可以不用看了。

 

二、详细描述

下面简单介绍3种类型的数据库的定义、特点与差异。

 

2.1 OLTP

联机事务处理过程 OLTP(On-Line Transcation Processing)。OLTP是传统的关系型数据库的主要应用,我们平时接触比较多的都属于这一类型。

OLTP支持大量并发用户定期添加和修改数据。系统可能有若干条DML语句需要并发执行,一般都是高可用的在线系统,Select 语句的执行量每秒几千甚至几万个。系统关心实时与并发。一般看其每秒执行的Transaction以及Execute SQL的数量。

所以,实时性是需要考虑的。逻辑读就尤为重要,逻辑读总量受到两方面因素影响:

逻辑读总量 = 单个语句的逻辑读(执行速度)  *  执行次数

所以要么减少单个语句的逻辑读的时间,或者是减少它们的执行次数。才能提升效率。

 

瓶颈

最容易出现瓶颈的地方在于CPU和磁盘子系统。

<think>嗯,用户想知道为什么TiDB被认为是HTAP数据库,还有代码演示。首先,我需要先理解HTAP的定义,然后结合TiDB的架构来解释。HTAP是混合事务和分析处理,意味着同时支持OLTPOLAP。TiDB的文档里提到,他们通过TiKV处理OLTP,TiFlash处理OLAP,这样两者结合就实现了HTAP。 接下来,我需要回忆TiDB的架构。引用[3]说TiDB是分布式的NewSQL数据库,有分布式事务和强一致性。体系结构分为TIDB Server、TiKV和TiFlash。TiKV是用Raft协议做行式存储,适合事务处理;TiFlash是列式存储,通过异步复制TiKV的数据,这样分析查询不会影响事务性能。引用[4]提到他们使用类似的方法,成为HTAP的事实标准,但需要迁移到NewSQL可能有问题,而TiDB可能解决了兼容性? 然后,用户想要代码演示。可能需要展示如何同时进行事务和查询。比如,在事务中插入数据,然后用TiFlash加速分析查询。需要确保在查询时指定引擎,或者TiDB自动选择。可能要用到SQL语句,比如SET会话变量或者使用注释强制引擎。 还要注意引用的问题。用户提供的引用[1]到[4]中,特别是引用[2]提到评估OLTPOLAP,比较TiKV和TiFlash的性能,以及日志复制的延迟。这可能涉及到原理部分,说明TiDB如何协调两者。 可能的问题点:用户可能不太清楚TiFlash如何同步数据。需要解释异步复制和Raft learner机制,确保数据分析不影响事务处理。另外,代码示例要简单明了,展示OLTPOLAP的共存。 需要验证代码是否正确,比如创建表时指定TiFlash的副本,然后插入数据,查询时使用不同的引擎。还要确保示例中的SQL语句正确,比如FORCE_INDEX或者注释语法。 最后,生成相关问题,可能需要涉及HTAP的优势、性能调优、其他系统比较等,参考用户之前的例子。</think>### TiDB HTAP 原理及代码演示 #### 1. TiDB 的 HTAP 实现原理 TiDB 实现 HTAP 的核心在于其 **双存储引擎架构**: - **TiKV(行式存储)**:基于 Raft 协议实现分布式强一致性,用于高并发 OLTP 事务处理,例如订单交易、数据写入等[^3]。 - **TiFlash(列式存储)**:作为 TiKV 的列存扩展,通过 **异步复制 Raft 日志** 实现实时数据分析能力,避免 OLAP 查询对 OLTP 性能的影响[^4]。 两者的协同工作通过 **智能路由机制** 实现: - OLTP 请求自动路由到 TiKV。 - OLAP 请求根据场景选择 TiKV(低延迟轻量分析)或 TiFlash(复杂聚合分析)[^2]。 #### 2. 代码演示:HTAP 场景示例 ##### 步骤1:创建表并同步到 TiFlash ```sql -- 创建 OLTP 表(存储于 TiKV) CREATE TABLE orders ( order_id INT PRIMARY KEY, user_id INT, amount DECIMAL(10,2), create_time TIMESTAMP ); -- 为 TiFlash 添加副本 ALTER TABLE orders SET TIFLASH REPLICA 1; ``` ##### 步骤2:模拟 OLTP 事务写入 ```sql -- 插入事务数据(写入 TiKV) BEGIN; INSERT INTO orders VALUES (1, 1001, 150.50, NOW()); INSERT INTO orders VALUES (2, 1002, 300.00, NOW()); COMMIT; ``` ##### 步骤3:执行 OLAP 分析查询(TiFlash 加速) ```sql -- 自动路由到 TiFlash(列存优化聚合) SELECT user_id, SUM(amount) AS total_spent FROM orders WHERE create_time >= '2023-01-01' GROUP BY user_id; ``` ##### 步骤4:强制指定存储引擎(高级控制) ```sql -- 通过注释指定使用 TiKV(行存) SELECT /*+ READ_FROM_STORAGE(TIKV[orders]) */ * FROM orders WHERE order_id = 1; -- 通过注释指定使用 TiFlash(列存) SELECT /*+ READ_FROM_STORAGE(TIFLASH[orders]) */ user_id, AVG(amount) FROM orders GROUP BY user_id; ``` #### 3. 关键优势 1. **资源隔离**:TiKV TiFlash 物理隔离,避免 OLAP 负载影响 OLTP 性能。 2. **数据一致性**:通过 Raft Learner 实现异步复制,保证分析结果基于最新事务状态。 3. **自动路由**:优化器根据查询复杂度选择存储引擎,无需手动干预。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值