谈通信运营商数据库性能优化河北联通宋冠军.docx

上传人:b****8 文档编号:12074438 上传时间:2023-06-04 格式:DOCX 页数:9 大小:116.04KB
下载 相关 举报
谈通信运营商数据库性能优化河北联通宋冠军.docx_第1页
第1页 / 共9页
谈通信运营商数据库性能优化河北联通宋冠军.docx_第2页
第2页 / 共9页
谈通信运营商数据库性能优化河北联通宋冠军.docx_第3页
第3页 / 共9页
谈通信运营商数据库性能优化河北联通宋冠军.docx_第4页
第4页 / 共9页
谈通信运营商数据库性能优化河北联通宋冠军.docx_第5页
第5页 / 共9页
谈通信运营商数据库性能优化河北联通宋冠军.docx_第6页
第6页 / 共9页
谈通信运营商数据库性能优化河北联通宋冠军.docx_第7页
第7页 / 共9页
谈通信运营商数据库性能优化河北联通宋冠军.docx_第8页
第8页 / 共9页
谈通信运营商数据库性能优化河北联通宋冠军.docx_第9页
第9页 / 共9页
亲,该文档总共9页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

谈通信运营商数据库性能优化河北联通宋冠军.docx

《谈通信运营商数据库性能优化河北联通宋冠军.docx》由会员分享,可在线阅读,更多相关《谈通信运营商数据库性能优化河北联通宋冠军.docx(9页珍藏版)》请在冰点文库上搜索。

谈通信运营商数据库性能优化河北联通宋冠军.docx

谈通信运营商数据库性能优化河北联通宋冠军

谈通信运营商数据库性能优化

宋冠军中国联合网络通信有限公司河北分公司

摘要:

随着电信市场竞争的不断加剧、新业务不断推出、信息化程度不断完善,各运营商业务系统在不断向省集中、全国集中。

这些集中信息系统的数据库的处理速度、优化程度直接影响着客户体验,对电信市场运营支撑起着至关重要的作用。

本文围绕运营商信息系统数据库的特点,对数据库性能优化的方法、经验、效果做了详细的介绍。

关键词:

数据库、运营商、通信、性能优化

电信市场竞争的不断加剧,使得新业务不断推出,有着巨大技术底蕴和经济基础的电信业,正面临着后台支撑系统的IT业的冲击和挑战。

随着技术的发展和业务模式的改变,电信业和IT业正在相互交融、相互影响,各运营商信息化程度迅速提升,生产运营的各个环节都依靠各类信息系统作为支撑,而数据库又是信息系统的核心部件,数据库运行效率直接影响客户体验和信息化支撑水平,因此数据库性能优化对各运营商至关重要,下面我们就按照运营商数据库的特点,对数据库如何性能优化进行介绍。

一.通讯行业数据库特点介绍

1.数据量大

随着固话、手机及宽带网的普及,通讯行业的用户数也越来越多,手机也越来越成为人们生活中不可或缺的一部分。

一般来说,一家通讯运营商负责运营一个省的通讯业务,目前,全国的通讯运营商都实现了数据省级集中,所以通讯运营商的数据库存储的是全省的数据,因此通讯行业的数据量是巨大的。

2.连接数多

由于使用固话、手机及宽带网的人数较多,所以对数据库的访问和操作也会随之增多。

例如在营业厅前台办理业务以及手机拨打电话或充值后及时在数据库中修改相应记录,这些都要求对访问数据库,而且是全省的用户均访问同一个数据库,这导致数据库的连接数较多,压力较大。

3.复杂性高

对于通讯行业的数据库系统,业务是相当复杂的,有负责计费的系统、业务办理的系统、客服电话的系统等等。

这导致,会有多个数据库同时运行,而且每个数据库系统都会与其他数据库系统发生业务关系,例如用户缴费后会修改计费数据库的记录,然后将缴费情况通知开通数据库,将用户手机由停机状态修改为开机状态。

除了在内部有复杂的业务关系外,通讯商还会跟总部及兄弟运营商发生业务关系,例如漫游都相关业务。

所以,通讯行业的数据库系统是极其复杂的。

4.不可中断性

通讯行业的又一大特点是不可中断性,业务提供7*24小时服务,每时每刻都会有用户使用手机及宽带业务,这就导致数据库系统也必须提供7*24小时服务。

任何不可预知的中断,都会造成难以估计的损失。

5.数据安全性

通讯行业的数据库还会记录用户的话费情况,这点跟金融业非常相似。

这直接关系到用户的经济利益,所以对于数据的安全性是有较高要求的。

例如采用数据备份、异地容灾等方式保护数据。

6.及时响应性

通讯行业的数据库系统对用户响应是有较高要求的,这关系到运营商的竞争力。

例如一个手机用户欠费停机,在缴费后,要及时给用户开机。

二.调优概述

1.外部环境调整

Oracle数据库不是孤立存在的,与前端中间件产品,应用程序,与后端的数据库服务器软硬件,存储,网络等都有密切的关系,因此对oracle外部环境的优化,可以从优化外部的环境开始。

1.1前端产品

oracle处理前段应用程序传递过来的请求并返回,如果应用程序传递到oracle处理的sql语句如果不够优化,会造成oracle浪费很多资源,在实现业务逻辑的基础上,针对oracle数据库优化的应用程序,对oracle性能的提升会有相当大的帮助

1.2数据库服务器硬件

CPU:

CPU资源的不足令查询/dml等操作变慢。

当压力超过Oracle服务器的CPU性能时,最直接的体现就是:

当运行队列的数目超过服务器的CPU数量时,数据库性能就受到CPU的限制。

内存:

可用于Oralce的内存数量也会影响SQL的性能,特别是在数据缓冲和内存排序方面,因为如果内存不足就会发生内存分页。

当内存分页时,内存页是与磁盘上的交换区进行交互的。

而磁盘操作要比内存造作慢10,000倍左右,所以优化的方法是增加更多的内存,减少OracleSGA的大小,或者减少不必要的Oracle客户端连接进程。

1.3数据库服务器操作系统

操作系统的内核,补丁,包括各种配置参数,对oracle数据库性能提高也是有很大的帮助,在操作系统设置上限制了oracle性能发挥的案例比比皆是。

1.4存储

磁盘I/O操作要比内存造作慢10,000倍左右,所以磁盘I/O操作最可能成为oracle性能的瓶颈,所以在选择存储时应该充分根据oracle的压力变化,选择响相应别的存储,从存储的IOPS即单位时间内处理的最大I/O频度,单个I/O的响应时间,吞吐量,RAID方式,存储自身的cache等方面,来选择最合适当前oracleI/O压力的存储设备

1.5网络

大量的oracleNet8通信也会令SQL的性能变慢。

比如OracleRAC之间的内联网络由于cache融合,经常需要通过高速内联网络传输大量数据,所以高速的网络连接对oracle响应速度提高有着很重要的作用。

还有oracledataguard需要通过网络传输oraclearchivelog到standby库,如果网络性能不达标,将严重的影响生产库的性能,甚至有可能造成生产库的DOWN机。

2.oracle自身优化

2.1Oracle数据库结构:

Oracle数据库主要由INSTANCE(实例)和database和其他文件组成,instance是由SGA和各种后台进程组成,database是由数据文件,日志文件,控制文件组成。

其他重要文件:

如初始化参数文件及密码文件。

下图为oracle主要组件结构示意图:

2.2对oracle组件优化

2.2.1SGA调优

SGA可以理解是数据库的缓存,跟操作系统和存储中缓存类似,缓存对于数据库性能起着至关重要的作用。

SGA中的各各部分:

数据缓冲区(Databasebuffercache):

9i及以上版本数据库中对应初始化参数Db_cache_size,数据库中数据库块的缓存,对于减少物理I/O有重要作用。

共享池:

(shared_pool_size):

数据字典缓存,sql缓冲,SQL执行计划,pl/sql语法分析,.多进程共享SQL执行计划,避免重复解析,加大可提速度。

日志缓冲区:

(log_buffer)缓储数据库的redo条目,当一个繁忙的OLTP系统,必然并行系统存在大型并行的DML,生成大量redo条目,合适的log_buffer有效减少竞争

JAVA池(Java_pool_size)主要用于JAVA语言的开发.应用中有较多的java程序时,必须合适调整该参数

大池(Large_pool_size)  如果不设置MTS,主要优化用于数据库备份恢复管理器RMAN。

2.2.2PGA调优

PGA:

包含单个服务器进程或单个后台进程的数据和控制信息,与几个进程共享的SGA正相反PGA是只被一个进程使用的区域,PGA在创建进程时分配在终止进程时回收.

非MTS时主要对以下两个部分做调整

A、Sort_area_size 用于排序所占内存

B、Hash_area_size用于散列联接,位图索引

8i之前对应PGA是需要手工管理的,需要手工指定初始化参数,sort_area_size,hash_area_size等

但9i之后提供了更方便的解决方案

除沿用8i中手动管理方式外(workarea_size_policy=manual)还引入PGA自动管理(workarea_size_policy=auto)应的参数pga_aggregate_target为所有session的PGA提供了一个目标值,并不是上限,如果需要时可以超过该目标值,oracle自动平衡各各session中PGA使用,简化了DBA的维护

2.2.3LOCK、latch调优

任何大型并发处理的数据库必然要引入锁机制,达到最大并发并保证事务(lock)和内部结构(latch)的一致。

一般情况下oracle锁机制运行工作并不需要DBA介入参与就可以很好运行,并可以对死锁实现自动解锁,但也存在异常情况,对于session异常中断等导致锁没有释放而引起的等待,DBA就需要速地检测出锁定资源的会话或用户,并解决锁争用。

2.2.4SQL优化器调优

OracleSQL引擎在对SQL语句解析时,优化器起着至关重要的作用,8I时优化器会根据内建的规则(RULE)来决定SQL语句如何被执行,但这些规则并不一定适用于每个系统,并且每个系统不同阶段的情况也有所不同,所以从ORACLE9i引入的基于成本的优化器(CBO),CBO对SQL的各种执行计划做一个成本(cost)估算,从而选择最优执行计划,cbo基于oracle对象的统计信息来计算成本,所以一个正确及时有效的统计信息,对于SQL语句的高效执行起着至关重要的作用

2.2.5数据库(database)优化

Database逻辑结构(图1):

oracle最小逻辑I/O为块(block),多个连续的block组成区(extent),多个extent组成段(segment),多个segment组成表空间(tablespaces).而tablespace物理上又是由多个数据文件(datafiles)组成。

每个部分都有相应的需要调整的参数和优化方法,例如:

1.比如blocks级别:

块大小由参数db_block_size控制,对应的初始化参数为db_block_size,根据应用的特点选择不同的块大小,已达到优化i/o读取,减少I/O频率的目的。

2.segment级别:

一般来说每个表对应一个分区,但对于一个超大的表来说采用一个分区效率会很低,应用分区表技术,将大表划分成多个tablepartition,每个parition作为一个单独的segment来减少竞争。

3.在表空间级别:

在将表空间的多个数据文件分别放到不同的磁盘,已达到分布I/O,并行读取,减少竞争,提高吞吐量的目的,也是常用的优化手段。

database逻辑结构:

(1)

3.oracle调优工具

3.1statspack工具包

OracleDatabase从9I版本身自带的statspack包,是DBA对oracle性能调优强有力的工具,通过一段时间(30分钟-1个小时)对oracle数据库进行两次快照信息收集,针对两次快照信息进行分析,生成一份报告,通过报告可以对oracle总体性能和各个组件的性能有一个全面的了解。

对现有系统调优提供一个方向。

3.2工作负载信息库AWR和ADDM

如果OracleDatabase9i中的statspack还是可选项,OracleDatabase10g提供了一个显著改进的工具:

自动工作负载信息库(AWR),Oracle自动在一个时间间隔完成信息快照的收集。

生成类似于statspack的报告,格式也不仅限于文本,新增加了html更利于阅读的格式。

基于AWR的自动数据库诊断监控程序(ADDM)。

为了作出决策,ADDM使用了由AWR采集的数据。

比如ADDM可以看到发生了缓冲区忙等待,然后取出相应的数据来查看发生缓冲区忙等待的段,评估其特性和成分,最后为数据库管理员提供解决方案。

在AWR进行的每一次快照采集之后,都可以调用ADDM来检查量度并生成建议

3.3OracleEnterpriseManager(OEM)

OracleEnterpriseManager是一个基于java的框架系统,该系统集成了多个组件,为用户提供了一个功能强大的图形用户界面。

对oracle各各部分性能提供一个直观的展示,并给用户提供一个简易的操作接口

三.通讯:

行业计费/CRMoracle数据库具体调优案例

3.1.SGA中logbuffer调优案例:

3.1.1logbuffer官方建议:

如何设置日志缓冲区:

(log_buffer)

搞清楚这个问题我们需要看logbuffer原理:

LGWR后台进程负责log_buffer内容写入redologORACLE官方文档上列出的LGWR写的触发条件:

  1,每三秒钟超时(timeout):

  2.阀值的达到:

  Redologbuffer1/3满;

 Redologbuffer拥有1MB的脏数据;

  3.用户提交:

  4.在DBWn写之前:

不难看出LGWR写非常频繁,也就是说LOGBUFFER刷新速度很快,并且理论上看似乎logbuffer设置超过3M没有多大意义,可实际上真是如此么,下面的案例能很好说明

3.1.2生产系统中logbuffer优化案例

10月份计费出账期间,根据业务需要增加对清单库所有地市相关表做备份,备份insert操作原数据插入到另一张表中,没增加时候该操作2小时执行完毕,新增后执行4个小时还没有执行完成,检查等待事件发现等待‘logbufferspace’

该现象反映到数据库中就是多个session进行大量的并行insert操作,产生大量的redo,同时等待logbufferspace说明了logbuffer空间不足,session申请不到logbuffer空间

检查logbuffer参数设置,发现当前值为5m,随后扩大该值到100m,等待消失,任务在2小时内完成。

举一个通俗的例子logbuffer就好比一个漏斗,下面漏谁口流出的速度一定,要使漏斗容纳更多的水而不从上面溢出,只有增大漏斗体积。

3.2.LMS进程CPU占用率超标调优案例:

3.2.1LMS进程简介:

LMS进程也就是LockManagerServerProcess的缩写,意思是锁管理服务器进程。

负责RAC多节点之间并发控制。

通常情况占用CPU不超过10%

3.2.1生产系统中LMS调优具体案例:

现象:

出账期间,营收库两节点LMS进程CPU占用率突然升高,高达40%-80%,并且触发oraclebug导致营收库第二节点down机,应用BUG补丁后LMS进程cpu使用率仍然很高。

发现问题:

使用statspack工具对两节点进行分析:

在TOPSQL项目中发现RAC两节点中同样的一条SQL语句对相同的表做DELETE产生大量逻辑读,进一步分析SQL语句的执行计划,发现大量逻辑读产生的原因是由于该SQL执行计划对一个大表做全表扫描。

对同一对象长时间大量跨节点并行逻辑读操作导致LMS进程异常忙绿,现象表现为CPU使用率增高

调优方案:

针对该SQL最优的执行计划是索引扫描,索引根据SQL谓词也就是where中的条件,检查相应列上索引发现索引缺失,在相应列上建立了索引。

观察逻辑读又几十万变成几百,效果非常明显。

LMScpu使用率也回到5%左右。

四.总结

从通讯行业数据库的特点看出,数据库具有海量的数据、高并发的连接、较高的复杂性、绝对的数据安全性等特点,最重要的是如何保障数据库系统高效运行,这直接关系到通讯运营商的竞争力。

在通讯行业竞争日益激烈的今天,控制成本和提高效率已经成为发展的关键。

对于数据库系统来说,性能调优已经成为日常工作中的重点。

只有提高整个系统的运行效率,才能为用户提供更优质的服务。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 总结汇报 > 工作总结汇报

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2