Solved

how to use multiple instance of a db connection with multiple thread in C#.Net

Posted on 2012-12-23
9
528 Views
Last Modified: 2013-01-22
I have a console application(C#). I want to use more than one instance of mysqlconnection.
I have  a master table with 50000 rows. I want to split the data in 10 set and want to run some procedures parallel with the data. please help me.
0
Comment
Question by:dynamicweb09
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
  • 2
  • 2
  • +1
9 Comments
 
LVL 1

Expert Comment

by:igordevelop
ID: 38717968
Hi,

Using multiple instances is usually something that developers want to avoid. In fact, you should use the same instance for multiple operations. Make the connection instance to be global so you can access it from any code-block and just play with its state (open it and close it after use each time).

Example, make this global, public:
SqlConnection conn = new SqlConnection("ConnectionString");

Then, every time you need to use this connection don't forget to open and close it, or if you use it for parallel execution do not close it after all queries are executed;

conn.Open();
//run queries
conn.Close();

Let me know if anything.

Regards,
Igor
0
 
LVL 1

Author Comment

by:dynamicweb09
ID: 38717980
Thanks Igor for your reply.

Actually I want to run same procedure with different parameter  parallel y. please help me
0
 
LVL 40

Assisted Solution

by:Jacques Bourgeois (James Burger)
Jacques Bourgeois (James Burger) earned 167 total points
ID: 38718287
You do not need multiple instances of the connection, you need multiple instances of the type of object in which you receive the data (collection, DataTable, DataGridView).

The same Connection object can be used with multiple Command objects, each of whom having different parameters, and they can all use the same Connection. However, by default, you need to run the commands one after the other. You cannot run multiple command at the same time.

SQL Server has a mode that enables multiple commands to run simultaneously on the same connection, but I cannot say if it is available for MySql. It is called Multiple Active Result Sets (MARS). You might want to search your MySql documentation to know if it is available.

I would also point out that I would not use a global variable as suggested by Igor. Global variables are a pain to debug. When you have a problem with one of those, you need to look all over the place in the application.

ADO.NET has been built in order to enable to use local variables for connections. Using those, if you have a problem, your search is limited to the method in which you have created the variable. This makes debugging and maintenance a lot easier.
0
U.S. Department of Agriculture and Acronis Access

With the new era of mobile computing, smartphones and tablets, wireless communications and cloud services, the USDA sought to take advantage of a mobilized workforce and the blurring lines between personal and corporate computing resources.

 
LVL 1

Author Comment

by:dynamicweb09
ID: 38718335
Can I call Asynchronously? if yes then how?
0
 
LVL 40
ID: 38718963
Once again, I speak of my experience with SQL Server, so I am not sure that MySql has those, but the Command object has a series of BeginExecute methods that runs asynchronously. Since all the ADO.NET libraries follow the same model, you might have those on your side.
0
 
LVL 75

Assisted Solution

by:käµfm³d 👽
käµfm³d   👽 earned 83 total points
ID: 38720417
@JamesBurger
SQL Server has a mode that enables multiple commands to run simultaneously on the same connection, but I cannot say if it is available for MySql. It is called Multiple Active Result Sets (MARS).
Please cite a reference that indicates MARS queries in parallel.

http://technet.microsoft.com/en-us/library/cc966385.aspx

It is probably as important to delimit what MARS is not:

Parallel execution: Though MARS enables more than one request to be submitted under the same connection, this does not imply that they will be executed in parallel inside the server. MARS will multiplex execution thread between outstanding requests in the connection, interleaving at well defined points.
0
 
LVL 40
ID: 38720424
@kaufmed

As stated in your reference, MARS works through "Interleaved execution". It is my understanding and my experience that from the application point of view, you feel that the result is the same as if the stuff was working in real parallel execution. If you start a long asynchrone query, and follow it with a short asynchrone query, the second one will finish before the first.
0
 
LVL 75

Expert Comment

by:käµfm³d 👽
ID: 38720652
I don't believe that is guaranteed, though. The reference states "at well-defined points." Do you know what those "well-defined points" are? Is it guaranteed that a short query will finish before a long query?
0
 
LVL 40

Accepted Solution

by:
Jacques Bourgeois (James Burger) earned 167 total points
ID: 38720795
Unfortunately, I am not in the secrets of the gods. And I never explecitely tested for that. All I can say by my experience is that you get the feeling that the queries are executing at the same time, and in my book, how the user feels is more important than what really happens.
0

Featured Post

Online Training Solution

Drastically shorten your training time with WalkMe's advanced online training solution that Guides your trainees to action. Forget about retraining and skyrocket knowledge retention rates.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Real-time is more about the business, not the technology. In day-to-day life, to make real-time decisions like buying or investing, business needs the latest information(e.g. Gold Rate/Stock Rate). Unlike traditional days, you need not wait for a fe…
When table data gets too large to manage or queries take too long to execute the solution is often to buy bigger hardware or assign more CPUs and memory resources to the machine to solve the problem. However, the best, cheapest and most effective so…
Exchange organizations may use the Journaling Agent of the Transport Service to archive messages going through Exchange. However, if the Transport Service is integrated with some email content management application (such as an antispam), the admini…

738 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question