Commit Graph

56 Commits (058a7ab3475728df50656699387b985b3a2537ed)

Author SHA1 Message Date
Rodolfo Carvalho 10b100fe0f Fix `bolt stats` output 2015-12-05 19:56:31 +01:00
Artyom Pervukhin 8547e9ef2f Fix invalid fmt.Fprintln/Errorf calls
`go vet` discovered two calls of Fprintln with trailing newline and one
Errorf call without proper format string.
2015-08-11 11:35:43 +03:00
Xiang Li 71f28eaecb cmd/bolt: remove duplicate blockProfile flag 2015-04-22 21:37:22 -07:00
Ben Johnson 73a3aa1ccc Add 'bolt page' command. 2015-04-17 13:28:32 -06:00
Ben Johnson 3ad30436da Add 'bolt dump' command. 2015-04-16 11:13:34 -06:00
Ben Johnson dd542876fa Add improved CLI documentation. 2015-04-15 15:21:50 -06:00
Ben Johnson d0e8a99e30 Refactor bolt CLI. 2015-04-14 16:32:20 -06:00
Ben Johnson 3b449559cf Add --path to bolt bench. 2015-04-12 09:36:45 -06:00
Baiju Muthukadan 4ff9f866c5 new line after page size info print 2015-02-28 09:01:57 +05:30
Ben Johnson ea7ace2f62 Remove 'import' and 'export' CLI commands.
The import and export commands are a relic of early Bolt when the file
format was not stable. If the file format changed then users could export
their old data and import it into a new database with a new format.

The Bolt DB file format is stable and will not change so this command is no
longer needed.

Thanks to Alejandro Gaviria for pointing this out.
2015-01-08 15:03:55 -07:00
Ben Johnson bbf2da4c90 Fix go vet. 2014-07-26 19:41:05 -06:00
Ben Johnson 44e6192d2b Remove testify. 2014-07-26 17:17:03 -06:00
Ben Johnson c3400efefd Change fill percent to be per-bucket.
This commit moves the DB.FillPercent field to Bucket.FillPercent. This
allows the fill percentage to be specified per-bucket, per-tx. This
value is not persisted and should be set whenever using it.
2014-07-24 10:36:09 -06:00
Ben Johnson 048d3f19b2 Add DB.NoSync option for bulk loading.
This commit adds the DB.NoSync flag to skip fsync() calls on each commit. This should only
be used for bulk loading as it can corrupt your database in the event of a system failure.

Initial tests show it can provide a 2x speed up for sequential inserts.
2014-07-15 07:37:46 -06:00
Ben Johnson 00ee0da528 Add Open() options, flock timeout.
This commit changes Open() to provide an additional Options argument. The options
argument currently only has a Timeout which will cause the Open() to return
ErrTimeout if a file lock cannot be obtained in time.

Fixes #207.
2014-06-21 14:44:28 -06:00
Ben Johnson 754966bea0 Optimize Tx.Check().
This commit removes several memory allocations occurring on every page and also caches the freelist map used when iterating over the pages. This results in significantly better performance.
2014-05-28 12:50:48 -06:00
Ben Johnson b789691976 Add streaming check.
This commit changes Tx.Check() to return a channel through which check errors are returned. This allows
errors to be found before checking the entire data file.
2014-05-28 10:31:22 -06:00
Ben Johnson 92a9f2e200 Remove DB.Check(). Allow read-only Tx.Check().
This commit removes the DB.Check() function and instead makes the user decide
whether a transaction should be writable or read-only. Tx.Check() is not safe
to use concurrently on a read-only transaction, however, it significantly
improves the performance of it.
2014-05-27 11:31:55 -06:00
Ben Johnson 06b01dbb67 Remove allocations from read-only buckets. 2014-05-23 10:40:09 -06:00
Ben Johnson a1873dd6f6 Add option to adjust fill percentage.
This commit adds the ability to adjust the fill percentage for splitting nodes. This
works by setting a threshold that is a percentage of a total page size. When that
threshold is crossed during a split then a new node is created.

This is primarily beneficial for append-only workloads.

Fixes #163.
2014-05-15 14:04:57 -06:00
Ben Johnson a6d6d964b6 Merge pull request #162 from Shopify/nested_stats2
Recursive/aggregate bucket stats
2014-05-14 12:20:46 -06:00
Martin Kobetic 6eaeb31424 address review comments 2014-05-13 17:28:17 +00:00
Ben Johnson b5ae095a87 Add -work flag to 'bolt bench'.
This commit adds a 'work' flag to the bolt bench utility so that databases
generated by the bench CLI can be saved for analysis.
2014-05-12 15:34:07 -06:00
Martin Kobetic 4dbd354a8d add inline stats to cmd 2014-05-12 20:46:01 +00:00
Martin Kobetic c4ad027df7 aggregate bucket stats recursively and add stats to cmd 2014-05-09 20:50:58 +00:00
Martin Kobetic b9899d09ab first part 2014-05-09 20:50:55 +00:00
Ben Johnson 50e04a29ae Add 'bolt info'. 2014-05-08 08:43:18 -06:00
Ben Johnson c22d2e03bc Remove 'bolt set'.
This commit removes the 'set' command in the Bolt CLI. It proved to not be very useful
so there's no point in keeping the extra code around.
2014-05-05 07:48:45 -06:00
Ben Johnson d48c4a20be Add streaming stats to bolt bench.
This commit adds -stats-interval to the 'bolt bench' utility. By setting this argument
to an interval greater than 0s, the benchmark tool will output stats as streaming JSON.
This data can, in turn, be graphed to understand performance over time.
2014-04-30 12:27:54 -06:00
Ben Johnson 2bfb1b3db5 Merge branch 'bench-batch' into moar_bench
Conflicts:
	cmd/bolt/bench.go
2014-04-30 12:00:39 -06:00
Ben Johnson 6854ca415f Remove bolt bench -stat. 2014-04-30 11:55:08 -06:00
Ben Johnson cabb44e01f Add --batch-size to 'bolt bench'.
This commit adds a --batch-size CLI argument to the 'bolt bench' tool.
This argument will insert into Bolt in smaller batches which is a more
typical use case.

/cc @snormore
2014-04-29 12:36:42 -06:00
Martin Kobetic d9e7e0257b add -stats and -batch-size support to bench cmd 2014-04-24 16:30:39 -04:00
Ben Johnson a42d74da7e Add 'bolt bench'.
This commit adds a flexible benchmarking tool to the 'bolt' CLI. It allows
the user to separately specify the write mode and read mode (e.g. sequential
random, etc). It also allows the user to isolate profiling to either the
read or the writes.

Currently the bench tool only supports "seq" read and write modes. It also
does not support streaming of Bolt counters yet.

Fixes #95.

/cc @snormore
2014-04-18 22:15:31 -05:00
Steven Normore 71e91e24b0 move bench package to bench/cmd/bolt/bench 2014-04-18 21:44:48 -05:00
Steven Normore 105fece47a add bench sub-package 2014-04-18 21:44:47 -05:00
Steven Normore 97bd718b02 add benchmarks using Benchmark framework 2014-04-18 21:44:36 -05:00
Steven Normore fdde1bcb06 moar bench package 2014-04-18 21:44:27 -05:00
Steven Normore 6957c9d534 initial bench and generate command structure 2014-04-18 21:44:27 -05:00
Ben Johnson 2505b9a7dc Return bucket from CreateBucket() functions.
This commit changes the API for:

    Tx.CreateBucket()
    Tx.CreateBucketIfNotExists()
    Bucket.CreateBucket()
    Bucket.CreateBucketIfNotExists()

These functions now return the *Bucket and error instead of just the error.
2014-04-15 23:45:06 -04:00
Ben Johnson 10fed5f74d Upgrade import/export to use nested buckets. 2014-04-11 14:59:46 -06:00
Ben Johnson 714436100a Merge branch 'master' into nested-keys
Conflicts:
	db_test.go
	tx_test.go
2014-04-11 14:31:34 -06:00
Ben Johnson e6b5fdc30e Add import/export to CLI.
This commit adds two new commands:

    bolt import --input INPUT PATH
    bolt export PATH

This exports the database in a simple, nested, key/value JSON document.
Each node in the document has a "key", a "value", and an optional "type".
The key and value fields are both base64 encoded.
2014-04-11 14:05:58 -06:00
Ben Johnson 698b07b074 Add nested buckets.
This commit adds the ability to create buckets inside of other buckets.
It also replaces the buckets page with a root bucket.

Fixes #56.
2014-04-11 12:36:54 -06:00
Steven Normore 38b69be680 add ldflags on build with main.commit and main.branch to Makefile 2014-04-09 11:51:43 +00:00
Ben Johnson 43eda94ec1 Remove count and overflow columns for free pages on 'bolt pages'.
The count and overflow columns are meaningless for freed pages since
there could be random overflow data in there. This commit removes those
columns for free pages.
2014-04-02 07:44:54 -06:00
Ben Johnson 440b89418f Write freelist after each commit.
Well, this is embarassing. Somehow the freelist was never getting written after each commit.
This commit fixes that and fixes a small reporting issue with "bolt pages".
2014-03-31 08:52:19 -06:00
Ben Johnson 7f2de9f17a Add DB.Check(). 2014-03-29 14:22:32 -06:00
Ben Johnson fea388b03d Refactor bolt commands into individual files. 2014-03-27 22:36:05 -06:00
Ben Johnson f8ad21bad3 Make DB/Tx API more consistent.
I consolidated the DB.Tx() and DB.RWTx() calls into a single
DB.Begin(writable bool) call. This is more consistent with the
database/sql library.

I also changed the DB.Do() and DB.With() call to DB.Update() and
DB.View(), respectively. This is more intuitive and more inline with
other database verbiage.
2014-03-24 11:43:06 -06:00