Skip to content

Commit b709e5c

Browse files
committed
ScyllaDB optimizations
1 parent e56b4db commit b709e5c

File tree

1 file changed

+18
-13
lines changed

1 file changed

+18
-13
lines changed

linera-views/src/backends/scylla_db.rs

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,8 @@ const MAX_MULTI_KEYS: usize = 99;
5454
/// So, we set up the maximal size of 16 MB - 10 KB for the values and 10 KB for the keys
5555
/// We also arbitrarily decrease the size by 4000 bytes because an amount of size is
5656
/// taken internally by the database.
57-
const RAW_MAX_VALUE_SIZE: usize = 16762976;
58-
const MAX_KEY_SIZE: usize = 10240;
57+
const RAW_MAX_VALUE_SIZE: usize = 16 * 1024 * 1024;
58+
const MAX_KEY_SIZE: usize = 10 * 1024;
5959
const MAX_BATCH_TOTAL_SIZE: usize = RAW_MAX_VALUE_SIZE + MAX_KEY_SIZE;
6060

6161
/// The `RAW_MAX_VALUE_SIZE` is the maximum size on the ScyllaDB storage.
@@ -132,13 +132,13 @@ impl ScyllaDbClient {
132132
async fn new(session: Session, namespace: &str) -> Result<Self, ScyllaDbStoreInternalError> {
133133
let namespace = namespace.to_string();
134134
let query = format!(
135-
"SELECT v FROM kv.{} WHERE root_key = ? AND k = ? ALLOW FILTERING",
135+
"SELECT v FROM kv.{} WHERE root_key = ? AND k = ?",
136136
namespace
137137
);
138138
let read_value = session.prepare(query).await?;
139139

140140
let query = format!(
141-
"SELECT root_key FROM kv.{} WHERE root_key = ? AND k = ? ALLOW FILTERING",
141+
"SELECT root_key FROM kv.{} WHERE root_key = ? AND k = ?",
142142
namespace
143143
);
144144
let contains_key = session.prepare(query).await?;
@@ -159,23 +159,23 @@ impl ScyllaDbClient {
159159
let write_batch_insertion = session.prepare(query).await?.into();
160160

161161
let query = format!(
162-
"SELECT k FROM kv.{} WHERE root_key = ? AND k >= ? ALLOW FILTERING",
162+
"SELECT k FROM kv.{} WHERE root_key = ? AND k >= ?",
163163
namespace
164164
);
165165
let find_keys_by_prefix_unbounded = session.prepare(query).await?;
166166
let query = format!(
167-
"SELECT k FROM kv.{} WHERE root_key = ? AND k >= ? AND k < ? ALLOW FILTERING",
167+
"SELECT k FROM kv.{} WHERE root_key = ? AND k >= ? AND k < ?",
168168
namespace
169169
);
170170
let find_keys_by_prefix_bounded = session.prepare(query).await?;
171171

172172
let query = format!(
173-
"SELECT k,v FROM kv.{} WHERE root_key = ? AND k >= ? ALLOW FILTERING",
173+
"SELECT k,v FROM kv.{} WHERE root_key = ? AND k >= ?",
174174
namespace
175175
);
176176
let find_key_values_by_prefix_unbounded = session.prepare(query).await?;
177177
let query = format!(
178-
"SELECT k,v FROM kv.{} WHERE root_key = ? AND k >= ? AND k < ? ALLOW FILTERING",
178+
"SELECT k,v FROM kv.{} WHERE root_key = ? AND k >= ? AND k < ?",
179179
namespace
180180
);
181181
let find_key_values_by_prefix_bounded = session.prepare(query).await?;
@@ -244,7 +244,7 @@ impl ScyllaDbClient {
244244
let mut group_query = "?".to_string();
245245
group_query.push_str(&",?".repeat(num_unique_keys - 1));
246246
let query = format!(
247-
"SELECT k,v FROM kv.{} WHERE root_key = ? AND k IN ({}) ALLOW FILTERING",
247+
"SELECT k,v FROM kv.{} WHERE root_key = ? AND k IN ({})",
248248
self.namespace, group_query
249249
);
250250

@@ -291,7 +291,7 @@ impl ScyllaDbClient {
291291
let mut group_query = "?".to_string();
292292
group_query.push_str(&",?".repeat(num_unique_keys - 1));
293293
let query = format!(
294-
"SELECT k FROM kv.{} WHERE root_key = ? AND k IN ({}) ALLOW FILTERING",
294+
"SELECT k FROM kv.{} WHERE root_key = ? AND k IN ({})",
295295
self.namespace, group_query
296296
);
297297

@@ -725,7 +725,7 @@ impl AdminKeyValueStore for ScyllaDbStoreInternal {
725725
.build()
726726
.boxed()
727727
.await?;
728-
let query = format!("SELECT root_key FROM kv.{} ALLOW FILTERING", namespace);
728+
let query = format!("SELECT root_key FROM kv.{}", namespace);
729729

730730
// Execute the query
731731
let rows = session.query_iter(query, &[]).await?;
@@ -765,7 +765,7 @@ impl AdminKeyValueStore for ScyllaDbStoreInternal {
765765
.await?;
766766
// We check the way the test can fail. It can fail in different ways.
767767
let query = format!(
768-
"SELECT root_key FROM kv.{} LIMIT 1 ALLOW FILTERING",
768+
"SELECT root_key FROM kv.{} LIMIT 1",
769769
namespace
770770
);
771771

@@ -824,7 +824,12 @@ impl AdminKeyValueStore for ScyllaDbStoreInternal {
824824
// The schema appears too complicated for non-trivial reasons.
825825
// See TODO(#1069).
826826
let query = format!(
827-
"CREATE TABLE kv.{} (root_key blob, k blob, v blob, primary key (root_key, k))",
827+
"CREATE TABLE kv.{} (
828+
root_key blob,
829+
k blob,
830+
v blob,
831+
PRIMARY KEY ((root_key), k)
832+
) WITH CLUSTERING ORDER BY (k ASC)",
828833
namespace
829834
);
830835

0 commit comments

Comments
 (0)