存储 频道

武新:海量数据环境下如何提升I/O效率

  【IT168 应用】性能瓶颈一直是数据库系统所面临的问题,数据库性能瓶颈主要体现在I/O效率、索引怪圈以及性能与优化的瓶颈。一般而言,解决这三大性能瓶颈的手段主要有两个,即硬件改进与软件优化。

武新:海量数据环境下如何提升I/O效率
南大通用数据技术有限公司武新

  所谓的硬件改进是一种被动的优化手段,主要是通过提升硬件来对系统进行扩容和优化。之所说这种方式较为被动,主要在于这需要提供巨大的成本,而且扩容的效果是有限的,不可能无限扩容,不是数据库性能优化的根本之道。更为主要的是,体现不出DBA的价值,DBA首先应该想到的是利用主动的方式去对数据库性能进行优化。

  对数据库优化的方式主要分为三个手段,如修改数据模型、修改SQL、影响CBO,以产生有效的SQL执行计划;另外也可适用索引、MV等工具;第三种方式则是使用并行,充分利用SMP的特征。不管采用何种方式对数据库性能进行优化,我们要明确的是,数据库性能优化的核心思想是提升查询SQL的I/O效率。

  另外我们还需要明白有关I/O的两个定义,即I/O速度与I/O效率。I/O速度是I/O数据量与时间的比值,其单位是MB/s;而I/O效率是有效数据与实际I/O数据量的比值,其结果是一个百分比值。并且I/O速度与I/O效率并没有相关性,通过硬件扩容只能提升I/O性能,并不能提高I/O效率。I/O效率是衡量不同数据库面对海量数据统计、分析性能差异最关键的指标、也是现代数据库研发最核心的问题之一。

  数据库性能最核心的问题之一是I/O效率低下,解决这个问题主要有以下几个方式:1、使用不同索引定位需要的数据;2、产生高效的SQL执行计划;3、提升每次I/O包含的有效数据量;4、对数据进行预计算(MV);5、使用分区技术、压缩技术。

  数据库性能最核心的问题之二是传统索引带来的矛盾。使用索引的最大作用是提升I/O效率。但其产生的问题也不少,如对应用不透明、维护代价极高以及需要人工优化等等。不使用索引的好处显而易见,无需维护,并且数据入库速度快,但查询I/O效率低、导致性能低下。这是使用或不适用传统索引所带来的矛盾,不管用还是不用,都会给数据库性能带来一定的影响。因此海量环境下的数据库分析需要一种新的索引方式,在此,南大通用数据库公司的武新给我们介绍了一种新的索引方式,即在GBase 8a中所用到的列存储+粗粒度索引的方式。

武新:海量数据环境下如何提升I/O效率

  这种方式主要有一下几个特点,粗粒度的扩展性很高,几乎不会对数据入库性能造成影响;其次,局部性实现高效的数据边入库边查询、统计,数据入库速度不随数据量增加而降低,;并且,全字段索引使得不需要再手工建立索引。即席查询,R-OLAP不再是无法优化的问题,复杂查询自动优化效果明显,基于知识理论的CBO效率大大提升。

0
相关文章