Multithreading, interbase, firebird 2.1 above 3.5 problem
Posted: Wed 28 Dec 2011 12:53
For long time I have been working with UNIDAC version 3.5.12 . had no major problems thus far.
Due to need for compatibility with postgresql 9.1 database, Just recently instaled latest version of unidac 4.1.3. and in one of my projets noticed that interbase query's are dramaticaly slower than using old 3.5 version of unidac.
Am suspecting that problem lies in multithreading.
Application usualy executes procedure which creates average 20 seperate threads with tuniconection, tunitransaction and tuniquery in each, connecting to seperate remote databases for each thread and collecting large ammount of data.
Previously, total ammount of completed query requests where average 200-1000 results per second from all threads simultaneously. But after instaling latest unidac version, it dropet to average 11/s not matering how many simultaneous threads where runing, except when only one was executed, query speed was acceptable for that one single connection.
Have read that since ibdac version 3.6 there was added another property for safe multithreading using parameters EnsureThreadSafet or ThreadSafetyClientLibrary. So I am wondering if there must be a similar parameter for UNIDAC uniconnection which must be adjusted so that application runs as it was with previous versions of unidac.
Am curently using delphi 2010 with latest unidac 4.1.3 and Firebird versions varying from 1.5 to 2.1.3 (mostly 2.1.2).
Would be thankful for quick solution for this problem, I can provide with a small demo project if it will be necesary.
Due to need for compatibility with postgresql 9.1 database, Just recently instaled latest version of unidac 4.1.3. and in one of my projets noticed that interbase query's are dramaticaly slower than using old 3.5 version of unidac.
Am suspecting that problem lies in multithreading.
Application usualy executes procedure which creates average 20 seperate threads with tuniconection, tunitransaction and tuniquery in each, connecting to seperate remote databases for each thread and collecting large ammount of data.
Previously, total ammount of completed query requests where average 200-1000 results per second from all threads simultaneously. But after instaling latest unidac version, it dropet to average 11/s not matering how many simultaneous threads where runing, except when only one was executed, query speed was acceptable for that one single connection.
Have read that since ibdac version 3.6 there was added another property for safe multithreading using parameters EnsureThreadSafet or ThreadSafetyClientLibrary. So I am wondering if there must be a similar parameter for UNIDAC uniconnection which must be adjusted so that application runs as it was with previous versions of unidac.
Am curently using delphi 2010 with latest unidac 4.1.3 and Firebird versions varying from 1.5 to 2.1.3 (mostly 2.1.2).
Would be thankful for quick solution for this problem, I can provide with a small demo project if it will be necesary.