In one of my latest post I talked about synchronization functionality that is available for SQL Azure. There was a question related of the performance of this service.
So, I decided to make a performance test, to see what are the performance. Please take into account that this service is in the preview and the performance will change when the service will be released.
For this test I had the following setup:
- Database
- Size 7.2 GB
- 15 tables
- 2 tables with more than 30.000.000 of rows (one table had around 3.2 GB and the other one had 2.7 GB)
- 34.378.980 rows in total
- Database instances
- 1 DB in West Europe (Hub)
- 1 DB in West Europe
- 1 DB in North Europe
- 1 DB in North Central US
- Agent
- 1 agent in West Europe
- Configuration
- Hubs win
- Sync From Hub
I started from the presumption that your data were not duplicated yet on all the databases. First hit of the Sync button will duplicate the database schema of the tables that needs to be sync, table content and rest of resources to all the databases for the given table. This means that 7.2 GB were send to the 3 different databases.
Normally you can do this action in other ways. Exporting/Importing the database for example, but I wanted to see how long it takes to sync all the databases.
Sync action duration: 5 hours and 36 minutes (20160.17 seconds)
In this scenario I updated 182 rows from one of the tables
Sync action duration: 53.63 seconds
Scenario Three: No changes
In this case I triggered the synchronization action without any changes.
Sync action duration: 38.47 seconds
Scenario Four: 23.767 rows updated
23767 rows were updated on the hub database.
Sync action duration: 1 minute and 16 seconds (76 seconds)
Scenario Five: 4.365.513 rows updated
As in the previous scenario, I updated I changed a specific number of rows.
Sync action duration: 1 minute and 41 seconds (101.6 seconds)
Scenario Six: 76.353 rows deleted
From one of the tables I deleted 73.353 rows.
Sync action duration: 56.26 seconds
As we can see, the synchronization action itself takes a very short period of time. For 4.5M of rows that were updated, the synchronization action took less than 2 minutes. The only scenario that took a log period of time was the initial synchronization action. Usually this action is made only one time. Also we have other method to import the database content to all our database.
I would say that the performance of the sync service is very good and I invite all of you tot check it out. You have support for synchronization out of the box.
Great job!
Thank you for taking your time to test and share the performances. The performances seems to be very good. I know the service creates triggers for each table involved in sync and it also creates additional tables to keep differences. Do you see a problem with database size in time? Especially because size could involve additional cost in Azure.
ReplyDelete