• 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),让客户端一次性提交多个处理,减少网络通信次数,从而减少网络风险,对网络不稳定的情况有用。

  • 相关阅读:
    个人作业——软件产品案例分析
    项目Beta冲刺(团队)随笔集
    【Alpha】随笔集合
    个人作业——软件工程实践总结作业
    用户调查报告
    项目Beta冲刺(团队)总结
    项目Beta冲刺(团队)第七天
    项目Beta冲刺(团队)第六天
    项目Beta冲刺(团队)第五天
    项目Beta冲刺(团队)第四天
  • 原文地址:https://www.cnblogs.com/ChinaEHR/p/4471915.html
Copyright © 2020-2023  润新知