Skip to content

Commit

Permalink
core: Make advertise_addr of Node optional (#618)
Browse files Browse the repository at this point in the history
The semantics here changed slightly, in that a `None` address means that
the node is known but not currently connected.
  • Loading branch information
kim authored Nov 30, 2023
1 parent 4f74a5c commit 094288a
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 5 deletions.
4 changes: 3 additions & 1 deletion crates/client-api/src/routes/prometheus.rs
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,9 @@ pub async fn get_sd_config<S: ControlStateReadAccess>(
let labels = HashMap::new();

for node in nodes {
targets.push(node.advertise_addr);
if let Some(addr) = node.advertise_addr {
targets.push(addr);
}
}

let sd_config = SDConfig { targets, labels };
Expand Down
8 changes: 5 additions & 3 deletions crates/core/src/messages/control_db.rs
Original file line number Diff line number Diff line change
Expand Up @@ -50,10 +50,12 @@ pub struct DatabaseInstanceStatus {
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct Node {
pub id: u64,
/// If `true`, no new user databases will be scheduled on this node.
pub unschedulable: bool,
/// TODO: It's unclear if this should be in here since it's arguably status
/// rather than part of the configuration kind of. I dunno.
pub advertise_addr: String,
/// The hostname this node is reachable at.
///
/// If `None`, the node is not currently live.
pub advertise_addr: Option<String>,
}
#[derive(Clone, PartialEq, Serialize, Deserialize)]
pub struct NodeStatus {
Expand Down
2 changes: 1 addition & 1 deletion crates/standalone/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -220,7 +220,7 @@ impl spacetimedb_client_api::ControlStateReadAccess for StandaloneEnv {
return Ok(Some(Node {
id: 0,
unschedulable: false,
advertise_addr: "node:80".into(),
advertise_addr: Some("node:80".to_owned()),
}));
}
Ok(None)
Expand Down

1 comment on commit 094288a

@github-actions
Copy link

@github-actions github-actions bot commented on 094288a Nov 30, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmark results

Benchmark Report

Legend:

  • load: number of rows pre-loaded into the database
  • count: number of rows touched by the transaction
  • index types:
    • unique: a single index on the id column
    • non_unique: no indexes
    • multi_index: non-unique index on every column
  • schemas:
    • person(id: u32, name: String, age: u64)
    • location(id: u32, x: u64, y: u64)

All throughputs are single-threaded.

Empty transaction

db on disk new latency old latency new throughput old throughput
sqlite 💿 450.9±2.74ns 440.1±3.31ns - -
sqlite 🧠 431.1±1.69ns 429.9±1.68ns - -
stdb_module 💿 18.0±1.05µs 17.7±0.91µs - -
stdb_module 🧠 18.2±1.15µs 18.9±1.63µs - -
stdb_raw 💿 901.1±1.02ns 897.9±3.04ns - -
stdb_raw 🧠 860.9±0.72ns 854.0±2.01ns - -

Single-row insertions

db on disk schema index type load new latency old latency new throughput old throughput
sqlite 💿 location multi_index 0 14.8±0.82µs 14.5±0.02µs 66.2 Ktx/sec 67.5 Ktx/sec
sqlite 💿 location multi_index 1000 15.7±0.11µs 15.7±0.09µs 62.1 Ktx/sec 62.3 Ktx/sec
sqlite 💿 location non_unique 0 7.2±0.04µs 7.1±0.04µs 136.2 Ktx/sec 137.1 Ktx/sec
sqlite 💿 location non_unique 1000 7.1±0.03µs 7.0±0.04µs 137.7 Ktx/sec 138.7 Ktx/sec
sqlite 💿 location unique 0 7.1±0.03µs 7.2±0.03µs 137.4 Ktx/sec 136.1 Ktx/sec
sqlite 💿 location unique 1000 7.1±0.03µs 7.1±0.06µs 138.0 Ktx/sec 137.2 Ktx/sec
sqlite 💿 person multi_index 0 14.7±0.91µs 14.4±0.03µs 66.6 Ktx/sec 68.0 Ktx/sec
sqlite 💿 person multi_index 1000 16.0±0.11µs 16.0±0.10µs 61.1 Ktx/sec 60.9 Ktx/sec
sqlite 💿 person non_unique 0 7.4±0.80µs 7.3±0.44µs 132.5 Ktx/sec 133.4 Ktx/sec
sqlite 💿 person non_unique 1000 7.2±0.03µs 7.2±0.05µs 134.7 Ktx/sec 135.2 Ktx/sec
sqlite 💿 person unique 0 7.4±1.43µs 7.3±0.30µs 132.2 Ktx/sec 133.9 Ktx/sec
sqlite 💿 person unique 1000 7.3±0.06µs 7.2±0.09µs 134.4 Ktx/sec 134.7 Ktx/sec
sqlite 🧠 location multi_index 0 4.0±0.01µs 4.1±0.01µs 241.2 Ktx/sec 238.6 Ktx/sec
sqlite 🧠 location multi_index 1000 5.3±0.03µs 5.3±0.03µs 185.7 Ktx/sec 183.0 Ktx/sec
sqlite 🧠 location non_unique 0 1855.9±6.57ns 1860.3±19.03ns 526.2 Ktx/sec 524.9 Ktx/sec
sqlite 🧠 location non_unique 1000 1920.9±11.13ns 1910.4±16.19ns 508.4 Ktx/sec 511.2 Ktx/sec
sqlite 🧠 location unique 0 1821.9±7.96ns 1849.7±13.16ns 536.0 Ktx/sec 527.9 Ktx/sec
sqlite 🧠 location unique 1000 1954.1±9.06ns 1981.4±61.20ns 499.7 Ktx/sec 492.9 Ktx/sec
sqlite 🧠 person multi_index 0 3.7±0.01µs 3.7±0.01µs 266.7 Ktx/sec 265.0 Ktx/sec
sqlite 🧠 person multi_index 1000 5.5±0.06µs 5.5±0.03µs 177.4 Ktx/sec 176.6 Ktx/sec
sqlite 🧠 person non_unique 0 1933.5±6.23ns 1926.6±6.06ns 505.1 Ktx/sec 506.9 Ktx/sec
sqlite 🧠 person non_unique 1000 2.0±0.01µs 2.0±0.01µs 485.0 Ktx/sec 480.2 Ktx/sec
sqlite 🧠 person unique 0 1912.0±12.65ns 1919.1±13.60ns 510.7 Ktx/sec 508.9 Ktx/sec
sqlite 🧠 person unique 1000 2.0±0.02µs 2.1±0.02µs 482.2 Ktx/sec 471.1 Ktx/sec
stdb_module 💿 location multi_index 0 50.0±4.72µs 51.5±4.41µs 19.5 Ktx/sec 19.0 Ktx/sec
stdb_module 💿 location multi_index 1000 266.2±55.57µs 280.8±16.64µs 3.7 Ktx/sec 3.5 Ktx/sec
stdb_module 💿 location non_unique 0 48.5±10.10µs 40.0±3.54µs 20.1 Ktx/sec 24.4 Ktx/sec
stdb_module 💿 location non_unique 1000 211.6±61.20µs 126.0±2.23µs 4.6 Ktx/sec 7.7 Ktx/sec
stdb_module 💿 location unique 0 50.0±5.26µs 51.9±4.49µs 19.5 Ktx/sec 18.8 Ktx/sec
stdb_module 💿 location unique 1000 274.1±71.39µs 170.4±6.11µs 3.6 Ktx/sec 5.7 Ktx/sec
stdb_module 💿 person multi_index 0 62.0±6.07µs 68.5±4.24µs 15.8 Ktx/sec 14.3 Ktx/sec
stdb_module 💿 person multi_index 1000 134.4±10.72µs 344.7±8.17µs 7.3 Ktx/sec 2.8 Ktx/sec
stdb_module 💿 person non_unique 0 47.9±4.73µs 49.0±4.16µs 20.4 Ktx/sec 19.9 Ktx/sec
stdb_module 💿 person non_unique 1000 155.6±11.59µs 343.3±8.80µs 6.3 Ktx/sec 2.8 Ktx/sec
stdb_module 💿 person unique 0 59.7±4.84µs 52.9±5.23µs 16.3 Ktx/sec 18.5 Ktx/sec
stdb_module 💿 person unique 1000 299.3±13.62µs 125.5±8.27µs 3.3 Ktx/sec 7.8 Ktx/sec
stdb_module 🧠 location multi_index 0 37.6±3.37µs 35.2±3.37µs 26.0 Ktx/sec 27.8 Ktx/sec
stdb_module 🧠 location multi_index 1000 83.4±0.78µs 150.8±37.95µs 11.7 Ktx/sec 6.5 Ktx/sec
stdb_module 🧠 location non_unique 0 32.1±2.92µs 31.7±3.68µs 30.4 Ktx/sec 30.8 Ktx/sec
stdb_module 🧠 location non_unique 1000 115.7±8.99µs 132.9±12.54µs 8.4 Ktx/sec 7.3 Ktx/sec
stdb_module 🧠 location unique 0 33.8±2.35µs 34.3±3.54µs 28.9 Ktx/sec 28.4 Ktx/sec
stdb_module 🧠 location unique 1000 178.6±2.55µs 130.3±38.48µs 5.5 Ktx/sec 7.5 Ktx/sec
stdb_module 🧠 person multi_index 0 47.0±3.39µs 46.9±6.26µs 20.8 Ktx/sec 20.8 Ktx/sec
stdb_module 🧠 person multi_index 1000 256.2±33.16µs 212.5±101.52µs 3.8 Ktx/sec 4.6 Ktx/sec
stdb_module 🧠 person non_unique 0 31.2±1.81µs 32.7±2.87µs 31.3 Ktx/sec 29.8 Ktx/sec
stdb_module 🧠 person non_unique 1000 264.4±6.85µs 300.2±13.46µs 3.7 Ktx/sec 3.3 Ktx/sec
stdb_module 🧠 person unique 0 39.3±3.24µs 38.1±3.07µs 24.9 Ktx/sec 25.6 Ktx/sec
stdb_module 🧠 person unique 1000 150.9±19.96µs 102.1±7.02µs 6.5 Ktx/sec 9.6 Ktx/sec
stdb_raw 💿 location multi_index 0 6.9±0.03µs 6.9±0.02µs 141.5 Ktx/sec 140.6 Ktx/sec
stdb_raw 💿 location multi_index 1000 9.5±0.17µs 9.5±0.18µs 103.0 Ktx/sec 102.3 Ktx/sec
stdb_raw 💿 location non_unique 0 4.6±0.01µs 4.6±0.01µs 214.5 Ktx/sec 214.3 Ktx/sec
stdb_raw 💿 location non_unique 1000 5.9±0.16µs 6.0±0.12µs 164.8 Ktx/sec 163.0 Ktx/sec
stdb_raw 💿 location unique 0 5.8±0.01µs 5.9±0.04µs 167.5 Ktx/sec 166.4 Ktx/sec
stdb_raw 💿 location unique 1000 22.0±139.38µs 25.9±177.83µs 44.3 Ktx/sec 37.6 Ktx/sec
stdb_raw 💿 person multi_index 0 11.2±0.07µs 11.2±0.24µs 87.0 Ktx/sec 87.2 Ktx/sec
stdb_raw 💿 person multi_index 1000 56.4±419.39µs 47.0±324.36µs 17.3 Ktx/sec 20.8 Ktx/sec
stdb_raw 💿 person non_unique 0 5.7±0.02µs 5.7±0.01µs 171.6 Ktx/sec 172.6 Ktx/sec
stdb_raw 💿 person non_unique 1000 23.1±158.00µs 19.5±121.70µs 42.2 Ktx/sec 50.2 Ktx/sec
stdb_raw 💿 person unique 0 8.1±0.02µs 8.1±0.02µs 120.8 Ktx/sec 121.0 Ktx/sec
stdb_raw 💿 person unique 1000 38.6±280.32µs 11.0±4.00µs 25.3 Ktx/sec 88.5 Ktx/sec
stdb_raw 🧠 location multi_index 0 4.3±0.01µs 4.3±0.01µs 224.7 Ktx/sec 224.5 Ktx/sec
stdb_raw 🧠 location multi_index 1000 6.0±0.03µs 6.2±0.04µs 163.7 Ktx/sec 156.8 Ktx/sec
stdb_raw 🧠 location non_unique 0 2.1±0.01µs 2.1±0.01µs 462.2 Ktx/sec 459.8 Ktx/sec
stdb_raw 🧠 location non_unique 1000 2.6±0.01µs 2.7±0.02µs 374.7 Ktx/sec 358.4 Ktx/sec
stdb_raw 🧠 location unique 0 3.4±0.01µs 3.4±0.01µs 290.3 Ktx/sec 288.7 Ktx/sec
stdb_raw 🧠 location unique 1000 4.5±0.02µs 4.7±0.01µs 217.7 Ktx/sec 207.4 Ktx/sec
stdb_raw 🧠 person multi_index 0 8.0±0.01µs 8.1±0.08µs 121.7 Ktx/sec 120.8 Ktx/sec
stdb_raw 🧠 person multi_index 1000 10.2±0.05µs 10.5±0.03µs 95.7 Ktx/sec 93.3 Ktx/sec
stdb_raw 🧠 person non_unique 0 2.7±0.01µs 2.7±0.02µs 363.0 Ktx/sec 367.7 Ktx/sec
stdb_raw 🧠 person non_unique 1000 3.3±0.03µs 3.4±0.02µs 292.9 Ktx/sec 285.6 Ktx/sec
stdb_raw 🧠 person unique 0 5.0±0.01µs 5.0±0.01µs 195.6 Ktx/sec 197.2 Ktx/sec
stdb_raw 🧠 person unique 1000 6.3±0.04µs 6.5±0.06µs 156.0 Ktx/sec 150.9 Ktx/sec

Multi-row insertions

db on disk schema index type load count new latency old latency new throughput old throughput
sqlite 💿 location multi_index 0 100 136.8±36.74µs 134.3±0.35µs 7.1 Ktx/sec 7.3 Ktx/sec
sqlite 💿 location multi_index 1000 100 207.5±27.00µs 205.6±1.35µs 4.7 Ktx/sec 4.8 Ktx/sec
sqlite 💿 location non_unique 0 100 51.7±2.10µs 52.5±0.71µs 18.9 Ktx/sec 18.6 Ktx/sec
sqlite 💿 location non_unique 1000 100 53.2±0.19µs 55.3±0.30µs 18.4 Ktx/sec 17.7 Ktx/sec
sqlite 💿 location unique 0 100 52.2±2.45µs 53.9±1.05µs 18.7 Ktx/sec 18.1 Ktx/sec
sqlite 💿 location unique 1000 100 57.2±0.34µs 58.9±0.20µs 17.1 Ktx/sec 16.6 Ktx/sec
sqlite 💿 person multi_index 0 100 118.6±3.09µs 119.8±6.04µs 8.2 Ktx/sec 8.1 Ktx/sec
sqlite 💿 person multi_index 1000 100 234.3±2.40µs 236.2±54.63µs 4.2 Ktx/sec 4.1 Ktx/sec
sqlite 💿 person non_unique 0 100 48.8±1.31µs 51.1±2.25µs 20.0 Ktx/sec 19.1 Ktx/sec
sqlite 💿 person non_unique 1000 100 60.8±0.27µs 62.2±0.30µs 16.1 Ktx/sec 15.7 Ktx/sec
sqlite 💿 person unique 0 100 51.2±3.45µs 52.6±2.02µs 19.1 Ktx/sec 18.6 Ktx/sec
sqlite 💿 person unique 1000 100 56.0±0.18µs 57.3±0.24µs 17.4 Ktx/sec 17.0 Ktx/sec
sqlite 🧠 location multi_index 0 100 121.3±0.27µs 124.0±0.37µs 8.1 Ktx/sec 7.9 Ktx/sec
sqlite 🧠 location multi_index 1000 100 172.2±0.45µs 174.0±0.43µs 5.7 Ktx/sec 5.6 Ktx/sec
sqlite 🧠 location non_unique 0 100 45.5±0.53µs 46.2±0.23µs 21.5 Ktx/sec 21.1 Ktx/sec
sqlite 🧠 location non_unique 1000 100 45.7±0.42µs 47.6±0.45µs 21.4 Ktx/sec 20.5 Ktx/sec
sqlite 🧠 location unique 0 100 46.3±0.48µs 48.2±0.31µs 21.1 Ktx/sec 20.2 Ktx/sec
sqlite 🧠 location unique 1000 100 49.3±0.31µs 51.5±0.17µs 19.8 Ktx/sec 19.0 Ktx/sec
sqlite 🧠 person multi_index 0 100 107.1±0.76µs 108.5±0.32µs 9.1 Ktx/sec 9.0 Ktx/sec
sqlite 🧠 person multi_index 1000 100 191.9±0.33µs 191.8±0.32µs 5.1 Ktx/sec 5.1 Ktx/sec
sqlite 🧠 person non_unique 0 100 43.3±0.56µs 43.9±0.25µs 22.6 Ktx/sec 22.3 Ktx/sec
sqlite 🧠 person non_unique 1000 100 47.0±0.39µs 47.7±0.25µs 20.8 Ktx/sec 20.5 Ktx/sec
sqlite 🧠 person unique 0 100 44.8±0.39µs 46.3±0.25µs 21.8 Ktx/sec 21.1 Ktx/sec
sqlite 🧠 person unique 1000 100 48.9±0.45µs 48.4±0.33µs 20.0 Ktx/sec 20.2 Ktx/sec
stdb_module 💿 location multi_index 0 100 990.5±1100.44µs 796.6±61.39µs 1009 tx/sec 1255 tx/sec
stdb_module 💿 location multi_index 1000 100 936.6±70.30µs 883.3±7.97µs 1067 tx/sec 1132 tx/sec
stdb_module 💿 location non_unique 0 100 465.0±30.82µs 456.4±3.53µs 2.1 Ktx/sec 2.1 Ktx/sec
stdb_module 💿 location non_unique 1000 100 551.6±105.83µs 462.2±3.49µs 1812 tx/sec 2.1 Ktx/sec
stdb_module 💿 location unique 0 100 701.7±3.06µs 703.0±35.05µs 1425 tx/sec 1422 tx/sec
stdb_module 💿 location unique 1000 100 691.7±8.13µs 707.9±11.37µs 1445 tx/sec 1412 tx/sec
stdb_module 💿 person multi_index 0 100 1080.9±4.78µs 1096.3±115.96µs 925 tx/sec 912 tx/sec
stdb_module 💿 person multi_index 1000 100 1057.6±97.14µs 1196.8±140.73µs 945 tx/sec 835 tx/sec
stdb_module 💿 person non_unique 0 100 707.4±35.52µs 531.4±127.53µs 1413 tx/sec 1881 tx/sec
stdb_module 💿 person non_unique 1000 100 1138.7±1110.00µs 741.0±141.42µs 878 tx/sec 1349 tx/sec
stdb_module 💿 person unique 0 100 646.5±26.22µs 763.4±41.39µs 1546 tx/sec 1309 tx/sec
stdb_module 💿 person unique 1000 100 759.5±66.40µs 1038.5±78.29µs 1316 tx/sec 962 tx/sec
stdb_module 🧠 location multi_index 0 100 582.1±104.70µs 799.6±10.10µs 1718 tx/sec 1250 tx/sec
stdb_module 🧠 location multi_index 1000 100 616.7±22.80µs 881.4±46.32µs 1621 tx/sec 1134 tx/sec
stdb_module 🧠 location non_unique 0 100 379.9±5.87µs 364.8±13.64µs 2.6 Ktx/sec 2.7 Ktx/sec
stdb_module 🧠 location non_unique 1000 100 426.0±27.77µs 348.9±7.11µs 2.3 Ktx/sec 2.8 Ktx/sec
stdb_module 🧠 location unique 0 100 533.1±47.96µs 439.8±95.04µs 1875 tx/sec 2.2 Ktx/sec
stdb_module 🧠 location unique 1000 100 636.4±61.12µs 666.3±38.56µs 1571 tx/sec 1500 tx/sec
stdb_module 🧠 person multi_index 0 100 868.3±28.66µs 801.6±1.13µs 1151 tx/sec 1247 tx/sec
stdb_module 🧠 person multi_index 1000 100 1055.1±34.66µs 887.2±11.72µs 947 tx/sec 1127 tx/sec
stdb_module 🧠 person non_unique 0 100 511.6±4.07µs 316.0±10.94µs 1954 tx/sec 3.1 Ktx/sec
stdb_module 🧠 person non_unique 1000 100 557.5±70.56µs 601.2±10.91µs 1793 tx/sec 1663 tx/sec
stdb_module 🧠 person unique 0 100 578.1±1.19µs 624.5±4.39µs 1729 tx/sec 1601 tx/sec
stdb_module 🧠 person unique 1000 100 754.3±18.18µs 682.6±30.09µs 1325 tx/sec 1465 tx/sec
stdb_raw 💿 location multi_index 0 100 345.7±2.84µs 349.1±0.69µs 2.8 Ktx/sec 2.8 Ktx/sec
stdb_raw 💿 location multi_index 1000 100 396.1±275.55µs 371.9±1.35µs 2.5 Ktx/sec 2.6 Ktx/sec
stdb_raw 💿 location non_unique 0 100 118.7±0.14µs 121.8±0.25µs 8.2 Ktx/sec 8.0 Ktx/sec
stdb_raw 💿 location non_unique 1000 100 120.8±1.11µs 135.4±113.27µs 8.1 Ktx/sec 7.2 Ktx/sec
stdb_raw 💿 location unique 0 100 241.8±0.47µs 243.9±2.22µs 4.0 Ktx/sec 4.0 Ktx/sec
stdb_raw 💿 location unique 1000 100 261.1±1.19µs 263.1±1.17µs 3.7 Ktx/sec 3.7 Ktx/sec
stdb_raw 💿 person multi_index 0 100 711.7±1.00µs 715.5±2.05µs 1405 tx/sec 1397 tx/sec
stdb_raw 💿 person multi_index 1000 100 787.1±480.39µs 781.2±374.89µs 1270 tx/sec 1280 tx/sec
stdb_raw 💿 person non_unique 0 100 219.1±8.55µs 219.9±0.24µs 4.5 Ktx/sec 4.4 Ktx/sec
stdb_raw 💿 person non_unique 1000 100 236.6±166.11µs 223.6±0.38µs 4.1 Ktx/sec 4.4 Ktx/sec
stdb_raw 💿 person unique 0 100 427.3±0.29µs 430.0±0.68µs 2.3 Ktx/sec 2.3 Ktx/sec
stdb_raw 💿 person unique 1000 100 473.3±274.57µs 449.3±1.10µs 2.1 Ktx/sec 2.2 Ktx/sec
stdb_raw 🧠 location multi_index 0 100 300.6±0.45µs 301.9±0.70µs 3.2 Ktx/sec 3.2 Ktx/sec
stdb_raw 🧠 location multi_index 1000 100 324.1±0.42µs 325.9±0.56µs 3.0 Ktx/sec 3.0 Ktx/sec
stdb_raw 🧠 location non_unique 0 100 75.6±0.14µs 78.5±0.19µs 12.9 Ktx/sec 12.4 Ktx/sec
stdb_raw 🧠 location non_unique 1000 100 76.8±0.15µs 80.2±0.15µs 12.7 Ktx/sec 12.2 Ktx/sec
stdb_raw 🧠 location unique 0 100 198.8±0.29µs 200.1±0.33µs 4.9 Ktx/sec 4.9 Ktx/sec
stdb_raw 🧠 location unique 1000 100 217.2±0.34µs 219.2±1.24µs 4.5 Ktx/sec 4.5 Ktx/sec
stdb_raw 🧠 person multi_index 0 100 614.5±0.71µs 620.5±0.76µs 1627 tx/sec 1611 tx/sec
stdb_raw 🧠 person multi_index 1000 100 645.7±1.75µs 649.2±0.90µs 1548 tx/sec 1540 tx/sec
stdb_raw 🧠 person non_unique 0 100 127.3±0.23µs 129.1±0.25µs 7.7 Ktx/sec 7.6 Ktx/sec
stdb_raw 🧠 person non_unique 1000 100 129.5±0.36µs 131.8±0.22µs 7.5 Ktx/sec 7.4 Ktx/sec
stdb_raw 🧠 person unique 0 100 335.7±0.34µs 338.6±0.92µs 2.9 Ktx/sec 2.9 Ktx/sec
stdb_raw 🧠 person unique 1000 100 354.8±0.35µs 357.3±0.75µs 2.8 Ktx/sec 2.7 Ktx/sec

Full table iterate

db on disk schema index type new latency old latency new throughput old throughput
sqlite 💿 location unique 9.0±0.09µs 8.9±0.19µs 108.8 Ktx/sec 109.2 Ktx/sec
sqlite 💿 person unique 9.8±0.11µs 9.3±0.11µs 100.1 Ktx/sec 104.6 Ktx/sec
sqlite 🧠 location unique 7.8±0.09µs 7.9±0.13µs 124.6 Ktx/sec 123.6 Ktx/sec
sqlite 🧠 person unique 8.6±0.14µs 8.1±0.11µs 113.3 Ktx/sec 120.0 Ktx/sec
stdb_module 💿 location unique 48.5±5.34µs 50.0±5.39µs 20.2 Ktx/sec 19.5 Ktx/sec
stdb_module 💿 person unique 57.9±10.17µs 59.5±5.80µs 16.9 Ktx/sec 16.4 Ktx/sec
stdb_module 🧠 location unique 50.0±3.20µs 48.2±6.05µs 19.5 Ktx/sec 20.3 Ktx/sec
stdb_module 🧠 person unique 51.7±10.70µs 57.0±7.59µs 18.9 Ktx/sec 17.1 Ktx/sec
stdb_raw 💿 location unique 9.2±0.12µs 9.1±0.02µs 106.6 Ktx/sec 106.8 Ktx/sec
stdb_raw 💿 person unique 9.3±0.60µs 9.1±0.02µs 105.0 Ktx/sec 106.8 Ktx/sec
stdb_raw 🧠 location unique 9.1±0.03µs 9.1±0.01µs 107.3 Ktx/sec 107.4 Ktx/sec
stdb_raw 🧠 person unique 9.1±0.03µs 9.1±0.01µs 107.4 Ktx/sec 107.4 Ktx/sec

Find unique key

db on disk key type load new latency old latency new throughput old throughput
sqlite 💿 u32 1000 2.4±0.01µs 2.4±0.01µs 412.7 Ktx/sec 413.8 Ktx/sec
sqlite 🧠 u32 1000 1133.2±3.36ns 1124.9±9.09ns 861.7 Ktx/sec 868.1 Ktx/sec
stdb_module 💿 u32 1000 26.4±2.69µs 23.8±1.40µs 37.0 Ktx/sec 41.0 Ktx/sec
stdb_module 🧠 u32 1000 25.8±1.81µs 23.1±1.65µs 37.9 Ktx/sec 42.3 Ktx/sec
stdb_raw 💿 u32 1000 2.2±0.00µs 2.1±0.01µs 451.7 Ktx/sec 461.1 Ktx/sec
stdb_raw 🧠 u32 1000 2.1±0.00µs 2.1±0.01µs 464.7 Ktx/sec 474.4 Ktx/sec

Filter

db on disk key type index strategy load count new latency old latency new throughput old throughput
sqlite 💿 string indexed 1000 10 5.6±0.02µs 5.7±0.02µs 173.8 Ktx/sec 170.2 Ktx/sec
sqlite 💿 string non_indexed 1000 10 54.3±0.41µs 51.9±0.38µs 18.0 Ktx/sec 18.8 Ktx/sec
sqlite 💿 u64 indexed 1000 10 5.5±0.02µs 5.5±0.03µs 178.8 Ktx/sec 177.4 Ktx/sec
sqlite 💿 u64 non_indexed 1000 10 33.4±0.22µs 32.9±0.06µs 29.2 Ktx/sec 29.6 Ktx/sec
sqlite 🧠 string indexed 1000 10 4.2±0.01µs 4.3±0.02µs 230.4 Ktx/sec 225.7 Ktx/sec
sqlite 🧠 string non_indexed 1000 10 53.0±0.59µs 49.6±0.23µs 18.4 Ktx/sec 19.7 Ktx/sec
sqlite 🧠 u64 indexed 1000 10 4.0±0.02µs 4.1±0.01µs 241.8 Ktx/sec 236.4 Ktx/sec
sqlite 🧠 u64 non_indexed 1000 10 32.2±0.27µs 31.6±0.07µs 30.4 Ktx/sec 30.9 Ktx/sec
stdb_module 💿 string indexed 1000 10 34.8±2.68µs 34.5±2.17µs 28.1 Ktx/sec 28.3 Ktx/sec
stdb_module 💿 string non_indexed 1000 10 172.3±5.90µs 183.1±5.38µs 5.7 Ktx/sec 5.3 Ktx/sec
stdb_module 💿 u64 indexed 1000 10 32.7±2.23µs 32.6±2.16µs 29.9 Ktx/sec 30.0 Ktx/sec
stdb_module 💿 u64 non_indexed 1000 10 139.2±1.41µs 150.7±1.12µs 7.0 Ktx/sec 6.5 Ktx/sec
stdb_module 🧠 string indexed 1000 10 35.1±2.73µs 35.4±2.85µs 27.8 Ktx/sec 27.6 Ktx/sec
stdb_module 🧠 string non_indexed 1000 10 160.7±1.41µs 170.0±2.06µs 6.1 Ktx/sec 5.7 Ktx/sec
stdb_module 🧠 u64 indexed 1000 10 33.4±2.21µs 32.2±3.07µs 29.2 Ktx/sec 30.3 Ktx/sec
stdb_module 🧠 u64 non_indexed 1000 10 145.2±18.75µs 150.6±2.84µs 6.7 Ktx/sec 6.5 Ktx/sec
stdb_raw 💿 string indexed 1000 10 4.6±0.01µs 4.6±0.01µs 211.8 Ktx/sec 210.6 Ktx/sec
stdb_raw 💿 string non_indexed 1000 10 142.2±0.43µs 149.6±6.08µs 6.9 Ktx/sec 6.5 Ktx/sec
stdb_raw 💿 u64 indexed 1000 10 4.4±0.01µs 4.4±0.01µs 223.1 Ktx/sec 219.6 Ktx/sec
stdb_raw 💿 u64 non_indexed 1000 10 113.5±0.30µs 126.3±1.31µs 8.6 Ktx/sec 7.7 Ktx/sec
stdb_raw 🧠 string indexed 1000 10 4.6±0.01µs 4.6±0.02µs 214.6 Ktx/sec 214.6 Ktx/sec
stdb_raw 🧠 string non_indexed 1000 10 139.2±0.29µs 152.5±0.44µs 7.0 Ktx/sec 6.4 Ktx/sec
stdb_raw 🧠 u64 indexed 1000 10 4.3±0.01µs 4.4±0.01µs 225.2 Ktx/sec 222.8 Ktx/sec
stdb_raw 🧠 u64 non_indexed 1000 10 143.2±0.35µs 151.5±0.27µs 6.8 Ktx/sec 6.4 Ktx/sec

Serialize

schema format count new latency old latency new throughput old throughput
location bsatn 100 1809.0±30.86ns 1636.7±32.62ns 52.7 Mtx/sec 58.3 Mtx/sec
location json 100 3.3±0.05µs 3.5±0.00µs 29.1 Mtx/sec 27.6 Mtx/sec
location product_value 100 582.7±32.49ns 598.2±8.18ns 163.7 Mtx/sec 159.4 Mtx/sec
person bsatn 100 2.5±0.01µs 2.9±0.01µs 38.1 Mtx/sec 33.0 Mtx/sec
person json 100 5.1±0.03µs 5.7±0.03µs 18.8 Mtx/sec 16.7 Mtx/sec
person product_value 100 1009.7±1.17ns 1006.4±1.15ns 94.5 Mtx/sec 94.8 Mtx/sec

Module: invoke with large arguments

arg size new latency old latency new throughput old throughput
64KiB 70.5±5.08µs 63.4±11.37µs - -

Module: print bulk

line count new latency old latency new throughput old throughput
1 23.7±1.87µs 22.8±0.91µs - -
100 193.0±5.14µs 192.3±5.47µs - -
1000 1720.1±12.33µs 1774.7±97.95µs - -

Remaining benchmarks

name new latency old latency new throughput old throughput

Please sign in to comment.