![]() | |
![]() |
| | Thread Tools | Display Modes |
#1
| |||
| |||
|
#2
| |||
| |||
|
|
Hello Everyone, I would like to compare a couple of free (as in Richard Stallman) database engines for a study, evaluating their suitability for one of my university projects. The subjects are Firebird, SQLite, MySQL and PostgreSQL. All installed on the same hardware and OS, but having only one of them active at a time. One of the hypothetical scenarios is a Parliamentary Election's Day, when millions of votes (think of the total population of a country) are submitted during a fairly limited amount of time (e.g. 12 hours). Each vote corresponds to a single INSERT statement in its own transaction, many of which happens simultaneously. |
|
My plan is to run some stress-tests, simulating such a scenario with a random or changing load of concurrent transactions. And I am hoping to measure the DB performance, hopefully feed the results to something like gnuplot to have charts for illustration. I have difficulties figuring out how to do this. Running such test on a single database engine already seems quite a challenge, let alone doing it on four different engines. I am looking for suggestions or pointers on ways to perform concurrent transactions on the above mentioned engines, |
|
and ways to measure DB performance during the tests. If you know of a tool that can be used, or a method to simulate such load, or sample source code that does such thing, or an article discussing this topic, please let me know! |
#3
| |||
| |||
|
|
like a raincoat made of sack-cloth electronic voting is fundamentally flawed. |
|
number of active transactions average time to complete transaction. number of inserts per second. you'll probably see an explosion of the first two when you reach some critical level of the third and the server runs out of resources. tweaking database configuration parameters may help. |
#4
| |||
| |||
|
|
like a raincoat made of sack-cloth electronic voting is fundamentally flawed. Maybe so. The concept itself however, is apparently believed to be a great school example. |
#5
| |||
| |||
|
|
Hello Everyone, I would like to compare a couple of free (as in Richard Stallman) database engines for a study, evaluating their suitability for one of my university projects. The subjects are Firebird, SQLite, MySQL and PostgreSQL. All installed on the same hardware and OS, but having only one of them active at a time. One of the hypothetical scenarios is a Parliamentary Election's Day, when millions of votes (think of the total population of a country) are submitted during a fairly limited amount of time (e.g. 12 hours). Each vote corresponds to a single INSERT statement in its own transaction, many of which happens simultaneously. My plan is to run some stress-tests, simulating such a scenario with a random or changing load of concurrent transactions. And I am hoping to measure the DB performance, hopefully feed the results to something like gnuplot to have charts for illustration. I have difficulties figuring out how to do this. Running such test on a single database engine already seems quite a challenge, let alone doing it on four different engines. I am looking for suggestions or pointers on ways to perform concurrent transactions on the above mentioned engines, and ways to measure DB performance during the tests. If you know of a tool that can be used, or a method to simulate such load, or sample source code that does such thing, or an article discussing this topic, please let me know! Regards, |
#6
| |||
| |||
|
|
Hard to imagine a single system (not to mention the communication hardware) for that. 1) Do the math, say 50 million votes over 12 hours, that would be over one thousand 'insert transactions' per second on average. The peaks would likely be several or many times that. If there are more elected positions per voter than just a single parliamentary seat, multiply some more. 2) Look at all the plausible requirements, not just the population. Eg., factors like how to size recovery logs or not wanting to have to arrange a second election if the single system fails, not to mention the arguments amongst the second set of losers. Some things aren't naturally centralized, in most western countries votes are counted on a local basis, eg. per riding. That might result in an average load of only 100 transactions per second and several hundreds peak. But in most (so-called) democracies the candidates will have their own scrutineers and they'll want either paper ballots or paper output from the voting systems. It's hard to imagine a computer system that can do a judicial re-count. I'm not up on current hardware but I'd say that besides doing the paper analysis of the stuff above you could reasonably limit your stress-tests to a much smaller scale. |
#7
| |||
| |||
|
|
Even though I was aware of these numbers, I didn't really think through their total effect the way you just highlighted. ... ... Can't quite grab what to measure ... ... |
|
Thoughts and pointers on such technical details would be more than welcome! |
![]() |
| Thread Tools | |
| Display Modes | |
| |