to mousetjq
“一般是一个IBDatabase和一个IBTrabsaction相对应。除非你是在一个页面对几个表格进行操作,而且提交时又要分开提交(即修改完成不是同时提交所有的操作),那就必须一个表格对应一个IBTransaction控件。”
你的这样的做法不常规。一般,一个线程里只使用一个连接(一个IBDatabase和一个IBTrabsaction),一个线程里如果你需要太多的连接,你要考虑你的设计方法了。
上面第一点, 我以为jdbc/odbc/ole_db类的控件, 和用IB api类的控件是有分别的.
A) Delphi --> ODBC/JDBC/OLE_DB --> IB API (或 BLR language) --> DB表
B) Delphi --> IB API(或 BLR language) --> DB表
所以 (B), 如ibx, ibo, fibplus 的效率总是会比 (A), 如BDE 的为高.
第三点: IB 是分 Classis Server (每session有独立thread) 和 Super Server (每session 共用相同thread), 两者都各有长处. Oracle用前者以提升其稳定性, 但session login时间较长, 用较多内存; MS SQL是用後者来加快速度, 共用相同内存, 但个别session会受其他session所影响.