`
yanzhu2011
  • 浏览: 17787 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

数据库Cache

阅读更多
最近做性能测试研究了下数据库缓存。
Cache和Buffer是两个不同的概念,简单的说,Cache是加速“读”,而buffer是缓冲“写”,前者解决读的问题,保存从磁盘上读出的数据,后者是解决写的问题,保存即将要写入到磁盘上的数据。在很多情况下,这两个名词并没有严格区分,常常把读写混合类型称为buffer cache,本文后续的论述中,统一称为cache。
Oracle中的log buffer是解决redo写入的问题,而data buffer cache则解决data block的读写问题。对于Oracle来说,如果IO没有在SGA中命中,都会发生物理IO,Oracle并不关心底层存储的类型,可能是一套存储系统,可能是本地磁盘,可能是RAID 10,也可能是RAID 5,可能是文件系统,也可能是裸设备,或是ASM。总之,Oracle把底层的存储系统称为存储子系统。
在存储系统中,cache几乎无处不在(在后面的论述中,我们统称为cache),文件系统有cache,存储有cache,RAID控制器上有cache,磁盘上也有cache。为了提高性能,Oracle的一个写操作,很有可能写在存储的cache上就返回了,如果这时存储系统发生问题,Oracle如何来保证数据一致性的问题。
Oracle数据库最重要的特性是:Write ahead logging,在data block在写入前,必须保证首先写入redo log,在事务commit时,同时必须保证redo log被写入。Oracle为了保证数据的一致性,对于redo log采用了direct IO,Direct IO会跳过了OS上文件系统的cache这一层。但是,OS管不了存储这一层,虽然跳过了文件系统的cache,但是依然可能写在存储的cache上。
一般的存储都有cache,为了提高性能,写操作在cache上完成就返回给OS了,我们称这种写操作为write back,为了保证掉电时cache中的内容不会丢失,存储都有电池保护,这些电池可以供存储在掉电后工作一定时间,保证cache中的数据被刷入磁盘,不会丢失。不同于UPS,电池能够支撑的时间很短,一般都在30分钟以内,只要保证cache中的数据被写入就可以了。存储可以关闭写cache,这时所有的写操作必须写入到磁盘才返回,我们称这种写操作为write throuogh,当存储发现某些部件不正常时,存储会自动关闭写cache,这时写性能会下降。
RAID卡上也有cache,一般是256M,同样是通过电池来保护的,不同于存储的是,这个电池并不保证数据可以被写入到磁盘上,而是为cache供电以保护数据不丢失,一般可以支撑几天的时间。还有些RAID卡上有flash cache,掉电后可以将cache中的内容写入到flash cache中,保证数据不丢失。如果你的数据库没有存储,而是放在普通PC机的本地硬盘之上的,一定要确认主机中的RAID卡是否有电池,很多硬件提供商默认是不配置电池的。当然,RAID卡上的cache同样可以选择关闭。
磁盘上的cache,一般是16M-64M,很多存储厂商都明确表示,存储中磁盘的cache是禁用的,这也是可以理解的,为了保证数据可靠性,而存储本身又提供了非常大的cache,相比较而言,磁盘上的cache就不再那么重要。SCSI指令中有一个FUA(Force Unit Access)的参数,设置这个参数时,写操作必须在磁盘上完成才可以返回,相当于禁用了磁盘的写cache。虽然没有查证到资料,但是我个人认为一旦磁盘被接入到RAID控制器中,写cache就会被禁用,这也是为了数据可靠性的考虑,我相信存储厂商应该会考虑这个问题。
至此,我们可以看到Oracle的一个物理IO是经历了一系列的cache之后,最终被写入到磁盘上。cache虽然可以提高性能,但是也要考虑掉电保护的问题。关于数据的一致性,是由Oracle数据库,操作系统和存储子系统共同来保证的。
–EOF–

分享到:
评论

相关推荐

    java连接cache数据库说明,数据库驱动,cache可视化工具

    Java连接Cache数据库主要涉及到的是如何使用Java编程语言与Intersystems Cache数据库进行交互。Intersystems Cache是一款高性能、面向对象的数据库系统,广泛应用于医疗、金融等领域的复杂数据管理。在Java环境中,...

    cache数据库基础操作资料

    Caché数据库是一种由InterSystems公司开发的高性能数据库管理系统,被业界称为“后关系型”数据库,因为它结合了对象数据库、SQL访问和多维数据访问的特性,提供了一种高效且灵活的数据存储解决方案。Caché数据库...

    cache5数据库文档

    【Cache5数据库文档】主要涉及的是Cache5.2版本,这是一种专为大型医院设计的高度面向对象的数据库系统。Cache5数据库在医疗信息化领域广泛应用,以其高效、可靠和灵活的特点受到青睐。下面将详细阐述Cache5数据库的...

    Cache数据库日常管理和维护手册

    **Cache数据库日常管理和维护手册** Cache数据库是一种高性能、实时、对象-关系数据库系统,广泛应用于医疗、金融、电信等领域的复杂数据处理。本手册旨在提供关于Cache数据库的日常管理和维护的详细指南,帮助IT...

    Cache数据库学习资料

    Cache数据库是一种高性能、高可用性的数据库管理系统,常用于构建复杂的企业级应用,尤其在医疗、金融和电信等领域广泛应用。本文将深入探讨Cache数据库的核心概念、面向对象软件开发以及M语言的相关知识。 首先,...

    cache数据库SQL报错代码含义

    cache数据库SQL报错代码含义整理cache数据库SQL报错代码含义整理cache数据库SQL报错代码含义整理

    Cache数据库安装及编程相关资料

    Cache数据库是一种高性能、基于对象和关系的数据库系统,由InterSystems公司开发,广泛应用于医疗、金融、政府等领域的实时信息系统。这个压缩包包含了关于Cache数据库的安装和编程的相关资料,对于学习和理解Cache...

    Cache数据库创建Restful接口.pdf

    Cache数据库创建Restful接口详解 Cache数据库是一种高性能的NoSQL数据库,Restful接口是当前Web服务架构中最流行的一种交互方式。下面,我们将详细讲解Cache数据库创建Restful接口的过程和注意事项。 一、业务...

    Cache数据库入门基础

    **Cache数据库入门基础** Cache数据库,全称是InterSystems Cache,是一种高性能、高可用性的对象数据库系统,尤其在医疗行业中被广泛认可并采用。作为一款实时数据库,Cache提供了丰富的功能,包括事务处理、数据...

    Cache数据库表及其Global结构的查看.pdf

    从提供的文件内容来看,我们可以提取以下关于Cache数据库的知识点: 1. Cache数据库基础概念:Cache是InterSystems公司开发的一个高性能的对象数据库,适合处理大量数据和复杂数据结构,通常用于医疗、金融等行业的...

    odbc-连接cache数据库.rar

    在本场景中,我们关注的是如何使用C#通过ODBC连接到Cache数据库。Cache是由InterSystems公司开发的一款高性能、实时数据库系统,常用于医疗、金融和其他对数据处理速度要求极高的领域。 首先,你需要安装ODBC驱动,...

    Cache数据库编程和安装指南

    ### Cache数据库编程和安装指南知识点解析 #### 一、Cache数据库简介 **Cache数据库**是一种后关系型数据库,它融合了对象数据库、SQL数据库以及多维数据库的特点于一体,能够同时支持这三种数据库技术的访问方式...

    Cache数据库管理和维护CachéPPT教案.pptx

    Cache数据库管理和维护CachéPPT教案 Cache数据库管理和维护是IT行业中非常重要的一部分,本教案将详细介绍Cache数据库的管理和维护,包括Cache数据库的简要介绍、安装、配置、日志、备份、恢复、镜像服务等内容。 ...

    cache数据库资料1

    【Cache数据库】是一种高性能、高可用性的数据库管理系统,由InterSystems公司开发,广泛应用于医疗、金融、政府等领域的实时数据处理。Cache数据库以其强大的数据处理能力、高效的内存管理和丰富的编程接口而著称。...

    cache数据库培训提要

    **Cache数据库培训提要详解** **一、Cache数据库安装指南** Cache数据库的安装流程是学习其使用的基础。在安装过程中,需关注以下几点: 1. **安装名(实例名)**:安装时输入的安装名,缺省为“Cache”。若同一...

    连接InterSystems cache数据库jdbc或odbc驱动

    在IT领域,数据库连接是开发过程中的重要环节,特别是对于InterSystems Cache这样的高性能数据库系统。本文将详细讲解如何在Windows环境中使用JDBC(Java Database Connectivity)和ODBC(Open Database ...

    .NET连接Cache数据库.rar

    .NET连接Cache数据库 代码里面有两种方式连接数据库 1.通过官网找到的的InterSystems.Data.IRISClient.dll连接数据库,测试成功, 但是此类库需要 framework4.5 2.通过ODBC连接数据库 ODBC连接方式可看我博客文章: ...

    cache 数据库M语言

    下面详细介绍M语言和cache数据库的相关知识点: 1. MUMPS的概要: MUMPS(MULTICS通用事务处理系统)是一种多用户、多任务的数据库系统。其特点是: - 支持后台处理 - 适用于丰富的平台,包括PC环境 - 提供程序开发...

    thinkPHP5框架数据库连贯操作之cache()用法分析

    主要介绍了thinkPHP5框架数据库连贯操作之cache()用法,结合实例形式分析了thinkPHP5中缓存cache的应用场景及连贯操作中cache的设置、更新、删除等操作技巧,需要的朋友可以参考下

Global site tag (gtag.js) - Google Analytics