政府机关数据库

我来给大家出个I/O性能调优的题,请各路英雄发表高见

    在数据库的处理层次中,我们可以首先简单的将其划分为三个较大的层次:用户层、应用层、数据层。用户层:用户负责发出对数据的请求;应用层:提供满足用户要求的应用,对用户的请求向数据层传递,同样负责将数据层获得的数据处理后发送给用户;数据层:负责数据的处理,以及最...显示全部
    在数据库的处理层次中,我们可以首先简单的将其划分为三个较大的层次:用户层、应用层、数据层。用户层:用户负责发出对数据的请求;应用层:提供满足用户要求的应用,对用户的请求向数据层传递,同样负责将数据层获得的数据处理后发送给用户;数据层:负责数据的处理,以及最终的数据I/O。对于性能的问题,应用层和数据层都需要引起我们的关注,这两者都会对整个系统的性能产生较大的影响。

    假设最终用户在前台发出了一个查询交易,该交易其实就是一条select语句,那么这请求通过http/hptts发送到web server服务器,web server接受到该请求后再把该请求转发给Application server,在这个阶段我们要确保web server方面不存在瓶颈,否则它无法及时的把最终用户请求转发,会引起交易请求阻塞;Application server接受到请求后,通过应用程序业务逻辑来去数据库中检索记录,在这个阶段,我们要确保Application server不存在瓶颈,不会阻塞到数据库的请求,否则我们要进行Application server调优;那么这个请求到达DB server后,数据库优化器会为该条SQL语句通过语法检查、语义分析、权限检查、查询重写等来制定一个最优的访问计划(Acess plan),在该计划中决定用什么索引、用什么扫描方式、访问表的顺序和连接方式。假设优化器为该条SQL语句确定的是全表扫描方式,那么它首先判断数据库bufferpool中是否有它请求的数据,如果有,就直接从内存读取,这叫逻辑读;否则它要从硬盘读,那么要首先判断该表在哪个表空间中,如果该表空间采用的是裸设备(lv),那么它会去读逻辑卷(lv),逻辑卷(lv)是在逻辑卷管理器(lvm)之上的,而lvm又在操作系统之上;在操作系统和存储之间往往还会有一个存储的多路径通道软件(例如:AIX上的MP I/O Driver、EMC 的power path、日立的HiCommand Dynamic Link Manager (HDLM)等)可以实现动态负载均衡和流量控制;在多路径通道软件之下是存储供应商的设备驱动(Device Driver);主机服务器通过HBA卡和光纤交换机连接,光纤交换机和存储的前端连接,存储的前端再通过存储的cache连接后端的物理磁盘。这就是一个磁盘I/O的处理过程。
   
    在上面的I/O流动中,每个环节都有可能出现性能问题,希望大家谈谈在出现性能问题时,如何快速的定位在哪个环节引起性能瓶颈。 [ 本帖最后由 finix 于 2008-11-4 11:44 编辑 ]收起
参与27

查看其它 26 个回答wlovely的回答

wlovelywlovely数据库管理员无谓
不错
能源采矿 · 2011-03-06
浏览977

回答者

wlovely
数据库管理员无谓

wlovely 最近回答过的问题

回答状态

  • 发布时间:2011-03-06
  • 关注会员:0 人
  • 回答浏览:977
  • X社区推广