Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Synchronous vs. asynchronous database access

I want to develop a complex game with possibly thousands of functions and database calls.

I am wondering if it's really necessary to do my database queries in async. Its a pain to code, and all of my functions will need to use callbacks instead of the clean return method. Is this a normal approach?

Are coding these calls in async really that much faster, considering a MySQL database processes a single query at a time?

like image 825
Louis Avatar asked Feb 19 '12 22:02

Louis


People also ask

What is synchronous and asynchronous in database?

Most synchronous replication products write data to primary storage and the replica simultaneously. As such, the primary copy and the replica should always remain synchronized. In contrast, asynchronous replication products write data to the primary storage first and then copy the data to the replica.

What is the difference between synchronous and asynchronous?

The key difference between synchronous and asynchronous communication is synchronous communications are scheduled, real-time interactions by phone, video, or in-person. Asynchronous communication happens on your own time and doesn't need scheduling.

What is a synchronous database?

Database synchronization establishes data consistency between two or more databases, automatically copying changes back and forth. Harmonization of the data over time should be performed continuously. Pulling out data from source (master) database to destination (slave) is the most trivial case.

What is the difference between synchronous and asynchronous processing?

The differences between asynchronous and synchronous include: Async is multi-thread, which means operations or programs can run in parallel. Sync is single-thread, so only one operation or program will run at a time. Async is non-blocking, which means it will send multiple requests to a server.


2 Answers

Unless something changed drastically in Node.JS recently, you're pretty much forced to use async database access to scale well since all your user requests will execute on one single thread and synchronously waiting for the database will really drop your performance. If one user does a slow operation, all other users will have to wait until it's done.

Node.JS is really built for an async event driven flow, you'll get much better performance working with it than working around it.

like image 62
Joachim Isaksson Avatar answered Sep 18 '22 14:09

Joachim Isaksson


Asynchronous request are not faster than synchronous ones, no matter how you do them they still do the same exact thing. The only this that changes is rather you block on the request or not.

When you go with a synchronous the method that made the request will stop its execution waiting for the return of the request, only when that got through will it continue with its execution. Though when using asynchronous request, there's no need to wait for the request to complete, you can jut keep on and when it's done the callback will be called upon.

Another thing is that usually the database is the bottleneck when the application is making a lot of calls to the dbms, because of that you might want to consider using come kind of caching to reduce to load from the dbms.

like image 24
Nitzan Tomer Avatar answered Sep 18 '22 14:09

Nitzan Tomer