Informix总结笔记-性能/监控/管理(转载)

上一篇 / 下一篇  2013-03-12 17:19:14 / 个人分类:技术linux等

由于之前未曾接触informix数据库产品,此次项目算是学习一下,如果你之前对于其它的数据库产品oracle、db2体系结构认识和使用有较多经验,你会发现你来学习informix实际上也是很快的,你可以对比的来学习,同时明白一些她们体系结构和工作原理方面共同的设计理念和不同的实现方式,从而能够了解到怎样更好利用她们的优点来事资源最大化。

 

作为老牌的数据库品牌,informix占据了一定的市场份额,但是由于其自身一些缺陷和支持资源的减少,导致市场被oracle等数据库大量的占据,但是infomix任然会保持一定的份额量,特别是随着IBM在背后的强大支持,最近推出的最新版本11.7,号称新版IBM Informix数据库软件性能十分出色。查询运行速度比我们之前用过的其他数据库快五倍。还带来了弹性网格这种新的概念,基于infromix的集群取消了同平台(os、硬件),大大降低的客户的成本,总的来说还是非常值得我们期待的。

 

 

一、Informix体系结构简单描述

INFORMIX动态服务器采用的是一种多线索体系结构,这就意味着一个进程利用自己的多个线索可以同时完成多个任务,因而整个系统只需要较少的进程就足以完成DBMS的任务。

动态服务器系统由三个主要组件构成:共享内存,进程和磁盘。共享内存包括三个段:驻留段。虚拟段和消息段。驻留段主要用作磁盘数据的缓存。虚拟段主要用作内存池以支持进程及相关的会话(session)和线索。当客户与服务器利用共享内存进行通信时,消息段将用作两者之间的消息缓冲区。

系统中还包括若干构成数据库服务器的UNIX进程,称为oninit.这些进程被称为虚拟处理器(VP(virtual processors)。每一VP隶属于某一虚拟处理类。而每一虚拟处理器类都负责完成一类特定的任务。

系统的磁盘组件由多个原始磁盘空间组成,称为chunk,chunk以页(page)为基本单位。多个chunk集合逻辑上构成了数据空间(dbspace)。数据空间用于存储数据库、表、系统信息以及物理日志和逻辑日志。一个数据空间至少包括一个chunk.

共享内存段

动态服务器的共享内存由三个段构成:

驻留段主要用作缓冲池,内含逻辑日志和物理日志的缓冲区以及其他系统数据结构。驻留段的大小主要有系统参数BUFFERS决定。
  虚拟段主要用作内存池以支持会话和线索。根据用途的不同,内存池可以进一步分为:会话池、多线索池、字典池、存储过程池、排序池、大缓冲池以及全局池。内存池的分配和释放是动态进行的。内存池分配单位大小为8k。如果已有虚拟段耗尽,动态服务器可以根据onconfig参数再次动态申请。虚拟内存段的初始大小由参数SHMVIRTSIZE决定,其增量由参数SHMADD决定,但整个共享内存段的大小不能超过SHMTOTAL

 

二、Informix性能调整原则和建议

l Buffers:值(多少个page

page可以使用onstat –b确定;

出于性能考虑建议共享内存可以使用系统物理内存的20%-50%,具体的多少合适取决于业务量,业务特性(OLTP/DSS)等;

l Dbspacechunk规划布局原则

主要的dbspaces包含:rootdbslogdbstemdbsdatadbs

一般的原则:

? I/O争用的平衡,避免logdataroot三类在磁盘方面的并发读写的I/O争用,rootdbslogdbsdatadbs放在不同的pv上存储,logdbs建议采用裸设备,datadbs采用raid和条带化技术;

? 大表(千万条级)使用单独的表空间存放,同时采用分区表机制;

l Phylog bufferlglog buffer

这个调整原则建议通过监控逻辑日志和物理日志buffer利用率情况来调整,原则是buffer利用率75%左右最为理想,90%符合太重,50%或再小说明太大;

三、Informix监控

l 共享Buffer

    命令格式:Onstat –p

    Oltp系统读写命中率建议都能在95%左右;

    Dss业务型系统80%左右;

l 逻辑之日buffer、物理日志buffer

命令格式:onstat –l

l Vp调节

参照系统物理cpu数量,单cpu设置为1

多处理器系统设置为cpu格式减1的值;

l 实时的vp

Onstat –g glo

l 实时用户线程

Onstat –u

 

l 实时会话及实时会话内容

Onstat –g ses

Onstat –g ses sid

 

l 实时sqlsql内容

Onstat –g sql

Onstat –g sql sql_id

 

l Vp队列

Onstat –g ioq



四、sql性能分析简单办法

    

    类似于oracle的执行计划和代价分析工具,informix也有类似的东西,具体使用方式如下:


  1. 进入到dbaccess的交互模式:dbaccess "库实例名" -;
  2. 得到执行计划和代价结果命令行:set explain on;或者set explain on avoid_execute;区别在于前者执行语句,后者不执行语句;
  3. 输入要执行实际sql:select ....from tab ....;
  4. 接着就会在当前的目录下产生一个执行分析文件,你可以看到默认的名称为:sqexplaiin.out这个文件是在末尾追加内容,你可以看到如下的格式显示的文件;
      QUERY:

------

UPDATE T_AnntBlnc

                       SET Balance = 10000000       ,

                       InvBlnc = 20000000,

                       ModifyDate = '20080909'

                       WHERE GrPlcNo = '00000051'

                       AND CustNo = '000061'

                       AND AnntAcctCode = '02'

Estimated Cost: 39

Estimated # of Rows Returned: 53

 1) eapsapp.t_anntblnc: INDEX PATH

   (1) Index Keys: grplcno custno plcno anntacctcode  (Key-First) (Serial, fragments: ALL)

       Lower Index Filter: (eapsapp.t_anntblnc.custno = '000061' AND eapsapp.t_anntblnc.grplcno = '00000051' )

       Index Key Filters: (eapsapp.t_anntblnc.anntacctcode = '02' )


解释:Estimated # of Rows Returned: 53这个代表是这条语句结果返回的记录行数,eapsapp.t_anntblnc: INDEX PATH代表执行采用的方式,比如这个INDEX PATH说明采用的索引方式,而Index Keys代表的是走的具体的索引的名称Serial, fragments: ALL这个代表扫描的范围,全部分区;Estimated Cost: 39这个代表代价单元,你可以认为是这条sql执行所要花费的整体的代价和,每个单元代表的具体成分你可以查询informix的官方手册;


TAG:

 

评分:0

我来说两句

日历

« 2024-05-03  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 13211
  • 日志数: 13
  • 建立时间: 2012-07-20
  • 更新时间: 2013-04-16

RSS订阅

Open Toolbar