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

ODAC(V9.5.15) 学习笔记(十五)数据离线模式的更多相关文章

  1. ODAC(V9.5.15) 学习笔记(五)TSmartQuery

    TSmartQuery是相对于TOraQuery更简洁的数据集,其成员如下 名称 类型 说明 Expand Boolean 缺省为False,如果为True,则表示无论SQL中罗列的字段是哪些,数据集 ...

  2. ODAC(V9.5.15) 学习笔记(十七)主从模式

    主从模式(Master/Detail mode)是指建立主表和从表关系的多个数据集集合模式. 1. 关系设置 要设置主从模式,必须有一个主表数据集(TDataSet)和一个从表数据集(TDataSet ...

  3. python3.4学习笔记(十五) 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)

    python3.4学习笔记(十五) 字符串操作(string替换.删除.截取.复制.连接.比较.查找.包含.大小写转换.分割等) python print 不换行(在后面加上,end=''),prin ...

  4. ODAC(V9.5.15) 学习笔记(一)总论

    一直在使用ODAC做开发,没时间仔细研究一下,目前采用的是3层结构,ODAC+TDataSetProvider+TClientDataSet做数据处理,也没有多大问题.下一步要开发B/S的程序了,打算 ...

  5. ODAC(V9.5.15) 学习笔记(三)TOraSession(3)

    3. 选项 TOraSession的Options有如下内容 名称 类型 说明 CharLength TCharLength 单个字符的长度,缺省0,表示从服务器获取对应的字符集中单个字符长度 Cha ...

  6. ODAC(V9.5.15) 学习笔记(三)TOraSession(1)

    1. 连接相关 名称 类型 说明 ConnectDialog 执行连接对话框控件 Connected Boolean 连接状态,通过函数Connect和Disconnect连接或关闭数据库连接,并触发 ...

  7. (转载)西门子PLC学习笔记十五-(数据块及数据访问方式)

    一.数据块 数据块是在S7 CPU的存储器中定义的,用户可以定义多了数据块,但是CPU对数据块数量及数据总量是有限制的. 数据块与临时数据不同,当逻辑块执行结束或数据块关闭,数据块中的数据是会保留住的 ...

  8. (C/C++学习笔记) 十五. 构造数据类型

    十五. 构造数据类型 ● 构造数据类型概念 Structured data types 构造数据类型 结构体(structure), 联合体/共用体 (union), 枚举类型(enumeration ...

  9. ODAC (V9.5.15) 学习笔记(二十)大数据量获取处理

    ODAC获取数据的效率比较高,在Web程序中希望能够更快获取第一页的数据时,可以有几种方式: 1.在数据库中进行分页处理: 2.获取所有数据,只是快速返回第一页数据. 第一种方案对应用服务器资源消耗最 ...

随机推荐

  1. 转:DataTable的Compute方法的应用

    转自:http://www.cnblogs.com/hfliyi/archive/2013/01/08/2851944.html 项目中遇到计算平均值.标准偏差.平均值+标准偏差.平均值+2倍标准偏差 ...

  2. jQuery的XX如何实现?——3.data与cache机制

    往期回顾: jQuery的XX如何实现?——1.框架 jQuery的XX如何实现?——2.show与链式调用 -------------------------- 源码链接:内附实例代码 jQuery ...

  3. 生成月初月末便于拼接sql

    for ($i=1; $i < 13; $i++) { $date = strtotime(date("2015-$i-01")); $firstday = date(&qu ...

  4. iOS开发——高级技术&签名机制

    签名机制 最近看了objc.io上第17期中的文章 <Inside Code Signing> 对应的中文翻译版 <代码签名探析> ,受益颇深,对iOS代码签名机制有了进一步的 ...

  5. Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/ma ven/cli/Maven/java与javac版本不一致问题

    编译的时候 中出现如下异常: Exception in thread "main" Java.lang.UnsupportedClassVersionError: org/apac ...

  6. Axios、Lodash、TweenJS

    Axios是一个基于promise的HTTP库 http://chuansong.me/n/394228451820 Lodash是一个JavaScript的函数工具集 http://www.css8 ...

  7. python中xrange和yield的用法

    相信很多人对xrange和yield都不是很清楚,网上很多文章也是写的云里雾里的,今天我用最简单的例子给大家说下. 说起xrange的时候就一定要提range,其实xrange 用法与 range 完 ...

  8. 关于PF_RING/Intel 82599/透明VPN的一些事

    接近崩溃的边缘,今天这篇文章构思地点在医院,小小又生病了,宁可吊瓶不吃药,带了笔记本却无法上网,我什么都不能干,想了解一些东西,只能用3G,不敢 开热点,因为没人给我报销流量,本周末我只有一天时间,因 ...

  9. 解决VS2010中在项目上右键鼠标,无“添加STS引用”菜单的问题

    解决方法:将Windows Identity Foundation SDK文件夹C:\Program Files (x86)\Windows Identity Foundation SDK\v3.5\ ...

  10. Apex Design Patterns

    Apex allows you to build just about any custom solution on the Force.com platform. But what are the ...