From ed5809502942acdfd91bcfadcd733234ded76d39 Mon Sep 17 00:00:00 2001 From: Nathan Nichols Date: Fri, 14 May 2021 09:45:31 -0500 Subject: [PATCH] add a limit --- reporting/CassandraBackend.cpp | 12 +++++++++--- reporting/PostgresBackend.cpp | 8 ++++++-- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/reporting/CassandraBackend.cpp b/reporting/CassandraBackend.cpp index 59a34146..e4f79e37 100644 --- a/reporting/CassandraBackend.cpp +++ b/reporting/CassandraBackend.cpp @@ -502,12 +502,15 @@ CassandraBackend::fetchBookOffers( std::optional const& cursor) const { auto rng = fetchLedgerRange(); + auto limitTuningFactor = 50; if(!rng) return {{},{}}; - auto readBooks = [this, &book](std::uint32_t sequence) - -> std::pair>> + auto readBooks = + [this, &book, &limit, &limitTuningFactor] + (std::uint32_t sequence) + -> std::pair>> { CassandraStatement completeQuery{completeBook_}; completeQuery.bindInt(sequence); @@ -527,6 +530,8 @@ CassandraBackend::fetchBookOffers( statement.bindBytes(zero.data(), 8); statement.bindBytes(zero); + statement.bindUInt(limit * limitTuningFactor); + auto start = std::chrono::system_clock::now(); CassandraResult result = executeSyncRead(statement); @@ -1550,7 +1555,8 @@ CassandraBackend::open(bool readOnly) query << "SELECT quality_key FROM " << tablePrefix << "books " << " WHERE book = ? AND sequence = ?" << " AND quality_key >= (?, ?)" - " ORDER BY quality_key ASC"; + " ORDER BY quality_key ASC " + " LIMIT ?"; if (!selectBook_.prepareStatement(query, session_.get())) continue; diff --git a/reporting/PostgresBackend.cpp b/reporting/PostgresBackend.cpp index 6cdd818f..d97c7d80 100644 --- a/reporting/PostgresBackend.cpp +++ b/reporting/PostgresBackend.cpp @@ -379,6 +379,7 @@ PostgresBackend::fetchBookOffers( std::optional const& cursor) const { auto rng = fetchLedgerRange(); + auto limitTuningFactor = 50; if(!rng) return {{},{}}; @@ -388,7 +389,9 @@ PostgresBackend::fetchBookOffers( ripple::uint256 bookEnd = ripple::getQualityNext(bookBase); using bookKeyPair = std::pair; - auto getBooks = [this, &bookBase, &bookEnd, &limit](std::uint32_t sequence) + auto getBooks = + [this, &bookBase, &bookEnd, &limit, &limitTuningFactor] + (std::uint32_t sequence) -> std::pair> { BOOST_LOG_TRIVIAL(info) << __func__ << ": Fetching books between " @@ -418,7 +421,8 @@ PostgresBackend::fetchBookOffers( << "\'\\x" << ripple::strHex(bookBase) << "\' " << "AND book < " << "\'\\x" << ripple::strHex(bookEnd) << "\' " - << "ORDER BY book ASC"; + << "ORDER BY book ASC " + << "LIMIT " << std::to_string(limit * limitTuningFactor); BOOST_LOG_TRIVIAL(debug) << sql.str();