zoukankan      html  css  js  c++  java
  • ODAC(V9.5.15) 学习笔记(十五)数据离线模式

    数据离线模式(Disconnected Mode)是指数据库只有在需要的时候才连接,数据的处理放在客户端内存缓冲区中完成。这样做最大的好处是减少了网络资源依赖,对数据库服务器的资源开销和压力也减少。如果客户端需要经常反复地连接和关闭数据库连接,也可以采用ODAC的连接池模式。

    要实现数据离线模式,需要完成以下几个步骤:

    1、设置连接组件的选择项,将离线模式设为True,自动提交属性保持缺省值True,如下:

    TCustomDAConnection.Options.DisconnectedMode := True;

    TCustomDAConnection. AutoCommit := True;

    此时数据库连接会在数据集进行数据获取、SQL执行等动作时自动开启,并在执行完成后自动关闭,所做的数据变更操作自动提交事务。

    2、开启连接组件的连接池功能,将Pooling设置为True,如下:

    TCustomDAConnection.Pooling := True;

    3、可以设置数据集的参数,开启本地缓存,包括:

    //启动本地缓存模式

    TDataSet.CachedUpdates := True;

    //一次性获取全部数据,对数据量大的表格慎用

    TCustomDADataSet.FetchAll := True;

    //开启主从关系的本地缓冲

    TCustomDADataSet.Options.LocalMasterDetail := True;

    //开启网络自动连接功能

    TCustomDAConnection.Options.LocalFailover := True;

    //批量提交数大于缺省值1,减少网络通信次数

    TCustomDADataSet.Options.UpdateBatchSize := 10;

    需要说明的有几点:

    1、数据集的FetchAll为True时,会一次性获取全部数据,然后自动关闭连接,对已数据量少的表可以这样做,但是对于大数据量的表要慎重,或消耗较长时间。当FetchAll为False时,如果数据没有全部获取到本地,则连接不会关闭,连接会持续到所有数据均获取到本地后才自动关闭。

    2、如果数据库连接手动显性开启了事务,则连接不会在SQL执行后自动关闭,而是要等待手动显性事务提交或回滚后再关闭。

    3、当一个Query类控件手动显性执行了Prepare命令,连接不会在SQL执行后自动关闭,而是要等待手动显性UnPrepare命令后或SQL变动后再关闭。

    4、如果数据集采用了Lock模式锁定当前记录(TCustomDADataSet.LockMode = lmLockImmediate),则连接会在用户编辑记录期间一直开启,直到用户Post或Cancel记录编辑。

    以上2、3、4说明:凡是显性手动动作将影响数据库连接的自动关闭功能,需要手动显性反向操作后,数据库连接才会自动关闭。

    5、如果数据库连接的网络不稳定,可以开启网络自动连接功能(LocalFailover := True),如果网络很稳定则可以不要。

    6、在数据提交数据库服务器时,可以通过设置批量处理的数量(UpdateBatchSize := 10),让客户端一次性提交多个处理,减少网络通信次数,从而减少网络风险,对网络不稳定的情况有用。

  • 相关阅读:
    abs() 与fabs() 的区别辨析
    TCP服务端如何判断客户端断开连接学习
    数据结构与算法李春葆 第二章思维导图
    数据结构与算法思维导图第一章
    关于临时表的操作
    关于 ANSI_NULLS和QUOTED_IDENTIFIER
    临时表和视图的区别
    关于CancellationToken的解释
    在项目中添加signalr.js
    数据库存储过程的写法
  • 原文地址:https://www.cnblogs.com/ChinaEHR/p/4471915.html
Copyright © 2011-2022 走看看