356 lines
13 KiB
Markdown
356 lines
13 KiB
Markdown
|
||
|
||
## Storage Size
|
||
1 million objects => 540mb ( based on ~= 4.2 million objects => 2.3GB not gzipped)
|
||
|
||
1 million objects => 127mb gzipped
|
||
|
||
4x reduction in space
|
||
|
||
## Local storage takeaways:
|
||
|
||
SQLite optimisations make a difference in insertion speed. Insertion speed does slow down on large tables (+1m rows).
|
||
|
||
Partioned tables (by, for example, the first two decimals of the hash) have slower but predictable insertion speed. Not sure if compromise is worth it?
|
||
|
||
## Even More Optimised single object table
|
||
Optimisations are:
|
||
- `PRAGMA journal_mode = MEMORY;`
|
||
- `PRAGMA synchronous = OFF;`
|
||
- `PRAGMA count_changes=OFF;`
|
||
- `PRAGMA temp_store=MEMORY;`
|
||
|
||
|
||
### Test 1
|
||
-------------------------------------------------
|
||
BufferedWriteTest: Wrote 100000 in 2286 ms -> 50000 objects per second
|
||
-------------------------------------------------
|
||
|
||
-------------------------------------------------
|
||
BulkWriteMany: Wrote 100000 in 1426 ms -> 100000 objects per second
|
||
-------------------------------------------------
|
||
|
||
### Test 2
|
||
-------------------------------------------------
|
||
BufferedWriteTest: Wrote 100000 in 3052 ms -> 33333.333333333336 objects per second
|
||
-------------------------------------------------
|
||
|
||
-------------------------------------------------
|
||
BulkWriteMany: Wrote 100000 in 2244 ms -> 50000 objects per second
|
||
-------------------------------------------------
|
||
|
||
### Test 3
|
||
-------------------------------------------------
|
||
BufferedWriteTest: Wrote 100000 in 4941 ms -> 25000 objects per second
|
||
-------------------------------------------------
|
||
|
||
-------------------------------------------------
|
||
BulkWriteMany: Wrote 100000 in 2555 ms -> 50000 objects per second
|
||
-------------------------------------------------
|
||
|
||
### Test 4
|
||
-------------------------------------------------
|
||
BufferedWriteTest: Wrote 100000 in 8022 ms -> 12500 objects per second
|
||
-------------------------------------------------
|
||
|
||
-------------------------------------------------
|
||
BulkWriteMany: Wrote 100000 in 3350 ms -> 33333.333333333336 objects per second
|
||
-------------------------------------------------
|
||
|
||
|
||
### Test 5
|
||
-------------------------------------------------
|
||
BufferedWriteTest: Wrote 100000 in 6602 ms -> 16666.666666666668 objects per second
|
||
-------------------------------------------------
|
||
|
||
-------------------------------------------------
|
||
BulkWriteMany: Wrote 100000 in 3445 ms -> 33333.333333333336 objects per second
|
||
-------------------------------------------------
|
||
|
||
### Test 5+: A couple of more rounds, pushing objs to 2.000k
|
||
|
||
-------------------------------------------------
|
||
BufferedWriteTest: Wrote 100000 in 7332 ms -> 14285.714285714286 objects per second
|
||
-------------------------------------------------
|
||
|
||
-------------------------------------------------
|
||
BulkWriteMany: Wrote 100000 in 7625 ms -> 14285.714285714286 objects per second
|
||
-------------------------------------------------
|
||
|
||
-------------------------------------------------
|
||
|
||
-------------------------------------------------
|
||
BufferedWriteTest: Wrote 100000 in 7539 ms -> 14285.714285714286 objects per second
|
||
-------------------------------------------------
|
||
|
||
-------------------------------------------------
|
||
BulkWriteMany: Wrote 100000 in 4249 ms -> 25000 objects per second
|
||
-------------------------------------------------
|
||
|
||
-------------------------------------------------
|
||
|
||
-------------------------------------------------
|
||
BufferedWriteTest: Wrote 100000 in 8300 ms -> 12500 objects per second
|
||
-------------------------------------------------
|
||
|
||
-------------------------------------------------
|
||
BulkWriteMany: Wrote 100000 in 7289 ms -> 14285.714285714286 objects per second
|
||
-------------------------------------------------
|
||
|
||
-------------------------------------------------
|
||
|
||
-------------------------------------------------
|
||
BufferedWriteTest: Wrote 100000 in 8668 ms -> 12500 objects per second
|
||
-------------------------------------------------
|
||
|
||
-------------------------------------------------
|
||
BulkWriteMany: Wrote 100000 in 8060 ms -> 12500 objects per second
|
||
-------------------------------------------------
|
||
|
||
|
||
|
||
Starting to save 100000 of objects
|
||
-------------------------------------------------
|
||
BufferedWriteTest: Wrote 100000 in 10228 ms -> 10000 objects per second
|
||
-------------------------------------------------
|
||
|
||
-------------------------------------------------
|
||
BulkWriteMany: Wrote 100000 in 11475 ms -> 9090.90909090909 objects per second
|
||
-------------------------------------------------
|
||
|
||
-------------------------------------------------
|
||
|
||
Starting to save 100000 of objects
|
||
-------------------------------------------------
|
||
BufferedWriteTest: Wrote 100000 in 12540 ms -> 8333.333333333334 objects per second
|
||
-------------------------------------------------
|
||
|
||
-------------------------------------------------
|
||
BulkWriteMany: Wrote 100000 in 7113 ms -> 14285.714285714286 objects per second
|
||
-------------------------------------------------
|
||
|
||
-------------------------------------------------
|
||
|
||
Starting to save 100000 of objects
|
||
-------------------------------------------------
|
||
BufferedWriteTest: Wrote 100000 in 17153 ms -> 5882.35294117647 objects per second
|
||
-------------------------------------------------
|
||
|
||
-------------------------------------------------
|
||
BulkWriteMany: Wrote 100000 in 5997 ms -> 20000 objects per second
|
||
-------------------------------------------------
|
||
|
||
-------------------------------------------------
|
||
|
||
Starting to save 100000 of objects
|
||
-------------------------------------------------
|
||
BufferedWriteTest: Wrote 100000 in 20841 ms -> 5000 objects per second
|
||
-------------------------------------------------
|
||
|
||
-------------------------------------------------
|
||
BulkWriteMany: Wrote 100000 in 9195 ms -> 11111.111111111111 objects per second
|
||
-------------------------------------------------
|
||
|
||
Starting to save 100000 of objects
|
||
-------------------------------------------------
|
||
BufferedWriteTest: Wrote 100000 in 13404 ms -> 7692.307692307692 objects per second
|
||
-------------------------------------------------
|
||
|
||
-------------------------------------------------
|
||
BulkWriteMany: Wrote 100000 in 7529 ms -> 14285.714285714286 objects per second
|
||
-------------------------------------------------
|
||
|
||
-------------------------------------------------
|
||
|
||
Starting to save 100000 of objects
|
||
-------------------------------------------------
|
||
BufferedWriteTest: Wrote 100000 in 19806 ms -> 5263.1578947368425 objects per second
|
||
-------------------------------------------------
|
||
|
||
-------------------------------------------------
|
||
BulkWriteMany: Wrote 100000 in 7318 ms -> 14285.714285714286 objects per second
|
||
-------------------------------------------------
|
||
|
||
-------------------------------------------------
|
||
|
||
Starting to save 100000 of objects
|
||
-------------------------------------------------
|
||
BufferedWriteTest: Wrote 100000 in 24612 ms -> 4166.666666666667 objects per second
|
||
-------------------------------------------------
|
||
|
||
-------------------------------------------------
|
||
BulkWriteMany: Wrote 100000 in 7410 ms -> 14285.714285714286 objects per second
|
||
-------------------------------------------------
|
||
|
||
-------------------------------------------------
|
||
|
||
Starting to save 100000 of objects
|
||
-------------------------------------------------
|
||
BufferedWriteTest: Wrote 100000 in 22257 ms -> 4545.454545454545 objects per second
|
||
-------------------------------------------------
|
||
|
||
-------------------------------------------------
|
||
BulkWriteMany: Wrote 100000 in 18699 ms -> 5555.555555555556 objects per second
|
||
-------------------------------------------------
|
||
|
||
-------------------------------------------------
|
||
|
||
Starting to save 100000 of objects
|
||
-------------------------------------------------
|
||
BufferedWriteTest: Wrote 100000 in 20947 ms -> 5000 objects per second
|
||
-------------------------------------------------
|
||
|
||
-------------------------------------------------
|
||
BulkWriteMany: Wrote 100000 in 14089 ms -> 7142.857142857143 objects per second
|
||
-------------------------------------------------
|
||
|
||
|
||
## Optimised single object table
|
||
Optimisations are: `PRAGMA journal_mode = MEMORY;` and `PRAGMA synchronous = OFF;`
|
||
|
||
### Test 1:
|
||
-------------------------------------------------
|
||
BufferedWriteTest: Wrote 100000 in 2267 ms -> 50000 objects per second
|
||
-------------------------------------------------
|
||
|
||
-------------------------------------------------
|
||
BulkWriteMany: Wrote 100000 in 1327 ms -> 100000 objects per second
|
||
-------------------------------------------------
|
||
|
||
### Test 2:
|
||
-------------------------------------------------
|
||
BufferedWriteTest: Wrote 100000 in 4532 ms -> 25000 objects per second
|
||
-------------------------------------------------
|
||
|
||
-------------------------------------------------
|
||
BulkWriteMany: Wrote 100000 in 2243 ms -> 50000 objects per second
|
||
-------------------------------------------------
|
||
|
||
### Test 3:
|
||
-------------------------------------------------
|
||
BufferedWriteTest: Wrote 100000 in 3768 ms -> 33333.333333333336 objects per second
|
||
-------------------------------------------------
|
||
|
||
-------------------------------------------------
|
||
BulkWriteMany: Wrote 100000 in 5295 ms -> 20000 objects per second
|
||
-------------------------------------------------
|
||
|
||
### Test 4:
|
||
-------------------------------------------------
|
||
BufferedWriteTest: Wrote 100000 in 4033 ms -> 25000 objects per second
|
||
-------------------------------------------------
|
||
|
||
-------------------------------------------------
|
||
BulkWriteMany: Wrote 100000 in 3126 ms -> 33333.333333333336 objects per second
|
||
-------------------------------------------------
|
||
|
||
### Test 5:
|
||
-------------------------------------------------
|
||
BufferedWriteTest: Wrote 100000 in 4432 ms -> 25000 objects per second
|
||
-------------------------------------------------
|
||
|
||
-------------------------------------------------
|
||
BulkWriteMany: Wrote 100000 in 3527 ms -> 33333.333333333336 objects per second
|
||
-------------------------------------------------
|
||
|
||
|
||
## Single object table
|
||
|
||
### Test 1:
|
||
-------------------------------------------------
|
||
BufferedWriteTest: Wrote 100000 in 11964 ms -> 9090.90909090909 objects per second
|
||
-------------------------------------------------
|
||
|
||
-------------------------------------------------
|
||
BulkWriteMany: Wrote 100000 in 6875 ms -> 16666.666666666668 objects per second
|
||
-------------------------------------------------
|
||
200k total in db
|
||
|
||
### Test 2:
|
||
-------------------------------------------------
|
||
BufferedWriteTest: Wrote 100000 in 21956 ms -> 4761.9047619047615 objects per second
|
||
-------------------------------------------------
|
||
|
||
-------------------------------------------------
|
||
BulkWriteMany: Wrote 100000 in 8904 ms -> 12500 objects per second
|
||
-------------------------------------------------
|
||
400k total in db
|
||
|
||
### Test 3:
|
||
-------------------------------------------------
|
||
BufferedWriteTest: Wrote 100000 in 25532 ms -> 4000 objects per second
|
||
-------------------------------------------------
|
||
|
||
-------------------------------------------------
|
||
BulkWriteMany: Wrote 100000 in 10124 ms -> 10000 objects per second
|
||
-------------------------------------------------
|
||
600k total in db
|
||
|
||
### Test 4:
|
||
-------------------------------------------------
|
||
BufferedWriteTest: Wrote 100000 in 26629 ms -> 3846.153846153846 objects per second
|
||
-------------------------------------------------
|
||
|
||
-------------------------------------------------
|
||
BulkWriteMany: Wrote 100000 in 10610 ms -> 10000 objects per second
|
||
-------------------------------------------------
|
||
800k total in db
|
||
|
||
### Test 5:
|
||
-------------------------------------------------
|
||
BufferedWriteTest: Wrote 100000 in 26956 ms -> 3846.153846153846 objects per second
|
||
-------------------------------------------------
|
||
|
||
-------------------------------------------------
|
||
BulkWriteMany: Wrote 100000 in 11007 ms -> 9090.90909090909 objects per second
|
||
-------------------------------------------------
|
||
|
||
1000k total in db
|
||
|
||
|
||
## Bucketed Object Table (256 individual tables for objects):
|
||
Pre-generate 256 tables, of form `objs${prefix}`, where prefix is the cartesian product of all the valid hex decimals (`0-9, a-f`).
|
||
|
||
### Test 1:
|
||
Forgot to copy paste.
|
||
200k total in db
|
||
|
||
### Test 2:
|
||
-------------------------------------------------
|
||
BufferedWriteTest: Wrote 100000 in 19096 ms -> 5263.1578947368425 objects per second
|
||
-------------------------------------------------
|
||
|
||
-------------------------------------------------
|
||
BulkWriteMany: Wrote 100000 in 7401 ms -> 14285.714285714286 objects per second
|
||
-------------------------------------------------
|
||
400k total in db
|
||
|
||
### Test 3:
|
||
-------------------------------------------------
|
||
BufferedWriteTest: Wrote 100000 in 22477 ms -> 4545.454545454545 objects per second
|
||
-------------------------------------------------
|
||
|
||
-------------------------------------------------
|
||
BulkWriteMany: Wrote 100000 in 8668 ms -> 12500 objects per second
|
||
-------------------------------------------------
|
||
600k total in db
|
||
|
||
### Test 4:
|
||
-------------------------------------------------
|
||
BufferedWriteTest: Wrote 100000 in 23438 ms -> 4347.826086956522 objects per second
|
||
-------------------------------------------------
|
||
|
||
-------------------------------------------------
|
||
BulkWriteMany: Wrote 100000 in 9288 ms -> 11111.111111111111 objects per second
|
||
-------------------------------------------------
|
||
800k total in db
|
||
|
||
### Test 5:
|
||
-------------------------------------------------
|
||
BufferedWriteTest: Wrote 100000 in 23735 ms -> 4347.826086956522 objects per second
|
||
-------------------------------------------------
|
||
|
||
-------------------------------------------------
|
||
BulkWriteMany: Wrote 100000 in 9944 ms -> 11111.111111111111 objects per second
|
||
-------------------------------------------------
|
||
1mil total in db |