Login ProductsSalesSupportDownloadsAbout |
Home » Technical Support » ElevateDB Technical Support » Support Forums » ElevateDB Enhancement Requests and Suggestions » View Thread |
Messages 1 to 10 of 21 total |
Multi-Core / Multi-Thread ? |
Tue, Jul 16 2013 12:37 PM | Permanent Link |
Charalampos Michael | Hello,
Is EDB going to be multi-threaded to gain maximum performance on multi-core CPUs ? Thank you |
Tue, Jul 16 2013 12:54 PM | Permanent Link |
Raul Team Elevate | Can you be more specific on what you're asking ? EDB is already thread-safe and supports multi-threaded apps today (this has been the case since EDB shipped) as long as you follow the rules (basically unique session and other objects - see manual). EDB server is also mutli-threaded Raul On 7/16/2013 12:37 PM, Charalampos Michael wrote: > Is EDB going to be multi-threaded to gain maximum performance on multi-core CPUs ? |
Wed, Jul 17 2013 3:32 AM | Permanent Link |
Charalampos Michael | Dear Raul,
The engine itself to be multi-threaded on it's operations. Like NexusDB: http://www.nexusdb.com/support/index.php?q=node/509 * Multi-Threaded Engine - utilizes Symmetric Multi-Processor systems to the fullest extent Thank you Raul wrote: Can you be more specific on what you're asking ? EDB is already thread-safe and supports multi-threaded apps today (this has been the case since EDB shipped) as long as you follow the rules (basically unique session and other objects - see manual). EDB server is also mutli-threaded Raul On 7/16/2013 12:37 PM, Charalampos Michael wrote: > Is EDB going to be multi-threaded to gain maximum performance on multi-core CPUs ? |
Wed, Jul 17 2013 4:31 AM | Permanent Link |
Roy Lambert NLH Associates Team Elevate | Charalampos
* Multi-Threaded Engine - utilizes Symmetric Multi-Processor systems to the fullest extent I'd like to see more information on that rather than just a statement. Is it f/s and c/s or just c/s does it apply to the embedded engine? Does it mean each query / filter operation gets its own thread or that a single query can be spread across multiple threads or what. Roy Lambert |
Thu, Jul 18 2013 12:35 AM | Permanent Link |
Barry | >I'd like to see more information on that rather than just a statement. Is it f/s and c/s or just c/s does it apply to the >embedded engine? Does it mean each query / filter operation gets its own thread or that a single query can be >spread across multiple threads or what.
I agree. It would be nice if Tim gave a detailed explanation on this. I am using EDB C/S Unicode 2.12 B2 on an i5 (4 cores). In some crude testing of mine, if I run Resource Monitor from Task Manager (click on "Resource Monitor..." on Performance page) on the same machine that has the EDBSrvr running as a service ... I see edbsrvr.exe using 11 threads. If I open up a large multi-table query, the usage of one of the CPU's will jump to around 50%. Another CPU will also increase its usage, but only about 30%. When that query is still running, I start another long query on another machine, another CPU usage will increase to 50%. I can still open other tables quite quickly so there wasn't much degradation by the server when it was busy handling the long queries (getting the query to complete takes about 2 minutes). So the EDBSrvr is definitely using more than one CPU and multple threads. Since I am a glutton for punishment, I started 2 more long queries running and all 4 cores were around 50%. The overall system performance on the server machine was a respectable 25% of CPU being used with 4 of these queries running. It looks like if I want to really tax the EDB server, I'm going to need a lot more machines. Barry |
Thu, Jul 18 2013 5:59 AM | Permanent Link |
Roy Lambert NLH Associates Team Elevate | Barry
>It looks like if I want to really tax the EDB server, I'm going to need a lot more machines. Nah - just start up multiple instances on your clients and have them all request a big massive sql something simultaneously <vbg> Roy |
Fri, Jul 19 2013 12:34 PM | Permanent Link |
Barry | >Nah - just start up multiple instances on your clients and have them all request a big massive sql something
>simultaneously <vbg> Roy, You should write a book "How to lose clients in 10 easy SQL statements". Let me continue the ball rolling with SQL statement #2: -- 100 random employees get a random pay raise of up to 20% Update PayRoll set Salary = Salary * (1+ (rand(21))/100) order by Rand() range 1 to 100 Barry |
Fri, Jul 19 2013 9:15 PM | Permanent Link |
Charalampos Michael | Well i'm talking about at engine level using somekind of "Parallelism" ...
http://en.wikipedia.org/wiki/Parallel_computing Like omnithreadlibrary does ... eg, paraller "for" etc |
Sat, Jul 20 2013 12:38 AM | Permanent Link |
Barry | >Well i'm talking about at engine level using somekind of "Parallelism" ...
>Like omnithreadlibrary does ... eg, paraller "for" etc The EDBSrvr is multi-threaded and does use multiple CPU's. The Omni threading library is just another library that does muilti threading in Delphi. It may be better than Embarcadero's, and is certainly something Tim can test to see if it is worth implementing. As far as multi-threading is concerned, there are only so many CPU's you can cram into a box. You could have 20 CPU's in the server and the bottleneck would then be the network card(s). I think the best way to achieve "parallelism" is to go horizontally (many computers), not vertically (one computer with multiple CPU's). Going horizontally offloads the work to multiple computers, as in a database cluster. MySQL can be set up in a cluster which consists of several data nodes, management nodes, and application nodes. Each node is a computer all connected together using high speed controllers. The data nodes usually have the table data stored completely in memory, and large tables can be split among other data nodes. When a query is executed, the management node sends the request to several data nodes and when the results come back, it is sent to the application node. So many computers in the cluster can share its resources: CPU, memory, and network cards to execute a single query. A cluster could consist of a couple hundred computers, and each computer could have 16 processors and 64GB of RAM! You can never get this type of parallelism using one computer, not matter how many CPU's you try and fit into it. In a cluster, there is also redundancy so if a data node fails, the other node that has that part of the table will take over. Same with management nodes and application nodes. Clusters can also be part of other clusters, so if one cluster goes down, the other cluster(s), usually in a remote location, will take over. I mentioned cluster databases to Tim last year but I doubt he'll find time to implement it in EDB v3. It's a little tricky, to say the least. For more info on MySQL Clusters, see http://www.oracle.com/us/products/mysql/wp-high-availability-webrefarchs-362556.pdf Barry |
Sat, Jul 20 2013 6:51 AM | Permanent Link |
Roy Lambert NLH Associates Team Elevate | Barry et al
Might I humbly suggest that by the time any of us actually require such capabilities we will either have retired or have sufficient money to pay someone else to worry about it! Roy Lambert |
Page 1 of 3 | Next Page » | |
Jump to Page: 1 2 3 |
This web page was last updated on Friday, April 19, 2024 at 07:09 AM | Privacy PolicySite Map © 2024 Elevate Software, Inc. All Rights Reserved Questions or comments ? E-mail us at info@elevatesoft.com |