1.建立FDManager的ConnectionDef。并设置此Pooling为True.

2.建立Thread类进行多个FDConnection连接DB。

3.本列是oracle远程数据.如下图:

Open pooling是建立FDManger中的Connection. Thread按钮是建立连接的测试。右边的空白是显示连接时间(为Ticks)

时间单位换算:

1秒=1000毫秒
1毫秒=1000微秒
1微秒=1000纳秒
1纳秒=1000皮秒
1皮秒=1000飞秒
在C#中,1Ticks = 100纳秒
 
以下为代码:

unit Unit1;

interface

uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, FireDAC.Stan.Intf, FireDAC.Stan.Option,
FireDAC.Stan.Error, FireDAC.UI.Intf, FireDAC.Phys.Intf, FireDAC.Stan.Def,
FireDAC.Phys, Vcl.Buttons, FireDAC.Comp.Client, FireDAC.Stan.Pool,
FireDAC.Stan.Async, FireDAC.VCLUI.Wait, Data.DB, Vcl.StdCtrls,
FireDAC.Moni.Base, FireDAC.Moni.RemoteClient,FireDAC.DApt,
FireDAC.Phys.OracleDef, FireDAC.Phys.Oracle,System.Diagnostics; type TForm1 = class(TForm)
FDManager1: TFDManager;
SpeedButton1: TSpeedButton;
FDConnection1: TFDConnection;
BitBtn1: TBitBtn;
Memo1: TMemo;
FDMoniRemoteClientLink1: TFDMoniRemoteClientLink;
FDPhysOracleDriverLink1: TFDPhysOracleDriverLink;
procedure BitBtn1Click(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end; TDBThread=class(TThread)
private
FForm:TForm1;
FConn:TFDConnection;
FQry :TFDQuery;
procedure exePrc;
public
procedure Execute;override;
constructor Create(AForm:TForm1);
destructor Destroy;override;
end;
var
Form1: TForm1; implementation {$R *.dfm} procedure TForm1.BitBtn1Click(Sender: TObject);
var
i:integer;
ATrhed:TDBThread;
AStopWatch:TStopwatch;
j:Int64; begin
for i := to do //如果产生的Connection大于连接池的数量则会报错提示
begin
ATrhed:= TDBThread.Create(self);
end;
FDConnection1.ConnectionDefName :='oracle' ;
FDConnection1.LoginPrompt := false; //以下为不用连接池,时间就比较长
AStopWatch := TStopwatch.StartNew;
FDConnection1.Connected := true;
AStopWatch.Stop;
i:=AStopWatch.ElapsedTicks;
self.Memo1.Lines.Add('not pooling: '+j.ToString()+' Ticks'); end; procedure TForm1.SpeedButton1Click(Sender: TObject);
var
conn: IFDStanConnectionDef;
begin
FDManager1.Close;
conn:= self.FDManager1.ConnectionDefs.AddConnectionDef;
conn.Name :='ora_test';
conn.Params.DriverID :='Ora';
conn.Params.UserName :='admin';
conn.Params.Password :='pwd';
conn.Params.Database := 'testdb';
conn.Params.Pooled := True; //启用pool
conn.Params.PoolMaximumItems := ; //10.2.3中默认的最大池为50.一般够用
conn.Apply;//此方法可以不用
FDManager1.Open;//产生池
end; { TDBThread } constructor TDBThread.Create(AForm: TForm1);
begin
FreeOnTerminate := True;
FForm := AForm;
FConn := TFDConnection.Create(nil);
FQry := TFDQuery.Create(nil);
FQry.Connection := FConn;
FConn.ConnectionDefName := AForm.FDManager1.ConnectionDefs.ConnectionDefByName('ora_test').Name;//自动调用池,相当于FDmanager.AcquireConnection方法。最好按此列调用
inherited Create(false);; end; destructor TDBThread.Destroy;
begin
FConn.Free;
FQry.Free;
inherited;
end; procedure TDBThread.Execute;
begin
FQry.Close;
FQry.Open('select sysdate from dual');
Synchronize(exePrc);
end; procedure TDBThread.exePrc;
var
AStopWatch:TStopwatch;
i:Int64;
begin
AStopWatch := TStopwatch.StartNew;
FConn.Connected := True;
AStopWatch.Stop;
i:=AStopWatch.ElapsedTicks;
FForm.Memo1.Lines.Add('pooling: '+i.ToString()+' Ticks');
end; end.

运行结果:

 

FireDac Pooling的更多相关文章

  1. FIREDAC FDConnection 连接池 连接串

    一.FDConnection 连接池 http://docs.embarcadero.com/products/rad_studio/firedac/frames.html?frmname=topic ...

  2. 如何理解 卷积 和pooling

    转自:http://blog.csdn.net/malefactor/article/details/51078135 CNN是目前自然语言处理中和RNN并驾齐驱的两种最常见的深度学习模型.图1展示了 ...

  3. FireDAC 连接SQL Server一些要注意的地方

    TFDConnection: FetchOptions.Mode 设置为fmAll, 返回全部结果, 否则默认只返回前50条, 效果与open以后再执行FetchAll一样 Specifies how ...

  4. win2008使用FireDac连接ORACLE数据库问题

    2008上装DELPHI XE7,无论用FireDac 还是Ado都连不上ORACLE数据库 --------------------------- Debugger Exception Notifi ...

  5. FireDAC 连接access MDB数据库的方法

    Use Cases Open the Microsoft Access database. DriverID=MSAcc Database=c:\mydata.mdb Open the Microso ...

  6. 谈谈pooling?

    使用pooling的目的之一是获取一定的特征不变性,目前用的比较多的是Max..,非线性对于Deep的重要性不用多说,pooling是主要贡献之一,当然少不了relu类的激活函数.pooling还有一 ...

  7. TensorFlow中max pooling层各参数的意义

    官方教程中没有解释pooling层各参数的意义,找了很久终于找到,在tensorflow/python/ops/gen_nn_ops.py中有写: def _max_pool(input, ksize ...

  8. FireDac 的RecordCount 相关测试 记录。

    unit Unit4; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System ...

  9. pooling的原理与Python实现

    本文首先阐述pooling所对应的操作,然后分析pooling背后蕴含的一些道理,最后给出pooling的Python实现. 一.pooling所对应的操作 首先从整体上对pooling有一个直观的概 ...

随机推荐

  1. CMU Bomblab 答案

    室友拉我做的... http://csapp.cs.cmu.edu/3e/labs.html Border relations with Canada have never been better. ...

  2. ERROR: Found lingering reference file hdfs

    Found lingering reference异常 ERROR: Found lingering reference file hdfs://jiujiang1:9000/hbase/month_ ...

  3. JS 中 call 和 apply 的理解和使用

    本文受到了知乎问题 如何理解和熟练运用js中的call及apply? 的启发. obj.call(thisObj, arg1, arg2, ...); obj.apply(thisObj, [arg1 ...

  4. GDOI2015的某道题目

    分析: 考试的时候由于一些神奇的原因(我就不说是什么了)...没有想$C$题,直接交了个暴力上去... 然后发现暴力的数组开的太大,由于矩阵乘法的需要做$m$次初始化,所以只拿到了10分... 我们一 ...

  5. 【Foreign】划分序列 [线段树][DP]

    划分序列 Time Limit: 20 Sec  Memory Limit: 256 MB Description Input Output 仅一行一个整数表示答案. Sample Input 9 4 ...

  6. 用python写爬虫笔记(一)

    https://bitbucket.org/wswp/code   http://example.webscraping.com http://www.w3schools.com selenium.g ...

  7. 转:Android 的一些比较好的开源代码项目

    转自:http://blog.csdn.net/zengyangtech/article/details/7019439 Android PDF 阅读器 http://sourceforge.net/ ...

  8. [Leetcode Week2]Sort Colors

    Sort Colors题解 原创文章,拒绝转载 题目来源:https://leetcode.com/problems/sort-colors/description/ Description Give ...

  9. Linux ALSA介绍

    1. 介绍 ALSA(即Advanced Linux Sound Architecture), 是目前Linux的主流音频体系结构, 提供了音频和MIDI的支持, 其架构图如下所示 TIP: 笔者的代 ...

  10. kuangbin带你飞 生成树专题 : 次小生成树; 最小树形图;生成树计数

    第一个部分 前4题 次小生成树 算法:首先如果生成了最小生成树,那么这些树上的所有的边都进行标记.标记为树边. 接下来进行枚举,枚举任意一条不在MST上的边,如果加入这条边,那么肯定会在这棵树上形成一 ...