Megosztás:


Kurzorok blokkolása

Sok alkalmazás jelentős időt tölt az adatok hálózaton keresztüli eljuttatásával. Ennek az időnek egy része azzal telik, hogy ténylegesen átviszi az adatokat a hálózaton, és ennek egy része a hálózati terhelésre, például az illesztőprogram által az adatsorok lekérésére irányuló hívásra kerül. Az utóbbi idő csökkenthető, ha az alkalmazás hatékonyan használja a block vagy fat kurzorokat, amelyek egyszerre több sort is visszaadhatnak.

Az alkalmazások mindig használhatnak blokkkurzort. Azon adatforrások esetén, amelyekből egyszerre csak egy sor érhető el, a blokkkurzorokat szimulálni kell az illesztőprogramban. Ez több egysoros adathalász végrehajtásával elvégezhető. Bár ez nem valószínű, hogy bármilyen teljesítménynövekedést biztosít, lehetőségeket nyit meg az alkalmazások számára. Az ilyen alkalmazások ekkor teljesítménynövekedést tapasztalnak, mivel a DBMS-ek natív módon implementálják a blokkkurzorokat, és az ezekhez a DBMS-ekhez társított illesztőprogramok elérhetővé teszik őket.

A blokkkurzort tartalmazó egyetlen beolvasás során visszaadott sorokat sorokkészletnek nevezzük. Fontos, hogy ne keverje össze a sorhalmazt az eredményhalmazsal. Az eredményhalmazt az adatforrás tartja karban, míg a sorhalmazt az alkalmazáspufferek tartják karban. Bár az eredményhalmaz ki van javítva, a sorhalmaz nem – minden egyes új sor beolvasásakor megváltoztatja a pozíciót és a tartalmat. Ahogyan egy egysoros kurzor, például a hagyományos, csak előre mutató SQL-kurzor egy aktuális sorra mutat, a blokkkurzor a sorkészletre mutat, amely az aktuális sorokra is gondolhat.

Ha több sor lekérésekor egyetlen sorban hajt végre műveleteket, az alkalmazásnak először meg kell jelölnie, hogy melyik sor az aktuális sor. Az aktuális sorra az SQLGetData hívásai, valamint a helyhez igazított frissítési és törlési utasítások szükségesek. Amikor a blokkkurzor először egy sorkészletet ad vissza, az aktuális sor a sorhalmaz első sora. Az aktuális sor módosításához az alkalmazás meghívja az SQLSetPos vagy az SQLBulkOperations parancsot (könyvjelzővel frissítve). Az alábbi ábrán az eredményhalmaz, a sorkészlet, az aktuális sor, a sorhalmaz kurzora és a blokkkurzor kapcsolata látható. További információkért lásd: A blokkkurzorok használata ennek a szakasznak a későbbi részében, valamint a pozicionált frissítési és törlési utasítások és az adatok frissítése az SQLSetPos használatával.

Következő, Előző, Első és Utolsó sorhalmazok beolvasása

Az, hogy a kurzor blokk típusú, független attól, hogy görgethető-e. A jelentésalkalmazásban végzett munka nagy része például sorok beolvasásával és nyomtatásával foglalkozik. Emiatt a leggyorsabban csak előre mutató, blokkkurzorral fog működni. Csak előre mutató kurzort használ a görgethető kurzor költségeinek elkerüléséhez, a blokkkurzor pedig a hálózati forgalom csökkentéséhez.

Ez a szakasz a következő témaköröket tartalmazza.