应用跑一段时间后插入数据变慢

时间:2021-07-06 15:23:10
最近在做系统性能测试,用的是orcale(11g),就是收到数据后不断解析并往数据库表里插入。刚开始没问题,从收到数据到入库都在几十毫秒左右,之后跑了5天入库的数据量达到了几千万,发现数据库插入速度变慢了,很不稳定,平均在几百毫秒左右才入库,有时甚至达到了1秒左右。如果停掉应用重新启动,又恢复正常入库速度。数据库中有用到了索引。请问问题可能出现在哪里,有没有可以定位问题的的方法。
下面是awr报告截图(不知道怎么将那个报告文件引过来):
报告中cpu那块好像没有记录:
应用跑一段时间后插入数据变慢

16 个解决方案

#1


这个数据有问题
重新采集一个,时间范围选应用高峰期(最忙的几个小时)
截取top 5事件
以及几个TOP SQL语句信息

#2


引用 1 楼 wildwave 的回复:
这个数据有问题
重新采集一个,时间范围选应用高峰期(最忙的几个小时)
截取top 5事件
以及几个TOP SQL语句信息

那我又得跑一段时才能贴出来

#3


引用 1 楼 wildwave 的回复:
这个数据有问题
重新采集一个,时间范围选应用高峰期(最忙的几个小时)
截取top 5事件
以及几个TOP SQL语句信息
为啥我生成的报告还是有问题啊 有些还是没有,上面的那些cpu信息都没有

#4


引用 3 楼 xiaopeng187 的回复:
Quote: 引用 1 楼 wildwave 的回复:

这个数据有问题
重新采集一个,时间范围选应用高峰期(最忙的几个小时)
截取top 5事件
以及几个TOP SQL语句信息
为啥我生成的报告还是有问题啊 有些还是没有,上面的那些cpu信息都没有

看看alert日志,是不是有报错

#5


引用 4 楼 wildwave 的回复:
Quote: 引用 3 楼 xiaopeng187 的回复:

Quote: 引用 1 楼 wildwave 的回复:

这个数据有问题
重新采集一个,时间范围选应用高峰期(最忙的几个小时)
截取top 5事件
以及几个TOP SQL语句信息
为啥我生成的报告还是有问题啊 有些还是没有,上面的那些cpu信息都没有

看看alert日志,是不是有报错
日志里就这两个信息Thread 1 cannot allocate new log, sequence
Checkpoint not complete 

#6


引用 5 楼 xiaopeng187 的回复:
Quote: 引用 4 楼 wildwave 的回复:

Quote: 引用 3 楼 xiaopeng187 的回复:

Quote: 引用 1 楼 wildwave 的回复:

这个数据有问题
重新采集一个,时间范围选应用高峰期(最忙的几个小时)
截取top 5事件
以及几个TOP SQL语句信息
为啥我生成的报告还是有问题啊 有些还是没有,上面的那些cpu信息都没有

看看alert日志,是不是有报错
日志里就这两个信息Thread 1 cannot allocate new log, sequence
Checkpoint not complete 


这个信息一般说明dml操作频繁,日志切换频繁,日志文件太小或io太慢

#7



引用 4 楼 wildwave 的回复:
Quote: 引用 3 楼 xiaopeng187 的回复:

Quote: 引用 1 楼 wildwave 的回复:

这个数据有问题
重新采集一个,时间范围选应用高峰期(最忙的几个小时)
截取top 5事件
以及几个TOP SQL语句信息
为啥我生成的报告还是有问题啊 有些还是没有,上面的那些cpu信息都没有

看看alert日志,是不是有报错

新的awr来了:
应用跑一段时间后插入数据变慢

#8


redo切换的问题很严重,是有大量的数据在插入吗
添加几个redo日志组,将文件大小增大
然后检查redo日志所在的磁盘的读写效率,看看是否存在io问题

#9


引用 8 楼 wildwave 的回复:
redo切换的问题很严重,是有大量的数据在插入吗
添加几个redo日志组,将文件大小增大
然后检查redo日志所在的磁盘的读写效率,看看是否存在io问题

谢谢啊  是有大量的数据插入 

#10


logfile sync 增大redo日志文件减少切换;
enq-sq contention 在创建sequence时,默认的cache值太小
还有数据越插越慢,请分析下是不是有索引是单边加的,导致新记录插入时发生了大量索引分裂

#11


引用 10 楼 jwz_hz 的回复:
logfile sync 增大redo日志文件减少切换;
enq-sq contention 在创建sequence时,默认的cache值太小
还有数据越插越慢,请分析下是不是有索引是单边加的,导致新记录插入时发生了大量索引分裂

索引单边加是什么情况啊

#12


引用 11 楼 xiaopeng187 的回复:
Quote: 引用 10 楼 jwz_hz 的回复:

logfile sync 增大redo日志文件减少切换;
enq-sq contention 在创建sequence时,默认的cache值太小
还有数据越插越慢,请分析下是不是有索引是单边加的,导致新记录插入时发生了大量索引分裂

索引单边加是什么情况啊


以前碰到过一种情况,比较索引字段的值类似1,2,3,4。。。这样单边往上加的,在 数据量比较多的时候,会导致大量索引分裂(即插入索引时,索引树会生成新的节点,则索引树需要时刻去调整各个相关节点的位置),导致性能问题

#13


引用 11 楼 xiaopeng187 的回复:
Quote: 引用 10 楼 jwz_hz 的回复:

logfile sync 增大redo日志文件减少切换;
enq-sq contention 在创建sequence时,默认的cache值太小
还有数据越插越慢,请分析下是不是有索引是单边加的,导致新记录插入时发生了大量索引分裂

索引单边加是什么情况啊
意思就是索引的集合的元素近乎无穷多个

#14


引用 楼主 xiaopeng187 的回复:
最近在做系统性能测试,用的是orcale(11g),就是收到数据后不断解析并往数据库表里插入。刚开始没问题,从收到数据到入库都在几十毫秒左右,之后跑了5天入库的数据量达到了几千万,发现数据库插入速度变慢了,很不稳定,平均在几百毫秒左右才入库,有时甚至达到了1秒左右。如果停掉应用重新启动,又恢复正常入库速度。数据库中有用到了索引。请问问题可能出现在哪里,有没有可以定位问题的的方法。
下面是awr报告截图(不知道怎么将那个报告文件引过来):
报告中cpu那块好像没有记录:
应用跑一段时间后插入数据变慢

LZ,应你的要求已将帖子进行了修改,你check一下

#15


引用 14 楼 zlloct 的回复:
Quote: 引用 楼主 xiaopeng187 的回复:

最近在做系统性能测试,用的是orcale(11g),就是收到数据后不断解析并往数据库表里插入。刚开始没问题,从收到数据到入库都在几十毫秒左右,之后跑了5天入库的数据量达到了几千万,发现数据库插入速度变慢了,很不稳定,平均在几百毫秒左右才入库,有时甚至达到了1秒左右。如果停掉应用重新启动,又恢复正常入库速度。数据库中有用到了索引。请问问题可能出现在哪里,有没有可以定位问题的的方法。
下面是awr报告截图(不知道怎么将那个报告文件引过来):
报告中cpu那块好像没有记录:
应用跑一段时间后插入数据变慢

LZ,应你的要求已将帖子进行了修改,你check一下

谢谢啊

#16


经过观察发现的确是我这边提交的太频繁造成了数据库的log file sync时间比较严重,网上自己也查了一些解决方法:http://www.itpub.net/thread-1750190-1-1.html http://www.itpub.net/forum.phpmod=viewthread&tid=1777234&page=11#pid21247486
http://www.itpub.net/thread-1777234-1-1.html

#1


这个数据有问题
重新采集一个,时间范围选应用高峰期(最忙的几个小时)
截取top 5事件
以及几个TOP SQL语句信息

#2


引用 1 楼 wildwave 的回复:
这个数据有问题
重新采集一个,时间范围选应用高峰期(最忙的几个小时)
截取top 5事件
以及几个TOP SQL语句信息

那我又得跑一段时才能贴出来

#3


引用 1 楼 wildwave 的回复:
这个数据有问题
重新采集一个,时间范围选应用高峰期(最忙的几个小时)
截取top 5事件
以及几个TOP SQL语句信息
为啥我生成的报告还是有问题啊 有些还是没有,上面的那些cpu信息都没有

#4


引用 3 楼 xiaopeng187 的回复:
Quote: 引用 1 楼 wildwave 的回复:

这个数据有问题
重新采集一个,时间范围选应用高峰期(最忙的几个小时)
截取top 5事件
以及几个TOP SQL语句信息
为啥我生成的报告还是有问题啊 有些还是没有,上面的那些cpu信息都没有

看看alert日志,是不是有报错

#5


引用 4 楼 wildwave 的回复:
Quote: 引用 3 楼 xiaopeng187 的回复:

Quote: 引用 1 楼 wildwave 的回复:

这个数据有问题
重新采集一个,时间范围选应用高峰期(最忙的几个小时)
截取top 5事件
以及几个TOP SQL语句信息
为啥我生成的报告还是有问题啊 有些还是没有,上面的那些cpu信息都没有

看看alert日志,是不是有报错
日志里就这两个信息Thread 1 cannot allocate new log, sequence
Checkpoint not complete 

#6


引用 5 楼 xiaopeng187 的回复:
Quote: 引用 4 楼 wildwave 的回复:

Quote: 引用 3 楼 xiaopeng187 的回复:

Quote: 引用 1 楼 wildwave 的回复:

这个数据有问题
重新采集一个,时间范围选应用高峰期(最忙的几个小时)
截取top 5事件
以及几个TOP SQL语句信息
为啥我生成的报告还是有问题啊 有些还是没有,上面的那些cpu信息都没有

看看alert日志,是不是有报错
日志里就这两个信息Thread 1 cannot allocate new log, sequence
Checkpoint not complete 


这个信息一般说明dml操作频繁,日志切换频繁,日志文件太小或io太慢

#7



引用 4 楼 wildwave 的回复:
Quote: 引用 3 楼 xiaopeng187 的回复:

Quote: 引用 1 楼 wildwave 的回复:

这个数据有问题
重新采集一个,时间范围选应用高峰期(最忙的几个小时)
截取top 5事件
以及几个TOP SQL语句信息
为啥我生成的报告还是有问题啊 有些还是没有,上面的那些cpu信息都没有

看看alert日志,是不是有报错

新的awr来了:
应用跑一段时间后插入数据变慢

#8


redo切换的问题很严重,是有大量的数据在插入吗
添加几个redo日志组,将文件大小增大
然后检查redo日志所在的磁盘的读写效率,看看是否存在io问题

#9


引用 8 楼 wildwave 的回复:
redo切换的问题很严重,是有大量的数据在插入吗
添加几个redo日志组,将文件大小增大
然后检查redo日志所在的磁盘的读写效率,看看是否存在io问题

谢谢啊  是有大量的数据插入 

#10


logfile sync 增大redo日志文件减少切换;
enq-sq contention 在创建sequence时,默认的cache值太小
还有数据越插越慢,请分析下是不是有索引是单边加的,导致新记录插入时发生了大量索引分裂

#11


引用 10 楼 jwz_hz 的回复:
logfile sync 增大redo日志文件减少切换;
enq-sq contention 在创建sequence时,默认的cache值太小
还有数据越插越慢,请分析下是不是有索引是单边加的,导致新记录插入时发生了大量索引分裂

索引单边加是什么情况啊

#12


引用 11 楼 xiaopeng187 的回复:
Quote: 引用 10 楼 jwz_hz 的回复:

logfile sync 增大redo日志文件减少切换;
enq-sq contention 在创建sequence时,默认的cache值太小
还有数据越插越慢,请分析下是不是有索引是单边加的,导致新记录插入时发生了大量索引分裂

索引单边加是什么情况啊


以前碰到过一种情况,比较索引字段的值类似1,2,3,4。。。这样单边往上加的,在 数据量比较多的时候,会导致大量索引分裂(即插入索引时,索引树会生成新的节点,则索引树需要时刻去调整各个相关节点的位置),导致性能问题

#13


引用 11 楼 xiaopeng187 的回复:
Quote: 引用 10 楼 jwz_hz 的回复:

logfile sync 增大redo日志文件减少切换;
enq-sq contention 在创建sequence时,默认的cache值太小
还有数据越插越慢,请分析下是不是有索引是单边加的,导致新记录插入时发生了大量索引分裂

索引单边加是什么情况啊
意思就是索引的集合的元素近乎无穷多个

#14


引用 楼主 xiaopeng187 的回复:
最近在做系统性能测试,用的是orcale(11g),就是收到数据后不断解析并往数据库表里插入。刚开始没问题,从收到数据到入库都在几十毫秒左右,之后跑了5天入库的数据量达到了几千万,发现数据库插入速度变慢了,很不稳定,平均在几百毫秒左右才入库,有时甚至达到了1秒左右。如果停掉应用重新启动,又恢复正常入库速度。数据库中有用到了索引。请问问题可能出现在哪里,有没有可以定位问题的的方法。
下面是awr报告截图(不知道怎么将那个报告文件引过来):
报告中cpu那块好像没有记录:
应用跑一段时间后插入数据变慢

LZ,应你的要求已将帖子进行了修改,你check一下

#15


引用 14 楼 zlloct 的回复:
Quote: 引用 楼主 xiaopeng187 的回复:

最近在做系统性能测试,用的是orcale(11g),就是收到数据后不断解析并往数据库表里插入。刚开始没问题,从收到数据到入库都在几十毫秒左右,之后跑了5天入库的数据量达到了几千万,发现数据库插入速度变慢了,很不稳定,平均在几百毫秒左右才入库,有时甚至达到了1秒左右。如果停掉应用重新启动,又恢复正常入库速度。数据库中有用到了索引。请问问题可能出现在哪里,有没有可以定位问题的的方法。
下面是awr报告截图(不知道怎么将那个报告文件引过来):
报告中cpu那块好像没有记录:
应用跑一段时间后插入数据变慢

LZ,应你的要求已将帖子进行了修改,你check一下

谢谢啊

#16


经过观察发现的确是我这边提交的太频繁造成了数据库的log file sync时间比较严重,网上自己也查了一些解决方法:http://www.itpub.net/thread-1750190-1-1.html http://www.itpub.net/forum.phpmod=viewthread&tid=1777234&page=11#pid21247486
http://www.itpub.net/thread-1777234-1-1.html