本文整理匯總了Golang中github.com/influxdb/influxdb/datastore/storage.Engine類的典型用法代碼示例。如果您正苦於以下問題:Golang Engine類的具體用法?Golang Engine怎麽用?Golang Engine使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。
在下文中一共展示了Engine類的5個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: writeBatch
func writeBatch(db storage.Engine, c *Config) int {
ws := c.MakeBatch()
if err := db.BatchPut(ws); err != nil {
panic(err)
}
return len(ws)
}
示例2: queryAndDelete
func queryAndDelete(db storage.Engine, points, series int) {
// query the database
startCount := points / series / 4
endCount := points * 3 / series / 4
total := 0
var d time.Duration
for series -= 1; series >= 0; series-- {
count := 0
var delStart []byte
var delEnd []byte
query(db, int64(series), func(itr storage.Iterator) {
count++
if count == startCount {
delStart = itr.Key()
}
if count == endCount-1 {
delEnd = itr.Key()
total += endCount - startCount
}
})
start := time.Now()
err := db.Del(delStart, delEnd)
if err != nil {
panic(err)
}
d += time.Now().Sub(start)
}
fmt.Printf("Took %s to delete %d points\n", d, total)
start := time.Now()
db.Compact()
fmt.Printf("Took %s to compact\n", time.Now().Sub(start))
}
示例3: benchmarkDbCommon
func benchmarkDbCommon(db storage.Engine, c Config) {
fmt.Printf("################ Benchmarking: %s\n", db.Name())
start := time.Now()
count := benchmarkWrites(db, &c, c.points)
d := time.Now().Sub(start)
fmt.Printf("Writing %d points in batches of %d points took %s (%f microsecond per point)\n",
count,
c.batch,
d,
float64(d.Nanoseconds())/1000.0/float64(count),
)
timeQuerying(db, c.series)
fmt.Printf("Size: %s\n", getSize(db.Path()))
queryAndDelete(db, c.points, c.series)
timeQuerying(db, c.series)
fmt.Printf("Size: %s\n", getSize(db.Path()))
start = time.Now()
count = benchmarkWrites(db, &c, c.points/2)
d = time.Now().Sub(start)
fmt.Printf("Writing %d points in batches of %d points took %s (%f microsecond per point)\n",
count,
c.batch,
d,
float64(d.Nanoseconds())/1000.0/float64(count),
)
fmt.Printf("Size: %s\n", getSize(db.Path()))
}
示例4: benchmarkWrites
func benchmarkWrites(db storage.Engine, c *Config, points int) int {
writesChan := make([]chan []storage.Write, c.threads)
for i := range writesChan {
writesChan[i] = make(chan []storage.Write, 1)
}
count := 0
p := points
go func() {
defer func() {
for _, ch := range writesChan {
close(ch)
}
}()
for {
for _, ch := range writesChan {
w := c.MakeBatch()
ch <- w
l := len(w)
count += l
p -= l
if p <= 0 {
return
}
}
}
}()
wg := sync.WaitGroup{}
for i := 0; i < c.threads; i++ {
wg.Add(1)
go func(idx int) {
defer wg.Done()
for w := range writesChan[idx] {
if err := db.BatchPut(w); err != nil {
panic(err)
}
fmt.Print(".")
}
}(i)
}
wg.Wait()
fmt.Printf("\n")
return count
}
示例5: query
func query(db storage.Engine, s int64, yield func(storage.Iterator)) {
sb := bytes.NewBuffer(nil)
binary.Write(sb, binary.BigEndian, s)
binary.Write(sb, binary.BigEndian, int64(0))
binary.Write(sb, binary.BigEndian, int64(0))
eb := bytes.NewBuffer(nil)
binary.Write(eb, binary.BigEndian, s)
binary.Write(eb, binary.BigEndian, int64(-1))
binary.Write(eb, binary.BigEndian, int64(-1))
itr := db.Iterator()
defer itr.Close()
count := 0
for itr.Seek(sb.Bytes()); itr.Valid(); itr.Next() {
key := itr.Key()
if bytes.Compare(key, eb.Bytes()) > 0 {
break
}
count++
yield(itr)
}
}