Merge pull request #3804 from mempool/mononaut/split-summaries-table
Break block templates into their own db table
This commit is contained in:
		
						commit
						f2e216b9ac
					
				| @ -7,7 +7,7 @@ import cpfpRepository from '../repositories/CpfpRepository'; | ||||
| import { RowDataPacket } from 'mysql2'; | ||||
| 
 | ||||
| class DatabaseMigration { | ||||
|   private static currentVersion = 60; | ||||
|   private static currentVersion = 61; | ||||
|   private queryTimeout = 3600_000; | ||||
|   private statisticsAddedIndexed = false; | ||||
|   private uniqueLogs: string[] = []; | ||||
| @ -521,6 +521,18 @@ class DatabaseMigration { | ||||
|       await this.$executeQuery('ALTER TABLE `blocks_audits` ADD sigop_txs JSON DEFAULT "[]"'); | ||||
|       await this.updateToSchemaVersion(60); | ||||
|     } | ||||
| 
 | ||||
|     if (databaseSchemaVersion < 61 && isBitcoin === true) { | ||||
|       // Break block templates into their own table
 | ||||
|       if (! await this.$checkIfTableExists('blocks_templates')) { | ||||
|         await this.$executeQuery('CREATE TABLE blocks_templates AS SELECT id, template FROM blocks_summaries WHERE template != "[]"'); | ||||
|       } | ||||
|       await this.$executeQuery('ALTER TABLE blocks_templates MODIFY template JSON DEFAULT "[]"'); | ||||
|       await this.$executeQuery('ALTER TABLE blocks_templates ADD PRIMARY KEY (id)'); | ||||
|       await this.$executeQuery('ALTER TABLE blocks_summaries DROP COLUMN template'); | ||||
|       await this.updateToSchemaVersion(61); | ||||
|     } | ||||
| 
 | ||||
|   } | ||||
| 
 | ||||
|   /** | ||||
|  | ||||
| @ -55,6 +55,7 @@ class BlocksAuditRepositories { | ||||
|         transactions, template, missing_txs as missingTxs, added_txs as addedTxs, fresh_txs as freshTxs, sigop_txs as sigopTxs, match_rate as matchRate | ||||
|         FROM blocks_audits | ||||
|         JOIN blocks ON blocks.hash = blocks_audits.hash | ||||
|         JOIN blocks_templates ON blocks_templates.id = blocks_audits.hash | ||||
|         JOIN blocks_summaries ON blocks_summaries.id = blocks_audits.hash | ||||
|         WHERE blocks_audits.hash = "${hash}" | ||||
|       `);
 | ||||
|  | ||||
| @ -36,11 +36,11 @@ class BlocksSummariesRepository { | ||||
|     try { | ||||
|       const transactions = JSON.stringify(params.template?.transactions || []); | ||||
|       await DB.query(` | ||||
|         INSERT INTO blocks_summaries (height, id, transactions, template) | ||||
|         VALUE (?, ?, ?, ?) | ||||
|         INSERT INTO blocks_templates (id, template) | ||||
|         VALUE (?, ?) | ||||
|         ON DUPLICATE KEY UPDATE | ||||
|           template = ? | ||||
|       `, [params.height, blockId, '[]', transactions, transactions]);
 | ||||
|       `, [blockId, transactions, transactions]);
 | ||||
|     } catch (e: any) { | ||||
|       if (e.errno === 1062) { // ER_DUP_ENTRY - This scenario is possible upon node backend restart
 | ||||
|         logger.debug(`Cannot save block template for ${blockId} because it has already been indexed, ignoring`); | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user