我们常用的SQL数据库一般是OLTP。那么数据库有哪些分类呢?
一般有3种:OLTP、OLAP与HTAP
如果上面这张图看懂了,下面可以不用看了。
下面简单介绍3种类型的数据库的定义、特点与差异。
联机事务处理过程 OLTP(On-Line Transcation Processing)。OLTP是传统的关系型数据库的主要应用,我们平时接触比较多的都属于这一类型。
OLTP支持大量并发用户定期添加和修改数据。系统可能有若干条DML语句需要并发执行,一般都是高可用的在线系统,Select 语句的执行量每秒几千甚至几万个。系统关心实时与并发。一般看其每秒执行的Transaction以及Execute SQL的数量。
所以,实时性是需要考虑的。逻辑读就尤为重要,逻辑读总量受到两方面因素影响:
逻辑读总量 = 单个语句的逻辑读(执行速度) * 执行次数
所以要么减少单个语句的逻辑读的时间,或者是减少它们的执行次数。才能提升效率。
瓶颈
最容易出现瓶颈的地方在于CPU和磁盘子系统。
优化
OLTP比较常用的设计与优化方式是cache技术与B-tree索引,应尽可能使用变量绑定技术来达到SQL重用,减少物理I/O 和重复的SQL 解析,从而极大的改善数据库的性能。
应用
典型的OLTP系统应用,一般都是实时性要求较高的,如电子商务,银行金融等。
联机事务分析处理 OLAP(On-Line Analytical Processing)。系统主要用来做数据分析。
瓶颈
对于OLAP系统,SQL 的优化非常重要,因为它的数据量很大,做全表扫描和索引对性能上来说差异是非常大的。动辄几亿条或者几十亿条数据进行聚合处理,这种海量的数据,全部放在内存中操作是很难的;同时也没有必要,因为这些数据快很少重用,缓存起来也没有实际意义,而且还会造成物理I/O相当大。 所以这种系统的瓶颈往往是磁盘I/O上面的。
优化
OLAP也不关心语句执行的数量级,因为正常每条语句都会执行很长时间,实时性已经没有意义。
所以,OLAP不关心缓存,关心的是从磁盘存取数据的速度,关心的是数据库语句的优化。
应用
OLAP是一个在线检索和分析系统,是数据仓库系统的主要应用。
OLTP的数据定期会通过ETL(提取,转换,加载)工具把数据同步导入OLAP系统中。这就涉及到数据源滞后的问题。 OLAP的数据滞后,导致分析出来的结果时效性不够,对决策支持类系统的要求不够。比如说,双11期间,用户购物的行为和推荐系统的推荐结果之间的时间差越短,越有可能提高销量。
HTAP需要解决的问题是:如何在OLTP单一数据系统上,提供OLAP操作。
优势也是比较明显的:
HTAP与OLAP和OLTP的关系如下,下图很好的阐述了OLTP与OLAP的合作使用:
(上面这张图来自于网络,比较懒,没有去重新画)
综上所述,OLTP用于存储和管理日常操作的数据,OLAP用于分析这些数据。
OLTP与OLAP对比:
好了,争取一篇文章讲明白一个知识点,足矣。