forked from cerc-io/ipld-eth-server
VACUUM ANALYZE after cleaning out old data
This commit is contained in:
parent
716cc3663f
commit
e570a2c9d4
@ -45,6 +45,7 @@ func (c *Cleaner) Clean(rngs [][2]uint64, t shared.DataType) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
for _, rng := range rngs {
|
for _, rng := range rngs {
|
||||||
|
logrus.Infof("btc db cleaner cleaning up block range %d to %d", rng[0], rng[1])
|
||||||
if err := c.clean(tx, rng, t); err != nil {
|
if err := c.clean(tx, rng, t); err != nil {
|
||||||
if err := tx.Rollback(); err != nil {
|
if err := tx.Rollback(); err != nil {
|
||||||
logrus.Error(err)
|
logrus.Error(err)
|
||||||
@ -52,7 +53,11 @@ func (c *Cleaner) Clean(rngs [][2]uint64, t shared.DataType) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return tx.Commit()
|
if err := tx.Commit(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
logrus.Infof("btc db cleaner vacuum analyzing cleaned tables to free up space from deleted rows")
|
||||||
|
return c.vacuumAnalyze(t)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Cleaner) clean(tx *sqlx.Tx, rng [2]uint64, t shared.DataType) error {
|
func (c *Cleaner) clean(tx *sqlx.Tx, rng [2]uint64, t shared.DataType) error {
|
||||||
@ -69,6 +74,52 @@ func (c *Cleaner) clean(tx *sqlx.Tx, rng [2]uint64, t shared.DataType) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *Cleaner) vacuumAnalyze(t shared.DataType) error {
|
||||||
|
switch t {
|
||||||
|
case shared.Full, shared.Headers:
|
||||||
|
if err := c.vacuumHeaders(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if err := c.vacuumTxs(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if err := c.vacuumTxInputs(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return c.vacuumTxOutputs()
|
||||||
|
case shared.Transactions:
|
||||||
|
if err := c.vacuumTxs(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if err := c.vacuumTxInputs(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return c.vacuumTxOutputs()
|
||||||
|
default:
|
||||||
|
return fmt.Errorf("btc cleaner unrecognized type: %s", t.String())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Cleaner) vacuumHeaders() error {
|
||||||
|
_, err := c.db.Exec(`VACUUM ANALYZE btc.header_cids`)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Cleaner) vacuumTxs() error {
|
||||||
|
_, err := c.db.Exec(`VACUUM ANALYZE btc.transaction_cids`)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Cleaner) vacuumTxInputs() error {
|
||||||
|
_, err := c.db.Exec(`VACUUM ANALYZE btc.tx_inputs`)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Cleaner) vacuumTxOutputs() error {
|
||||||
|
_, err := c.db.Exec(`VACUUM ANALYZE btc.tx_outputs`)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
func (c *Cleaner) cleanFull(tx *sqlx.Tx, rng [2]uint64) error {
|
func (c *Cleaner) cleanFull(tx *sqlx.Tx, rng [2]uint64) error {
|
||||||
if err := c.cleanTransactionIPLDs(tx, rng); err != nil {
|
if err := c.cleanTransactionIPLDs(tx, rng); err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -45,6 +45,7 @@ func (c *Cleaner) Clean(rngs [][2]uint64, t shared.DataType) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
for _, rng := range rngs {
|
for _, rng := range rngs {
|
||||||
|
logrus.Infof("eth db cleaner cleaning up block range %d to %d", rng[0], rng[1])
|
||||||
if err := c.clean(tx, rng, t); err != nil {
|
if err := c.clean(tx, rng, t); err != nil {
|
||||||
if err := tx.Rollback(); err != nil {
|
if err := tx.Rollback(); err != nil {
|
||||||
logrus.Error(err)
|
logrus.Error(err)
|
||||||
@ -52,7 +53,11 @@ func (c *Cleaner) Clean(rngs [][2]uint64, t shared.DataType) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return tx.Commit()
|
if err := tx.Commit(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
logrus.Infof("eth db cleaner vacuum analyzing cleaned tables to free up space from deleted rows")
|
||||||
|
return c.vacuumAnalyze(t)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Cleaner) clean(tx *sqlx.Tx, rng [2]uint64, t shared.DataType) error {
|
func (c *Cleaner) clean(tx *sqlx.Tx, rng [2]uint64, t shared.DataType) error {
|
||||||
@ -95,6 +100,91 @@ func (c *Cleaner) clean(tx *sqlx.Tx, rng [2]uint64, t shared.DataType) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *Cleaner) vacuumAnalyze(t shared.DataType) error {
|
||||||
|
switch t {
|
||||||
|
case shared.Full, shared.Headers:
|
||||||
|
return c.vacuumFull()
|
||||||
|
case shared.Uncles:
|
||||||
|
return c.vacuumUncles()
|
||||||
|
case shared.Transactions:
|
||||||
|
if err := c.vacuumTxs(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return c.vacuumRcts()
|
||||||
|
case shared.Receipts:
|
||||||
|
return c.vacuumRcts()
|
||||||
|
case shared.State:
|
||||||
|
if err := c.vacuumState(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if err := c.vacuumAccounts(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return c.vacuumStorage()
|
||||||
|
case shared.Storage:
|
||||||
|
return c.vacuumStorage()
|
||||||
|
default:
|
||||||
|
return fmt.Errorf("eth cleaner unrecognized type: %s", t.String())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Cleaner) vacuumFull() error {
|
||||||
|
if err := c.vacuumHeaders(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if err := c.vacuumUncles(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if err := c.vacuumTxs(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if err := c.vacuumRcts(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if err := c.vacuumState(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if err := c.vacuumAccounts(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return c.vacuumStorage()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Cleaner) vacuumHeaders() error {
|
||||||
|
_, err := c.db.Exec(`VACUUM ANALYZE eth.header_cids`)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Cleaner) vacuumUncles() error {
|
||||||
|
_, err := c.db.Exec(`VACUUM ANALYZE eth.uncle_cids`)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Cleaner) vacuumTxs() error {
|
||||||
|
_, err := c.db.Exec(`VACUUM ANALYZE eth.transaction_cids`)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Cleaner) vacuumRcts() error {
|
||||||
|
_, err := c.db.Exec(`VACUUM ANALYZE eth.receipt_cids`)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Cleaner) vacuumState() error {
|
||||||
|
_, err := c.db.Exec(`VACUUM ANALYZE eth.state_cids`)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Cleaner) vacuumAccounts() error {
|
||||||
|
_, err := c.db.Exec(`VACUUM ANALYZE eth.state_accounts`)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Cleaner) vacuumStorage() error {
|
||||||
|
_, err := c.db.Exec(`VACUUM ANALYZE eth.storage_cids`)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
func (c *Cleaner) cleanFull(tx *sqlx.Tx, rng [2]uint64) error {
|
func (c *Cleaner) cleanFull(tx *sqlx.Tx, rng [2]uint64) error {
|
||||||
if err := c.cleanStorageIPLDs(tx, rng); err != nil {
|
if err := c.cleanStorageIPLDs(tx, rng); err != nil {
|
||||||
return err
|
return err
|
||||||
|
Loading…
Reference in New Issue
Block a user