numtel / meteor-mysql

Reactive MySQL for Meteor
MIT License
343 stars 41 forks source link

Performance comparison #15

Open sebakerckhof opened 9 years ago

sebakerckhof commented 9 years ago

Hello,

First of all, thanks for this promising piece of work.

Are there any performance comparisons made between the mysql live select and the mongo oplog tailing performance? Let's take a simple scenario where I don't have any joins in mysql or embedded documents in mongodb, is anything known about the performance characteristics between the two?

Kind regards, Seba

numtel commented 9 years ago

Sorry for taking so long, I was hoping to get this project working on the same code as pg-live-select because it has a load test already but I'm not sure if I'm going to actually do this as yet.

There used to be a benchmark for comparing inserts in MySQL and Mongo but I never migrated it to the new version. It's still available on the old branch and just now I have made some adjustments to get it working (barely) on the new version in the benchmark_update branch.

To access this, run the test suite locally and click on the benchmark button in the bottom right.

meteor test-packages --settings=test/settings/local.json ./

I noted that the benchmark barely works because I could only get it to run if I clicked the button before the normal tinytest cases are complete. After all the regression tests finish, the benchmark hangs for reasons I do not know.

The benchmark of adding 1000 rows to a MySQL table vs 1000 documents to a mongo collection shows MySQL as much faster. The following images shows 2 runs of each test. The mongo-direct cases are using the thinksoftware:mongo-direct package. Higher is better, the y-axis is the number of inserts per-second.

I'm not certain of the utility of this test case though. The high performance may be due to the client-side being much simpler since it's read-only where client-side minimongo collections have much more bulk.

screenshot from 2015-05-04 19 09 21-crop