mirror of
https://github.com/LBRYFoundation/pool.git
synced 2025-09-30 15:20:36 +00:00
history: prune database + better axis interval for 7 days
2 months kept in the database, and pruned by avg after 7 days
This commit is contained in:
parent
6d2ab6efa1
commit
b81a3701b4
3 changed files with 54 additions and 3 deletions
|
@ -33,6 +33,8 @@ class MarketCommand extends CConsoleCommand
|
|||
|
||||
echo "Yiimp market command\n";
|
||||
echo "Usage: yiimp market <SYM> list\n";
|
||||
echo " yiimp market <SYM> histo <market>\n";
|
||||
echo " yiimp market <SYM> prune\n";
|
||||
return 1;
|
||||
|
||||
} else if ($args[1] == 'list') {
|
||||
|
@ -48,6 +50,12 @@ class MarketCommand extends CConsoleCommand
|
|||
|
||||
$this->queryMarketHistory($symbol, $market);
|
||||
|
||||
return 0;
|
||||
|
||||
} else if ($args[1] == 'prune') {
|
||||
|
||||
marketHistoryPrune($symbol);
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -44,8 +44,51 @@ function BackendQuickClean()
|
|||
dborun("UPDATE blocks SET amount=0 WHERE category='orphan' AND amount>0");
|
||||
}
|
||||
|
||||
function marketHistoryPrune($symbol="")
|
||||
{
|
||||
$delay2M = time() - 61*24*60*60; // 2 months
|
||||
dborun("DELETE FROM market_history WHERE time < $delay2M");
|
||||
|
||||
// Prune records older than 1 week, one max per hour
|
||||
$delay7D = time() - 7*24*60*60;
|
||||
$sqlFilter = (!empty($symbol)) ? "AND C.symbol='$symbol'" : '';
|
||||
$prune = dbolist("SELECT idcoin, idmarket,
|
||||
AVG(MH.price) AS price, AVG(MH.price2) AS price2, MAX(MH.balance) AS balance,
|
||||
MIN(MH.id) AS firstid, COUNT(MH.id) AS nbrecords, ((MH.time + 3500) DIV 3600) AS ival
|
||||
FROM market_history MH
|
||||
INNER JOIN coins C ON C.id = MH.idcoin
|
||||
WHERE MH.time < $delay7D $sqlFilter
|
||||
GROUP BY MH.idcoin, MH.idmarket, ival
|
||||
HAVING nbrecords > 1");
|
||||
|
||||
$nbDel = 0; $nbUpd = 0;
|
||||
foreach ($prune as $row) {
|
||||
if (empty($row['idmarket']))
|
||||
$sqlFilter = "idcoin=:idcoin AND idmarket IS NULL";
|
||||
else
|
||||
$sqlFilter = "idcoin=:idcoin AND idmarket=".intval($row['idmarket']);
|
||||
|
||||
$nbDel += dborun("DELETE FROM market_history WHERE $sqlFilter AND id != :firstid
|
||||
AND ((time + 3500) DIV 3600) = :interval", array(
|
||||
':idcoin' => $row['idcoin'],
|
||||
':interval'=> $row['ival'],
|
||||
':firstid' => $row['firstid'],
|
||||
));
|
||||
|
||||
$nbUpd += dborun("UPDATE market_history SET balance=:balance, price=:price, price2=:price2
|
||||
WHERE id=:firstid", array(
|
||||
':balance' => $row['balance'],
|
||||
':price' => $row['price'], ':price2' => $row['price2'],
|
||||
':firstid' => $row['firstid'],
|
||||
));
|
||||
}
|
||||
if ($nbDel) debuglog("history: $nbDel records pruned, $nbUpd updated $symbol");
|
||||
}
|
||||
|
||||
function BackendCleanDatabase()
|
||||
{
|
||||
marketHistoryPrune();
|
||||
|
||||
$delay = time() - 60*24*60*60;
|
||||
// dborun("delete from blocks where time<$delay");
|
||||
dborun("delete from hashstats where time<$delay");
|
||||
|
|
|
@ -96,7 +96,7 @@ function graph_price_data(data)
|
|||
seriesDefaults: {
|
||||
xaxis: 'x2axis',
|
||||
yaxis: 'y2axis',
|
||||
markerOptions: { style: 'circle', size: 2 }
|
||||
markerOptions: { style: 'circle', size: 0.25 }
|
||||
},
|
||||
|
||||
grid: {
|
||||
|
@ -128,7 +128,7 @@ function graph_price_data(data)
|
|||
// limit visible axis ticks
|
||||
var x2ticks = graph.axes.x2axis._ticks;
|
||||
graph.axes.xaxis.ticks = [];
|
||||
var tickInterval = graph.grid._width > 0 ? Math.round(60*300 / graph.grid._width, 0) : 1;
|
||||
var tickInterval = graph.grid._width > 0 ? Math.round(90*300 / graph.grid._width, 0) : 1;
|
||||
var label, day, lastDay;
|
||||
for (var i=0; i < x2ticks.length; i++) {
|
||||
if (i % tickInterval == 0) {
|
||||
|
@ -207,7 +207,7 @@ function graph_balance_data(data)
|
|||
// limit visible axis ticks
|
||||
var x2ticks = graph.axes.x2axis._ticks;
|
||||
graph.axes.xaxis.ticks = [];
|
||||
var tickInterval = graph.grid._width > 0 ? Math.round(60*300 / graph.grid._width, 0) : 1;
|
||||
var tickInterval = graph.grid._width > 0 ? Math.round(90*300 / graph.grid._width, 0) : 1;
|
||||
var label, day, lastDay;
|
||||
for (var i=0; i < x2ticks.length; i++) {
|
||||
if (i % tickInterval == 0) {
|
||||
|
|
Loading…
Add table
Reference in a new issue