190 likes | 341 Views
ADO - част II. Оптимизация. Съвети за оптимизация ADO : Взимайте само колоните,които са ви необходими: Не използвайте “ select * … ” Използвайте съхранени процедури Използвайте подходящ курсор и заключване Индексирайте базата Денормализация Кеширане на данните Кеширане на обекти.
E N D
ADO - част II Оптимизация
Съвети за оптимизация ADO : • Взимайте само колоните,които са ви необходими: • Не използвайте “select * …” • Използвайте съхранени процедури • Използвайте подходящ курсор и заключване • Индексирайте базата • Денормализация • Кеширане на данните • Кеширане на обекти
Обектни променливи : За да повишите бързодействието използвайте обектни променливи 1 . Set firstName = rsUser(“u_fname”) - оптимизиран While not rsUser.EOF response.write firstName ……………………….. 2. While not rsUser.EOF response.write rsUser(“u_fname”)
Несвързани набори записи (не са описани подробно в слайда !!!)
Размер на кеша : rsUser.CashSize = 10 Брой записи, които ADO чете наведнъж от хранилището С данни
Услуги за отдалечени данни • Remote Data Services – RDS • DataFactory • Custom Component
Клиентски компоненти на RDS • Data Source Object • Client Data Cashe • Data Binding Manager
Обекти източник на данни Data Source Object - DSO • Контрол за таблични данни (Tabular Data Control - TDC) • Контрол RDS – Remote data Service • Java Data Base Connector • MSHTML DSO • XML DSO
TDC – Tabular Data Control <object classid=“clsid:333C7BC4-460F-11D0-BC04-0080….” Id=dsUser width =0 height =0> <param name=“dataURL” value=Users.csv> </object> CSV – Comma Separated Values function fillTDC () { // JS - инициализация dsUser.dataURL=‘Users.csv’; dsUser.Reset () ; }
Контрол за RDS данни – позволява и актуализация на данни <OBJECT CLASSID=“ clsid : BD96CD . ………..” ID=dsoUser > <param name=“connect” value=“DSN=xxxx”> <param name=“Server” value=“myserv2009”> <param name=“SQL” value=“SELECT * from Users”> </OBJECT> JS function window.onload() { dsoUsers.Connect = “DSN=xxxx”; dsoUsers.Server = “myserv2009”; dsoUsers.SQL =“SELECT * from Users” dsoUsers.Refresh (); }
Контрол MSHTML - само за IE Визуализира HTML данни , чиито атрибути задължително притежават ID <object id=dsoUsers data=“users.html”> ----------------------------------------------- <H1 ID=“u_fname”>koko</H1> <H2 ID=“u_lname”>petrov</H1> <H1 ID=“u_fname”>lolo</H1> <H2 ID=“u_lname”>georgiev</H1> ------------------------------------------------ u_fname u_lname Koko petrov Lolo georgiev
Data Binding with RDS – обвързване на данни и контроли <object classid=“BD96 ……………” ID=dsoUsers> <param name=“url” value=DataPage.asp> </object> <div datasrc=#dsoUsers datafld=“u_fname”></div> <div datasrc=#dsoUsers datafld=“u_lname”></div>
Навигация на данните • MoveFirst • MoveNext • MovePrevious • MoveLast dsoUsers.recordset.MoveFirst();
Динамично обвързване – dynamic data binding Пример: след като извършим свързването, свързваме Функция за опресняване на информация с даден бутон <button onclick=“resetData(“users”)”> function resetData(“strTable”) { dsoUsers.Connect=“Provider …..”; dsoUsers.Server=“…..” dsoUsers.SQL=“select * from ” +strTable”; dsoUsers.Refresh(); }
Актуализация наданни dsoData.CancelUpdate(); dsoData.SubmitChanges(); dsoData.recordset.Delete(); dsoData.recordset.AddNew();
Разрешаване на конфликти Function updateData() { Try dsoData.SubmitData(); dsoData.Refresh(); Catch (e) { var rsConflicts; Var adrecUnmodified=0x000008; Var adAffectAll = 3; Var adResyncUnderlyingValue =1 dsoData.recordset.resync(adAffectAll, adResynnUnderlyingVlues); rsConflicts =dsoData.recordset.clone(); While (!rsConflict.EOF) if rsConflicts.satus != daUnmodified){ // извършваме нещо със записа } rsConflicts.moveNext(); For (fldF = new Enumaration(rsConflicts.Fields)) !fldF.atEnd(); fldF.MoveNext(); If fldF.item().orifinalValue != fldF.item().underlyingValue) { извършва се действие } } }
Сървърно базиран компонент Обект DataSpace <object classid=“clsid:bd96……….” id=“dspDataSpase” > </object> Var dspDataSpase = new ActiveXObject(‘rds.dataspace’)
Трансфер на данни м/у сървър и клиент Създаване на сървърни компоненти Set srvObj = Server.CreateObject(myObject) Var objeUser = dspDataSpace.CreateObject(myObject)