Comments (6)
I tried isolating the issue further by reducing my script to this:
package main
import (
"encoding/binary"
"fmt"
"log"
"github.com/dgraph-io/badger/badger"
)
func main() {
// connection
opt := badger.DefaultOptions
opt.Dir = "/tmp/leveldb"
opt.ValueDir = opt.Dir
db, err := badger.NewKV(&opt)
if err != nil {
panic(err)
}
defer db.Close()
// writes
for i := 0; i < 10000; i++ {
bytes := make([]byte, 8)
binary.BigEndian.PutUint64(bytes, uint64(i))
// write to db
err = db.Set(bytes, bytes)
if err != nil {
log.Println("write error", err)
}
}
// fetch one key
keyOne := make([]byte, 8)
binary.BigEndian.PutUint64(keyOne, uint64(1))
// read from db
var item badger.KVItem
err = db.Get(keyOne, &item)
if err != nil {
log.Println("read error", err)
}
// debug
data := item.Value()
fmt.Println("val", data)
}
it seems like there are two issues:
- it is really slow, taking 11s to insert 10000 records, surely this can't be right?
- it doesn't flush the data to disk until the call to
Close()
, so it looks like it's not flushing when it actually is.
I think the issue for my original script it I got tired of waiting and cancelled the job, using leveldb it takes about 1.5s, I waited about 15s before giving it the 'ol cntl+c
from badger.
is it possible that I'm getting poor performance because I'm using an ext4
filesystem?
from badger.
from badger.
Let me know if there's something more I can help you with.
from badger.
hey @manishrjain thanks for your reply. I can re-jig my code to use batched writes instead of single writes, but the issue remains that comparing apples v. apples with leveldb, badger is much slower?
are you suggesting that the batch mode of badger is much faster than the batch mode of leveldb?
from badger.
I haven't tried running any benchmarks against leveldb. Also, serial writes in a single goroutine isn't something that we have optimized for. Most practical applications which care about performance would do batched writes, concurrently.
from badger.
Related Issues (20)
- [Documentation]: absent documentation about v4 HOT 3
- [BUG]: return odd keys bytes when scaning with prefix HOT 1
- [QUESTION]: Why badger use WAL? HOT 2
- [QUESTION]: How can I limit the disk size used by Badger or the number of keys that Badger can store through parameter configuration in the program? HOT 4
- Hi,badger-rs, a rust implements version has release [QUESTION]: <Title>
- [BUG]: Panic from a lot of DELs and SETs with very large keys
- [BUG]: when compression is none block cache will cache the table
- [QUESTION]: Batch write is partially committed when badger crashes
- [QUESTION]: Search keys by regular expressions HOT 1
- [BUG]: arm64 inconsistencies HOT 1
- [QUESTION]: Is Badger rsync friendly during db in use ? HOT 3
- How to achieve multiple process sharing and open a db
- [BUG]: compilation fails with `GOOS=aix` (Unix) HOT 1
- Memory crash
- [BUG]: RunValueGC HOT 1
- [FEATURE]: Storing values larger than 2 GB HOT 2
- [BUG]: Panic, help!
- [FEATURE]: <TTL Event>
- update ristretto HOT 2
- [BUG]: db.Backup maybe see the `partial write` in one transaction
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from badger.