Icon View Thread

The following is the text of the current message along with any replies.
Messages 1 to 10 of 21 total
Thread Multi-Core / Multi-Thread ?
Tue, Jul 16 2013 12:37 PMPermanent 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 PMPermanent Link

Raul

Globestar Systems

Team Elevate 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 AMPermanent 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 AMPermanent Link

Roy Lambert

NLH Associates

Team Elevate 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 AMPermanent 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. Smile

Barry
Thu, Jul 18 2013 5:59 AMPermanent Link

Roy Lambert

NLH Associates

Team Elevate Team Elevate

Barry

>It looks like if I want to really tax the EDB server, I'm going to need a lot more machines. Smile

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 PMPermanent 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".  Smile

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 PMPermanent 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 AMPermanent 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. Smile

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 AMPermanent Link

Roy Lambert

NLH Associates

Team Elevate 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 3Next Page
Jump to Page:  1 2 3
Image