午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

特定配置下Oracle日志批量提交的最優(yōu)數(shù)量

瀏覽:17日期:2023-11-23 19:00:17
 一、測(cè)試背景

項(xiàng)目中的記錄日志有時(shí)會(huì)采用批量提交的方法,它的好處是減少了獲取數(shù)據(jù)連接的次數(shù),從而減少了網(wǎng)絡(luò)交互的次數(shù),提高了系統(tǒng)性能。為了將系統(tǒng)性能提高到最好,找到特定配置下oracle批量提交的最優(yōu)數(shù)量,進(jìn)行了這個(gè)測(cè)試。

二、測(cè)試環(huán)境與配置(數(shù)據(jù)庫(kù)服務(wù)器配置)

操作系統(tǒng):aix 5.3

數(shù)據(jù)庫(kù)版本:oracle 10g

Java版本:1.5

Web應(yīng)用服務(wù)器:weblogic

三、測(cè)試設(shè)計(jì)

1. 如何進(jìn)行批量提交

可能有人對(duì)我上面提到的批量提交的實(shí)現(xiàn)方式不清楚,在此詳細(xì)介紹一下,用到的是preparedStatement的addBatch()和 executeBatch()方法。addBatch()方法將一組參數(shù)添加到preparedStatement 對(duì)象的批處理命令中,通過(guò)調(diào)用方法 executeBatch 可以批量執(zhí)行此列表中的命令。

程序如下例: 

public static void test(){......preparedStatement ps = nulltry {conn = DataSourceManager.instance().getConnection();ps = conn.prepareStatement('insert into log(col1,col2)values(?,?)');for (int i = 0 i < commitCount; i++) {ps.setString(1, 'hello');ps.setString(2, '123');ps.addBatch();}ps.executeBatch();......}

  2.設(shè)計(jì)思路

測(cè)試要得到的就是程序中一次批量提交的日志最優(yōu)條數(shù),也就是commitCount的值。

拿到這個(gè)測(cè)試項(xiàng)目時(shí),我的思路是:設(shè)定批量提交日志參數(shù)commitCount的值,在一段可計(jì)算的時(shí)間time 內(nèi)提交日志數(shù)count,得到每秒提交的日志條數(shù)v(v=提交的日志數(shù)count/時(shí)間time)。逐漸增加批量日志參數(shù)commitCount,得到不同的v,對(duì)比數(shù)據(jù),取最大的v所對(duì)應(yīng)的commitCount,即為批量提交的最優(yōu)數(shù)量。

3. 程序設(shè)計(jì)

思路比較容易確定,剩下就是程序的設(shè)計(jì)了。設(shè)計(jì)程序的原則是可操作性要高,主要問(wèn)題是思路中提到的各個(gè)參數(shù)的設(shè)置和獲取。在經(jīng)驗(yàn)豐富的前輩的指點(diǎn)下,對(duì)程序進(jìn)行了設(shè)計(jì),在此不再贅述具體代碼,只將程序設(shè)計(jì)思路簡(jiǎn)單介紹一下:

a.commitCount的設(shè)置

在測(cè)試頁(yè)面設(shè)置輸入框,將此值作為參數(shù)輸入。

b.time的獲取

在提交日志之前和之后分別取系統(tǒng)時(shí)間,作差即得提交日志所用時(shí)間time

c.count的設(shè)置

為忽略批量提交日志每次獲取數(shù)據(jù)連接所用的時(shí)間,設(shè)置提交次數(shù)views,并在程序中將獲取數(shù)據(jù)連接的代碼寫在提交所有日志前(注意:寫在批量提交程序中每個(gè)批量提交都會(huì)建立數(shù)據(jù)連接,從而使得到的time誤差較大)。這樣提交一次日志只獲取一次數(shù)據(jù)連接。所以提交次數(shù)越大,得到的time就越接近提交日志所用的時(shí)間,可忽略獲取連接所用時(shí)間。

所以在頁(yè)面設(shè)置'提交次數(shù)'輸入框views,程序中設(shè)計(jì)一個(gè)循環(huán)來(lái)模擬多次批量提交日志,并計(jì)算count=commitCount*views

程序計(jì)算v=count/time 的值,顯示到頁(yè)面。

另外注意:插入數(shù)據(jù)時(shí),數(shù)據(jù)表原有數(shù)據(jù)條數(shù)對(duì)插入數(shù)據(jù)的速度也會(huì)有影響。為保證每次插入日志時(shí)數(shù)據(jù)表環(huán)境一致,在每次插入日志之后要?jiǎng)h除本次插入的日志。

四、測(cè)試執(zhí)行情況和測(cè)試結(jié)果

程序?qū)懞貌渴鸷螅f(wàn)事俱備,可以進(jìn)行測(cè)試了(注意:最好找網(wǎng)絡(luò)穩(wěn)定的時(shí)間進(jìn)行測(cè)試,得出的測(cè)試結(jié)果誤差較小)。

在頁(yè)面輸入“批量提交日志參數(shù)”commitCount和“提交次數(shù)”views,并記錄返回到頁(yè)面的v值。

“提交次數(shù)”設(shè)為50,人為設(shè)定“批量提交日志參數(shù)”commitCount,從100開(kāi)始,一次增加20,到200,發(fā)現(xiàn)v的值一直增大,之后將 commitCount分別以100、200等幅度向上增加,直到5000。發(fā)現(xiàn)commitCount=500時(shí),v值最大。

為排除網(wǎng)絡(luò)原因,每組數(shù)據(jù)測(cè)試兩次。具體測(cè)試數(shù)據(jù)形成了折線圖,如下圖:

特定配置下Oracle日志批量提交的最優(yōu)數(shù)量

所以在以上描述的特定測(cè)試環(huán)境下,oracle 日志批量提交的最優(yōu)數(shù)量是500 條。

以上就是測(cè)試的全過(guò)程,或許有人有更好的測(cè)試方法,以期共享。

主站蜘蛛池模板: 色偷偷888欧美精品久久久 | 一级片一级片一级片一级片 | 天天曰| 亚洲图片在线 | 狠狠久久| 国内偷拍久久 | 神马久久久久 | 看av网| 麻豆av免费看 | 高清亚洲 | 香蕉福利视频 | 黄色成人小视频 | 五月激情丁香婷婷 | 精品中文字幕在线 | 欧美a免费 | 精品国产乱码久久久久久蜜臀网站 | 精品成人一区二区三区 | 91精品综合久久久 | 日本www网站 | 青青偷拍视频 | 日本高清免费aaaaa大片视频 | 国产资源一区 | 男女插插插视频 | 六月综合激情 | 人人草在线 | 日韩精品成人 | 超碰在线人 | 国产一区不卡视频 | 欧美 日韩 中文字幕 | 久久天天 | 国产精品欧美日韩 | 在线观看欧美日韩视频 | 97精品一区二区 | 日韩专区中文字幕 | 婷婷午夜 | 成年人网站免费在线观看 | 黑鬼狂亚洲人videos | 青青青视频在线免费观看 | 国产精品久久久久久无人区 | 91久久综合亚洲鲁鲁五月天 | 久久视频在线 |