《Informix数据库培训教程.doc》由会员分享,可在线阅读,更多相关《Informix数据库培训教程.doc(25页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第十一章 informix_online 动态服务器性能调整 所谓性能调整就是平衡时间、空间、资金、可靠性等几个因素之间的关系,使设备达到最好的使用效果。其中任何一个因素的改变都会影响到其他因素的变动,要想单纯的改变某一个因素是不可能的。只能尽量地接近而不能超越最优状况下的实际性能。一、 影响性能的主要因素 CPU要素指令执行的时间、处理时间和CPU利用率。 磁盘要素访问时间 内存要素实际内存需求量、换页率、对换和I/O访问时间。二、 进行性能评测的工具 硬件厂商提供的工具1、 time:显示执行一个程序所耗费的时间。2、 vmstat:报告有关进程、内存、磁盘和CPU的统计信息。3、 sar
2、:用来查看系统的实时记录。 INFORMIX工具1、 onstat:列出在命令运行的瞬间Online共享内存结构中的情况。2、 oncheck:用于修复磁盘中受到破坏的索引和数据页,还可用于监测Online系统磁盘上的其它数据结构。三、 性能调整的几个方面 合理的磁盘布局1 磁盘布局的目标是平衡所有设备的I/O操作!2 确定磁盘布局的步骤 检查应用的SQL以决定I/O的频繁程度 1、vmstat -g iof (对已使用的数据库) 2、检查应用 (对未使用的数据库) 找出使用最频繁的表 确定online系统可使用的磁盘资源 决定如何在磁盘间分布I/O 3如何进行磁盘布局 分割的种类1、 表的分
3、割2、 索引的分割 分割的方式1、 基于表达式方式分割 特点:数据的存取是不均匀分布的、查询的选择性很强、基于列的某个条件的查询可以消除某些分片的查询。2、 基于循环方式分割 特点:数据的均匀分布、最高的数据可用性、没有了对表达式进行求值的过程从而可得到最高的数据装载效率。 数据分割的原则1、 对DSS重点是数据的分割2、 对OLTP重点是索引的分割3、 对顺序扫描读的表采用循环方式进行分割4、 分割表达式应尽量简单、5、 尽量将最可能满足的表达式放在前面6、 避免在表达式中有类型转换操作7、 不要针对经常改变的字段进行分割 Chunk 的影响 Chunk加到系统中的顺序也会影响系统的性能。因
4、为在系统检查点期间, 给Chunk分配清页线索是根据Chunk加到系统中的顺序进行的。 临时空间的建立 如果系统支持DSS查询,就需要频繁的创建和使用临时表和排序文件,那么临时数据空间的位置对性能的影响是很大的,此时应考虑建立一个或多个临时空间,并且不同的临时空间应尽量分布在不同的磁盘上,道理同Chunk顺序。4。磁盘布局地监控onstat -g iof命令监控磁盘活动。使用UNIX工具sar -d 1 5显示磁盘利用率。5磁盘布局的改变 用ALTER FRAGMENT语句改变现有磁盘布局。该语句可以重新设置新的分割策略,可以增加、删除、修改一个分片,可以将几个结构相同的表合并或将一个表分成几
5、个结构相同的表。 正确地调整影响I/O性能的几个参数1 缓冲区参数的设置 OLTP环境下,应将共享内存的大部分分配到驻留部分。 DSS环境下,应将共享内存的大部分分配到虚拟部分。2 NUMAIOVPS参数的设置 KAIO (核心异步I/O)和AIO的概念以及两者的区别。Onstat -g ath监测系统是否使用SAIO。 配置NUMAIOVPS参数1、 对于使用KAIO并且所有chunk都是原始设备的Online系统,只需把NUMIOVPS设为1或2。2、 对于不使用KAIO的Online系统,应把AIO vp的数目设置成存放数据库表的磁盘的数目。3、 对于同时使用了核心AIO和操作系统文件设
6、备的Online系统,应把AIO vp的数目设置成与使用操作系统文件设备来做chunk以存放数据库表的磁盘的数目。 监控I/O队列长度 使用onstat -g ioq命令列出有关I/O请求队列长度的信息。3 LRU队列参数据的设置 LRU(最少最近使用)队列的作用来管理工共享内存缓冲区。 如何配置LRU队列的数目(由参数LRUS决定)配置LRU队列的数目的目的是减少LRU队列的长度!1、 对大型多处理系统,一般将LRUS设成CPU vp的数量。2、 对单处理机系统或小型多处理系统,将LRUS设为4。3、 LRU队列数的取值范围是4-32个。 配置LRU百分比的原则1、 LRU_MAX_DIRT
7、Y和LRU_MIN_DIRTY参数。2、 百分比设得过高时。3、 百分比设得过低时。 监控LRU队列onstat -R命令显示LRU队列中FLRU和MLRU所占的百分比。4 有关检查点活动参数的设置 检查点的概念 检查点持续时间和间隔的概念5 10 15 20 25 检查点持续时间性 检查点间隔 影响检查点持续时间的因素1、 有多少脏页需要从缓冲写到磁盘上。缓冲池的大小LRU参数2、 脏页能够写多快。磁盘的数量和速度磁盘布局清页线索的数量 影响检查点间隔的因素1、 CHPTINTVL参数2、 物理日志的大小3、 系统中的写操作。4、 一些系统的管理操作。5、 Online系统管理员强制执行。5
8、 清页线索的监控 Online缓冲区写操作的类型1、 Chunk写2、 LRU写3、 前台写 监控清页线索的活动1、 清页线索活动的发生。2、 清页线索的数目是通过CLEANERS参数来确定的。3、 使用命令onstat -F显示关于清页线索活动的详细信息。4、 对于面向批处理的系统应把LRU的百分比定的高一些。 检查点间隔中和检查点期间的页清理活动的区别1、 检查点期间是 chunk写,比较有效,而检查点间隔中是LRU写。2、 检查点间隔中的页清理活动不引起其它用户进程等待,而检查点期间的页清理活动正好相反。6 合理调整日志缓冲区 为获得优化的性能,应把物理和逻辑日志缓冲区配置的足够大,以尽
9、量减少把物理日志和逻辑日志写到磁盘上所需的物理I/O的数量。 使用命令onstat -l 的输出信息来判断日志缓冲区的大小是否是优化的。 (bufsize和pgaes/io两个参数。)7 预读的配置 预读的概念 预读参数:RA_PAGES和RA_THRESHOLD 监控预读:onstat -p 数据库性能策略1 数据库日志模式和性能的关系 缓冲日时局模式:数据库先将事务记录发送到一内存缓冲区内,当缓冲区满时写到磁盘上。 非缓冲日志模式:数据库也是先将事务记录发送到一内存缓冲区内,但一旦有一个事务提交,内存缓冲区马上被写到磁盘上。2 添加索引对系统性能的影响 B+树的概念节点内存缓冲区节点节点节
10、点节点节点节点 索引的填充度(参数FILLFACTOR决定)的概念12 18 24 30 节点 监控索引的填充度oncheck -pT database:table 有效的使用BLOB 大型的BLOB数据应放在blobspace上。由于BLOB数据占据的空间比较大,可能占据缓存中的几个页,和其它数据一起存放会降低整个Online系统的缓存命中率。 BLOB页的大小应设置成在blobspace中的BLOB数据的平均长度。 合理配置CPU vps1.CPU vp类将所有密集CPU活动的操作放在其中的进程上运行,从而使这些进程总保持工作而较少睡眠。要想提高系统性能,应尽量使该类VP保持忙碌。2监测C
11、PU vp的使用onstat -g glo 显示正在运行的vp的CPU使用情况的信息。Onstat -g rea 用来监测就绪队列中的项目情况。 3合理调整CPU vps 对单或双处理器系统1、 临界区的概念。2、 SINGINE_CPU_VP=1,避免了很多的临界区调用。3、 MULTIPROCESSOR=0 对于多处理器系统,调整该参数将对性能产生显著影响,但应遵循以下原则:1、 一次只增加一个CPU vp.2、 CPU vp 的数量不要越过硬件处理器的数量。3、 应随时检查系统处理器的使用率。 正确使用内存1 Online系统中共享内存的三个部分驻留部分:包含缓冲区缓存和其它系统信息。虚
12、拟部分:包含会话和线索所使用的各种内存池。消息部分:包含消息缓冲区。2 Online中使用内存的主要部分 Online系统内存1、 缓冲池2、 存储过程缓冲池 会话内存1、 排序2、 杂凑连接3、 中间文件3 内存管理OLTP和DSS对内存的需要情况1、 对OLTP纯环境2、 对DSS纯环境3、 OLTP和DSS混合环境(参数DS_TOTAL_MEMORY) 4.影响内存使用的几个参数 SHMMAX:共享内存的最大尺寸。 SHMSEG:每个进程能访问的共享内存段数。 SHMTOTAL:限制共享内存的总空间。 BUFFERS:调整缓冲区池的大小。 DS_TOTAL_MEMORY:限制DSS查询的
13、内存空间。5。监控共享内存的使用 onstat -g seg命令,确定动态服务器分配到的和使用的内存数量。 Onmode -F命令,用来释放不再使用的共享内存段。 对C/S结构和分布式通讯调整网络配置参数1 数据库服务器与客户应用位于同一台机器上时只要CPU的利用率不接近100%,并且有足够的内存可用于运行所有的进程,而不需要额外的换页,则就可以在同一台机器上运行应用进程和数据库服务器。此时可使用共享内存或TCP/IP来通讯。2 数据库服务器与客户应用不在同一台机器上时 对要多次使用的SQL语句实现做好Prepare. 对于把多个SQL语句作为一组来执行的任务,就使用存储过程。 当传送大量的行
14、,特别是一行的数据量很大时,可通过增加环境变量FET_SIZE的值以减少网络通讯量。3 对于有大量客户的系统 监测网络负载使用netstat -I 2命令来监测网络负载。 poll (探询)线索和listen(侦听)线索的作用。1、 应有足够的poll线索处理接收消息。可通过在参数NETTYPE的第四个域中指定为NET,poll线索将在它们自己vp的上运行,若指定为CPU,则poll线索将在CPU vp 上运行。2、 应有足够的listenx线索处理同时连接。在文件$INFORMIX/etc/sqlhosts和$INFORMIX/etc/onconfig中设定。第十二章 informix_sq
15、l语言简介一、 重要的数据库术语关系模型:描述数据库和数据模型。表: 表是数据项的阵列,以行和列组织。所有的数据都是以表的形式存在的,表由 行和列组成。行: 表中每一行代表了表的主题的一个实例。列: 表中一个列代表了一个属性。表、行、列: 表 = 实体 一个表代表了数据库对一个主体或一类事物所知道的信息。 列 = 属性 一个列代表了对表的主体的为真的一个特性、特征或事实。 行 = 实列 一个行代表了表的主体的一个单独的实例。对表的操作: 选择:表中满足特定条件的行的水平子集 投影:选定某些符合条件的列的垂直子集 连接:通过连接几个相关的表获得更多个实体的信息二、 INFORMIX数据库实用程序
16、介绍1、 Dbaccess用来输入、执行SQL查询语句或者将查询结果输出;选择、生成、删除数据库;生成、修改、删除或者查询数据库中表的各种信息等。下面详细介绍各个菜单及其功能:Query _Language 使用数据库的结构化查询语言对数据库进行操作 New 允许输入一组新的语句作为当前语句 Run 执行当前的语句 Modify 修改当前语句 Use_editor 允许用户使用系统编辑程序vi对当前语句进行编辑 Output 将执行当前语句的结果进行输出 Printer 将查询结果输出到打印机 New_file 将查询结果输出到一个新文件 Append_file 将查询结果追加的一个存在的文件
17、中 To_pipe 将查询结果送到其它程序的标准输入中 Exit 退出output菜单 Choose 选择当前目录下以 .sql为后缀的SQL语句文件 Save 存放当前语句到某一SQL文件。其后缀为 。sql Info 显示当前数据库中某个表的信息 Drop 从数据库中删除某个SQL文件 Exit 退出Query_Language菜单Database 用来选择、生成或删除一个数据库 Select 设置某数据库为当前工作数据库 Create 创建新数据库并使其成为当前工作数据库 Drop 从系统中删除某数据库 Exit 退出数据库Database 菜单,返回到上级菜单Table 用来生成、修改
18、或删除一个数据库中的表 Create 生成一个新表 Alter 修改一个已经存在的表的结构 Info 查询一个已经存在的表的信息 Drop 删除一个已经存在的表 Exit 退出一个已经存在的表2、 Isqlrf (有的系统为:isql) Form 可以执行、创建、修改、编译屏幕格式或删除已存在的屏幕格式 Run 执行某一已经存在的屏幕格式 Modify 修改指定的已经存在的屏幕格式 Generate 为指定的表创建一个缺省的屏幕格式 Compile 编译一个制定的屏幕格式 New 创建特定的用户屏幕格式 Drop 删除某已经存在的格式文件 Exit 退出Form菜单Report 可以执行、建立
19、、修改、编译、或删除报表 Run 执行某一报表 Modify 修改指定的报表 Generate 为某一个表建立一个缺省的报表 New 建立一个用户指定的报表 Compile 编译指定的报表 Drop 删除一个指定的已经存在的报表 Exit 退出Report 菜单Query_Language 详见实用程序说明:dbaccessUser_menu 可以执行、建立或修改用户建立的菜单 Run 执行当前数据库的用户菜单 Modify 允许用户建立或修改用户菜单 Exit 退出User_menu菜单Database 详见实用程序说明: dbaccessTable 详见实用程序说明:dbaccessExi
20、t 通出实用程序isqlrf (或 isql)三、 简单的SELECT语句 SELECT语句是最重要也是最复杂的SQL语句,它和insert update和 delete 语句一起用于数据操作,主要用于: 从数据库中检索数据 作为INSERT语句的一部分产生新的行 作为UPDATE语句的一部分更新信息1 SELETE语句的简要介绍 构成:SELECT 子句 指定要查询的表FROM 子句 指定要查询的列WHERE子句 选择特定的列或创建一个新的连接条件ORDER BY子句 改变数据产生的次序INTO TEMP子句 把结果以表的形式存放起来,供以后使用其中SELECT、FORM子句是必选的。 权限
21、 查询数据库必须对该数据库具有connect权限以及对表具有SELECT权限,这些权限通常作为默认值赋给用户。与数据库的操作权限有关的grant 和 revoke语句将在后面讲到。 关系操作选择:在表中满足特定条件的行的水平子集。这一类型的SELECT 子句返回表中的一部分行的所有列。选择是通过SELECT语句的WHERE子句来实现的。例:SELECT * FROM custom WHERE state=”NJ” 显示结果如下: customer_num 107 fname Charles lname Ream company Athletic Supplies addressl 41 Jor
22、dan Avenue address2 city Palo Alto state CA zipcode 94304 phone 415-356-9876投影:在表中一些列的垂直子集,子集包含了表中这些列的所有行。这样的SELECT语句返回表中所有行的一些列。投影是通过在SELECT语句中的SELECT子句的选项来实现的。例:SELECT UNIQUE city, state,zipcode FROM customer查询结果包含了与 customer 表中的相同数目的行,但仅投影了列的一个子集 显示结果如下: city state zipcode Bartlesville OK 74006 B
23、lue Island NY 60406 Brighton MA 02135 Cheey Hill NJ 08002 Denver CO 80219 Jacksonville FL 32256 Los Altos CA 94022 Menlo Park CA 94025 Moutain View CA 94040 Moutain View CA 94063 Oakland CA 94609 Palo Alto CA 94303 Palo Alto CA 94304 Phoenix AZ 85008SELECT语句在大多数情况下同时使用选择和投影,查询返回表中的一些行和一些列。例:SELECT U
24、NIQUE city,state,zipcode FROM customer WHERE state=”NJ” 显示结果如下: city state zipcode Cherry Hill NJ 08002 Princeton NJ 08540连续:将两个或多个表通过一个或多个相同的列联系起来成为一个新的结果表 例:SELECT UNIQUE city,state,zipcode,sname FROM customer ,state WHERE customer ,state = state.code 显示结果如下: city state zipcode sname Bartlesville
25、OK 74006 Oklahoma Blue Island NY 60406 New York Brighton MA 02135 Massachusetts Cherry Hill NJ 08002 New Jersey Denver CO 80219 Colorado Jacksonville FL 32256 Florida Los Altos CA 94022 california Menlo Park CA 94025 california Mountain View CA 94040 california Mountain View CA 94063 california Oakl
26、and CA 94609 california Palo Alto CA 94303 california Palo Alto CA 94304 california Phoenix AZ 85008 Arizona2.单表SELECT语句 检索所有的行和列使用*号:星号代表所有的列的名字。例:SELECT * FROM manufact 显示结果如下: manu_code manu_name lead_time SMT Smith 3 ANZ Anza 5 NRG Norge 7 HSK Husky 5 HRO Hero 4 SHM Shimara 30 KAR karsten 21 NKL
27、 Nikolus 8 PRC ProCycle 9 选择特定的列例:SELECT UNIQUE customer_num FORM orders注:此处关键字UNIQUE 或它的同义词 DISTINCT 来抑制重复的行显示结果如下: customer_num 101 104 106 排序 列排序:可以通过改变选项表中列的次序来改变各列在显示时的次序。例:SELECT manu_name , manu_code , lead_time FROM manufact显示结果如下: manu_name manu-code lead_time Smith SMT 3 Anza ANZ 5 Norge N
28、RG 7 Husky HSK 5 Hero HRO 4 Shimara SHM 30 Karsten KAR 21 Nikolus NKL 8 ProCycle PRC 9 行排序: 可以通过SELECT 语句中加入 ORDER BY 子句来要求 系统按某各指定次序对数据进行排序。 例:SELECT manu-code, manu_name, lead_time FROM manufact ORDER BY lead_time 以lead_time 的次序显示 manufact表中的每一行和列。 显示结果如下: manu_name manu_code lead_time Smith SMT 3 Hero HRO 4 Husky HSK 5 Anza ANZ 5 Norge