prometheus/tsdb
Oleg Zaytsev 10a3c7220b
MemPostings.PostingsForLabelMatching(): don't hold the mutex while matching (#14286)
* MemPostings.PostingsForLabelMatching: let mutex go

This changes the `MemPostings.PostingsForLabelMatching` implementation
to stop holding the read mutex while matching the label values.

We've seen that this method can be slow when the matcher is expensive,
that's why we even added a context expiration check.

However, there are critical process that might be waiting on this mutex:
writes (adding new series) and compaction (deleting the
garbage-collected ones), so we should avoid holding it for a long period
of time.

Given that we've copied the values to a slice anyway, there's no need to
hold the lock while matching.

Signed-off-by: Oleg Zaytsev <mail@olegzaytsev.com>
2024-06-10 14:24:17 +02:00
..
agent Enable perfsprint linter and fix up code 2024-05-15 17:51:05 +03:00
chunkenc Fix language in docs and comments (#14041) 2024-05-08 17:57:09 +02:00
chunks Upgrade to golangci-lint v1.59.0 2024-05-27 22:38:48 +02:00
docs Fix language in docs and comments (#14041) 2024-05-08 17:57:09 +02:00
encoding tsdb/encoding: use Go standard errors package 2023-11-11 19:01:11 +01:00
errors Enable default revive rules (#13068) 2023-11-29 17:23:34 +00:00
fileutil tests: remove err from message when testify prints it already 2024-02-01 14:18:01 +00:00
goversion remove obsolete build tag 2024-01-17 22:26:32 +08:00
index MemPostings.PostingsForLabelMatching(): don't hold the mutex while matching (#14286) 2024-06-10 14:24:17 +02:00
record Fix language in docs and comments (#14041) 2024-05-08 17:57:09 +02:00
testdata tsdb: Delete blocks atomically; Remove tmp blocks on start; Added test. (#7772) 2020-08-11 06:56:08 +01:00
tombstones Update tombstones.go 2023-11-11 19:22:06 +01:00
tsdbutil Revert "Adding small test update for temp dir using t.TempDir (#13293)" 2023-12-30 19:17:30 +00:00
wlog Upgrade to golangci-lint v1.59.0 2024-05-27 22:38:48 +02:00
.gitignore Moving tsdb into its own subdirectory 2019-08-13 13:58:49 +05:30
block.go [ENHANCEMENT] TSDB: Optimize querying with regexp matchers 2024-05-09 10:55:30 +01:00
block_test.go [ENHANCEMENT] TSDB: Optimize querying with regexp matchers 2024-05-09 10:55:30 +01:00
blockwriter.go Fix language in docs and comments (#14041) 2024-05-08 17:57:09 +02:00
blockwriter_test.go Add a chunk size limit in bytes (#12054) 2023-08-24 15:21:17 +02:00
CHANGELOG.md Rename default branch to main 2021-02-22 20:28:02 +01:00
compact.go Fix language in docs and comments (#14041) 2024-05-08 17:57:09 +02:00
compact_test.go Merge pull request #13218 from machine424/ro-promtool 2024-05-21 13:27:40 +02:00
db.go tsdb: Allow passing a custom compactor to override the default one (#14113) 2024-06-04 19:11:36 -04:00
db_test.go tsdb: Allow passing a custom compactor to override the default one (#14113) 2024-06-04 19:11:36 -04:00
example_test.go Add context argument to Querier.Select (#12660) 2023-09-12 12:37:38 +02:00
exemplar.go [ENHANCEMENT] TSDB: Save map lookup on validation 2024-05-30 09:17:11 +01:00
exemplar_test.go [Test] TSDB: BenchmarkResizeExemplar multiple per series 2024-05-30 09:17:11 +01:00
head.go Fix head stats and hooks when replaying a corrupted snapshot (#14079) 2024-05-24 22:43:21 -04:00
head_append.go tsdb: add details to duplicate sample error (#13277) 2024-06-04 08:54:09 +01:00
head_bench_test.go tsdb: use Go standard errors 2023-12-11 12:18:54 +00:00
head_read.go [ENHANCEMENT] TSDB: Optimize querying with regexp matchers 2024-05-09 10:55:30 +01:00
head_read_test.go [ENHANCEMENT] TSDB: Optimize querying with regexp matchers 2024-05-09 10:55:30 +01:00
head_test.go Upgrade to golangci-lint v1.59.0 2024-05-27 22:38:48 +02:00
head_wal.go Fix language in docs and comments (#14041) 2024-05-08 17:57:09 +02:00
isolation.go tsdb: create isolation transaction slice on demand 2023-10-21 13:45:47 +00:00
isolation_test.go tsdb: turn off transaction isolation for head compaction (#11317) 2022-09-27 19:31:23 +05:30
mocks_test.go tsdb: use Go standard errors 2023-12-11 12:18:54 +00:00
ooo_head.go Fix issue where queries can fail or omit OOO samples if OOO head compaction occurs between creating a querier and reading chunks (#13115) 2023-11-24 12:38:38 +01:00
ooo_head_read.go [ENHANCEMENT] TSDB: Optimize querying with regexp matchers 2024-05-09 10:55:30 +01:00
ooo_head_read_test.go Move from golang.org/x/exp/slices into slices now that we only support Go >= 1.21 2024-02-28 14:54:53 +01:00
ooo_head_test.go ci(lint): enable godot; append dot at the end of comments 2023-10-31 19:53:38 +02:00
ooo_isolation.go Fix issue where queries can fail or omit OOO samples if OOO head compaction occurs between creating a querier and reading chunks (#13115) 2023-11-24 12:38:38 +01:00
ooo_isolation_test.go Fix issue where queries can fail or omit OOO samples if OOO head compaction occurs between creating a querier and reading chunks (#13115) 2023-11-24 12:38:38 +01:00
querier.go optimize regex matching for empty label values in posting match (#14075) 2024-05-29 16:03:33 +01:00
querier_bench_test.go Optimize label values with matchers by taking shortcuts (#13426) 2024-01-23 11:40:21 +01:00
querier_test.go optimize regex matching for empty label values in posting match (#14075) 2024-05-29 16:03:33 +01:00
README.md Fixed broken link in tsdb README.md 2022-10-07 16:20:20 +00:00
repair.go tsdb: use Go standard errors 2023-12-11 12:18:54 +00:00
repair_test.go tsdb tests: use go-cmp instead of DeepEquals 2024-02-08 19:32:33 +00:00
tsdbblockutil.go Optimize histogram iterators (#13340) 2024-01-23 17:02:14 +01:00

TSDB

GoPkg

This directory contains the Prometheus TSDB (Time Series DataBase) library, which handles storage and querying of all Prometheus v2 data.

Documentation

External resources

A series of blog posts explaining different components of TSDB: