<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    MDA/MDD/TDD/DDD/DDDDDDD
    posts - 536, comments - 111, trackbacks - 0, articles - 0
      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理
    resultSetType 的可選值有: ResultSet.TYPE_FORWARD_ONLY ResultSet.TYPE_SCROLL_INSENSITIVEResultSet.TYPE_SCROLL_SENSITIVE
    1)
    TYPE_FORWARD_ONLY是默認(rèn)值, 僅支持結(jié)果集forward ,不支持滾動(dòng),也不是 SENSITIVE的
    2)
    ResultSet.TYPE_SCROLL_INSENSITIVE,
    支持結(jié)果集backforwardlastfirst 等操作,對(duì)其它session對(duì)數(shù)據(jù)庫中數(shù)據(jù)做出的更改是不敏感的
    原因:JDBC對(duì)數(shù)據(jù)庫進(jìn)行數(shù)據(jù)查詢executeQuery時(shí),數(shù)據(jù)庫會(huì)創(chuàng)建查詢結(jié)果的cache和cursor,如下面sql:
    ??? select name,id from foo
    ??? 用jdbc執(zhí)行上面的sql語句時(shí),數(shù)據(jù)庫會(huì)把foo表所有記錄的name和id字段緩存到cache中,之后cache和真正的數(shù)據(jù)庫數(shù)據(jù)文件沒有任何聯(lián)系了,foo表發(fā)生的改變?cè)诓樵兺瓿珊蟛粫?huì)自動(dòng)同步到cache上去,因此TYPE_SCROLL_INSENSITIVE對(duì)選擇數(shù)據(jù)做出的更改是不敏 感,不可見。
    3)ResultSet.TYPE_SCROLL_SENSITIVE
    支持結(jié)果集backforwardlastfirst 等操作,對(duì)其它session對(duì)數(shù)據(jù)庫中數(shù)據(jù)做出的更改是敏感的,即其他session 修改了數(shù)據(jù)庫中的數(shù)據(jù),會(huì)反映到本結(jié)果集中
    上面的select name,id from foo語句用TYPE_SCROLL_SENSITIVE的Statement來執(zhí)行,會(huì)轉(zhuǎn)化成以下的sql語句:
    ??? select rowid from foo
    ??? 數(shù)據(jù)庫這時(shí)候是把foo表所有記錄的rowid緩存到cache中,用戶代碼在fetch記錄時(shí),再繼續(xù)做以下查詢:
    ??? select name,id from foo where rowid=?
    ??? 因此這時(shí)候發(fā)生的查詢是實(shí)時(shí)從真正的數(shù)據(jù)庫數(shù)據(jù)文件中取,因此對(duì)期間發(fā)生的數(shù)據(jù)更改是可見的,敏感的。但是這種可見性僅限于update操作,而 insert和delete同樣是不可見的。因?yàn)槿绻樵儼l(fā)生在insert之前,insert生成的rowid并不會(huì)反應(yīng)在cache中的rowid結(jié)果集上。在一個(gè)記錄的rowid已經(jīng)緩存到cache中,這時(shí)候被刪除了,但一般數(shù)據(jù)庫的刪除是標(biāo)記刪除,也就是說rowid對(duì)應(yīng)那行記錄并沒有真正從數(shù) 據(jù)庫文件中抹去,一般是可以再次取到記錄的。

    結(jié)論:是否SENSITIVE與fetchsize沒有什么關(guān)系。是否SENSITIVE是告訴數(shù)據(jù)庫如何作查詢的緩存。fetchsize是客戶端jdbc的設(shè)置。

    另外oracle的
    fetchsize默認(rèn)為10
    stmt.setFetchSize(0)時(shí)stmt.getFetchSize()=1
    0
    stmt.setFetchSize(1)時(shí)stmt.getFetchSize()=1

    另外如果查詢的sql復(fù)雜時(shí),我發(fā)現(xiàn)就算設(shè)為
    ResultSet.TYPE_SCROLL_SENSITIVE也不起作用,如
    select t.*? from test t left join testp p on t.pid=p.id where p.title like '%國%',在運(yùn)行中修改title的值,發(fā)現(xiàn)仍然可以取到。是否可以理解為SENSITIVE只對(duì)查詢的主表起作用。

    摘自:
    http://www.javaeye.com/topic/128636
    http://www.javaeye.com/topic/560109
    http://www.javaeye.com/topic/418604
    主站蜘蛛池模板: 亚洲av成人无码网站…| 四虎影在线永久免费观看| 一级一级一片免费高清| 丁香婷婷亚洲六月综合色| 国产av无码专区亚洲av桃花庵| 国产成人免费全部网站| 久久精品免费全国观看国产| 久久狠狠躁免费观看2020| 久久国产免费直播| 视频一区在线免费观看| 亚洲成AV人片高潮喷水| 久久精品国产亚洲αv忘忧草| 亚洲视频日韩视频| 亚洲最大福利视频网站| 亚洲爆乳精品无码一区二区三区 | 亚洲第一区在线观看| 成人免费无码大片A毛片抽搐 | 中文字幕人成人乱码亚洲电影| 国产色爽女小说免费看| 全免费A级毛片免费看网站 | 亚洲 日韩经典 中文字幕| 亚洲免费视频播放| 亚洲一区二区三区免费在线观看| 亚洲视频免费在线观看| 亚洲国产精品久久| 中文字幕亚洲精品资源网| 久久久久亚洲Av无码专| 亚洲视频精品在线| 亚洲精品成人久久| 亚洲午夜电影一区二区三区| 亚洲人成网站在线观看播放青青| 亚洲日韩中文字幕天堂不卡| 亚洲成a人片在线观看播放| 亚洲天堂中文字幕在线观看| 亚洲丰满熟女一区二区v| 亚洲最大的黄色网| 亚洲欧洲国产综合AV无码久久 | 成人午夜性A级毛片免费| 免费无码看av的网站| 国产又粗又长又硬免费视频| 免费一级做a爰片久久毛片潮喷|