Browse Source

wallet/db.c: Speed up deletion of single peers.

ChangeLog-Fixed: Database: Speed up deletion of peer especially when there is a long history with that peer.
ppa
ZmnSCPxj jxPCSnmZ 4 years ago
committed by Christian Decker
parent
commit
4dfbee47f7
  1. 5
      wallet/db.c
  2. 10
      wallet/db_postgres_sqlgen.c
  3. 10
      wallet/db_sqlite3_sqlgen.c
  4. 38
      wallet/statements_gettextgen.po

5
wallet/db.c

@ -669,6 +669,11 @@ static struct migration dbmigrations[] = {
/* A reference into our own offers table, if it was made from one */ /* A reference into our own offers table, if it was made from one */
{SQL("ALTER TABLE payments ADD COLUMN local_offer_id BLOB DEFAULT NULL REFERENCES offers(offer_id);"), NULL}, {SQL("ALTER TABLE payments ADD COLUMN local_offer_id BLOB DEFAULT NULL REFERENCES offers(offer_id);"), NULL},
{SQL("ALTER TABLE channels ADD funding_tx_remote_sigs_received INTEGER DEFAULT 0;"), NULL}, {SQL("ALTER TABLE channels ADD funding_tx_remote_sigs_received INTEGER DEFAULT 0;"), NULL},
/* Speeds up deletion of one peer from the database, measurements suggest
* it cuts down the time by 80%. */
{SQL("CREATE INDEX forwarded_payments_out_htlc_id"
" ON forwarded_payments (out_htlc_id);"), NULL},
}; };
/* Leak tracking. */ /* Leak tracking. */

10
wallet/db_postgres_sqlgen.c

@ -872,6 +872,12 @@ struct db_query db_postgres_queries[] = {
.placeholders = 0, .placeholders = 0,
.readonly = false, .readonly = false,
}, },
{
.name = "CREATE INDEX forwarded_payments_out_htlc_id ON forwarded_payments (out_htlc_id);",
.query = "CREATE INDEX forwarded_payments_out_htlc_id ON forwarded_payments (out_htlc_id);",
.placeholders = 0,
.readonly = false,
},
{ {
.name = "UPDATE vars SET intval = intval + 1 WHERE name = 'data_version' AND intval = ?", .name = "UPDATE vars SET intval = intval + 1 WHERE name = 'data_version' AND intval = ?",
.query = "UPDATE vars SET intval = intval + 1 WHERE name = 'data_version' AND intval = $1", .query = "UPDATE vars SET intval = intval + 1 WHERE name = 'data_version' AND intval = $1",
@ -1774,10 +1780,10 @@ struct db_query db_postgres_queries[] = {
}, },
}; };
#define DB_POSTGRES_QUERY_COUNT 294 #define DB_POSTGRES_QUERY_COUNT 295
#endif /* HAVE_POSTGRES */ #endif /* HAVE_POSTGRES */
#endif /* LIGHTNINGD_WALLET_GEN_DB_POSTGRES */ #endif /* LIGHTNINGD_WALLET_GEN_DB_POSTGRES */
// SHA256STAMP:ca47a99b5c64139f4556f3bf77a6d984cb9ab6b38bcd2851bc551c75c5cc240a // SHA256STAMP:910328b3c942486b746f7f5d2a91fad65ae9eb54032a5828705132bfa1b86eaf

10
wallet/db_sqlite3_sqlgen.c

@ -872,6 +872,12 @@ struct db_query db_sqlite3_queries[] = {
.placeholders = 0, .placeholders = 0,
.readonly = false, .readonly = false,
}, },
{
.name = "CREATE INDEX forwarded_payments_out_htlc_id ON forwarded_payments (out_htlc_id);",
.query = "CREATE INDEX forwarded_payments_out_htlc_id ON forwarded_payments (out_htlc_id);",
.placeholders = 0,
.readonly = false,
},
{ {
.name = "UPDATE vars SET intval = intval + 1 WHERE name = 'data_version' AND intval = ?", .name = "UPDATE vars SET intval = intval + 1 WHERE name = 'data_version' AND intval = ?",
.query = "UPDATE vars SET intval = intval + 1 WHERE name = 'data_version' AND intval = ?", .query = "UPDATE vars SET intval = intval + 1 WHERE name = 'data_version' AND intval = ?",
@ -1774,10 +1780,10 @@ struct db_query db_sqlite3_queries[] = {
}, },
}; };
#define DB_SQLITE3_QUERY_COUNT 294 #define DB_SQLITE3_QUERY_COUNT 295
#endif /* HAVE_SQLITE3 */ #endif /* HAVE_SQLITE3 */
#endif /* LIGHTNINGD_WALLET_GEN_DB_SQLITE3 */ #endif /* LIGHTNINGD_WALLET_GEN_DB_SQLITE3 */
// SHA256STAMP:ca47a99b5c64139f4556f3bf77a6d984cb9ab6b38bcd2851bc551c75c5cc240a // SHA256STAMP:910328b3c942486b746f7f5d2a91fad65ae9eb54032a5828705132bfa1b86eaf

38
wallet/statements_gettextgen.po

@ -574,67 +574,71 @@ msgstr ""
msgid "ALTER TABLE channels ADD funding_tx_remote_sigs_received INTEGER DEFAULT 0;" msgid "ALTER TABLE channels ADD funding_tx_remote_sigs_received INTEGER DEFAULT 0;"
msgstr "" msgstr ""
#: wallet/db.c:898 #: wallet/db.c:675
msgid "CREATE INDEX forwarded_payments_out_htlc_id ON forwarded_payments (out_htlc_id);"
msgstr ""
#: wallet/db.c:903
msgid "UPDATE vars SET intval = intval + 1 WHERE name = 'data_version' AND intval = ?" msgid "UPDATE vars SET intval = intval + 1 WHERE name = 'data_version' AND intval = ?"
msgstr "" msgstr ""
#: wallet/db.c:998 #: wallet/db.c:1003
msgid "SELECT version FROM version LIMIT 1" msgid "SELECT version FROM version LIMIT 1"
msgstr "" msgstr ""
#: wallet/db.c:1056 #: wallet/db.c:1061
msgid "UPDATE version SET version=?;" msgid "UPDATE version SET version=?;"
msgstr "" msgstr ""
#: wallet/db.c:1064 #: wallet/db.c:1069
msgid "INSERT INTO db_upgrades VALUES (?, ?);" msgid "INSERT INTO db_upgrades VALUES (?, ?);"
msgstr "" msgstr ""
#: wallet/db.c:1076 #: wallet/db.c:1081
msgid "SELECT intval FROM vars WHERE name = 'data_version'" msgid "SELECT intval FROM vars WHERE name = 'data_version'"
msgstr "" msgstr ""
#: wallet/db.c:1103 #: wallet/db.c:1108
msgid "SELECT intval FROM vars WHERE name= ? LIMIT 1" msgid "SELECT intval FROM vars WHERE name= ? LIMIT 1"
msgstr "" msgstr ""
#: wallet/db.c:1119 #: wallet/db.c:1124
msgid "UPDATE vars SET intval=? WHERE name=?;" msgid "UPDATE vars SET intval=? WHERE name=?;"
msgstr "" msgstr ""
#: wallet/db.c:1128 #: wallet/db.c:1133
msgid "INSERT INTO vars (name, intval) VALUES (?, ?);" msgid "INSERT INTO vars (name, intval) VALUES (?, ?);"
msgstr "" msgstr ""
#: wallet/db.c:1142 #: wallet/db.c:1147
msgid "UPDATE channels SET feerate_base = ?, feerate_ppm = ?;" msgid "UPDATE channels SET feerate_base = ?, feerate_ppm = ?;"
msgstr "" msgstr ""
#: wallet/db.c:1163 #: wallet/db.c:1168
msgid "UPDATE channels SET our_funding_satoshi = funding_satoshi WHERE funder = 0;" msgid "UPDATE channels SET our_funding_satoshi = funding_satoshi WHERE funder = 0;"
msgstr "" msgstr ""
#: wallet/db.c:1179 #: wallet/db.c:1184
msgid "SELECT type, keyindex, prev_out_tx, prev_out_index, channel_id, peer_id, commitment_point FROM outputs WHERE scriptpubkey IS NULL;" msgid "SELECT type, keyindex, prev_out_tx, prev_out_index, channel_id, peer_id, commitment_point FROM outputs WHERE scriptpubkey IS NULL;"
msgstr "" msgstr ""
#: wallet/db.c:1241 #: wallet/db.c:1246
msgid "UPDATE outputs SET scriptpubkey = ? WHERE prev_out_tx = ? AND prev_out_index = ?" msgid "UPDATE outputs SET scriptpubkey = ? WHERE prev_out_tx = ? AND prev_out_index = ?"
msgstr "" msgstr ""
#: wallet/db.c:1266 #: wallet/db.c:1271
msgid "SELECT id, funding_tx_id, funding_tx_outnum FROM channels;" msgid "SELECT id, funding_tx_id, funding_tx_outnum FROM channels;"
msgstr "" msgstr ""
#: wallet/db.c:1285 #: wallet/db.c:1290
msgid "UPDATE channels SET full_channel_id = ? WHERE id = ?;" msgid "UPDATE channels SET full_channel_id = ? WHERE id = ?;"
msgstr "" msgstr ""
#: wallet/db.c:1308 #: wallet/db.c:1313
msgid "SELECT c.id, p.node_id, c.last_tx, c.funding_satoshi, c.fundingkey_remote, c.last_sig FROM channels c LEFT OUTER JOIN peers p ON p.id = c.peer_id;" msgid "SELECT c.id, p.node_id, c.last_tx, c.funding_satoshi, c.fundingkey_remote, c.last_sig FROM channels c LEFT OUTER JOIN peers p ON p.id = c.peer_id;"
msgstr "" msgstr ""
#: wallet/db.c:1375 #: wallet/db.c:1380
msgid "UPDATE channels SET last_tx = ? WHERE id = ?;" msgid "UPDATE channels SET last_tx = ? WHERE id = ?;"
msgstr "" msgstr ""
@ -1173,4 +1177,4 @@ msgstr ""
#: wallet/test/run-wallet.c:1390 #: wallet/test/run-wallet.c:1390
msgid "INSERT INTO channels (id) VALUES (1);" msgid "INSERT INTO channels (id) VALUES (1);"
msgstr "" msgstr ""
# SHA256STAMP:e9a62e2d71753f9067c6853326ba6d9e486cd85947d46a228dfcc58b8de5004a # SHA256STAMP:ca486a7af5f01c9cf68f53b5c4ea9d3baa3cffa8ea64b8b86c9b2295d974e312

Loading…
Cancel
Save