1
0
Code Issues Pull Requests Projects Releases Wiki Activity GitHub Gitee

assistant 不同时操作多张表,减少死锁概率

This commit is contained in:
2022-11-07 15:16:05 +08:00
parent 0b887580fc
commit e638b09313

View File

@@ -13,6 +13,7 @@ function getDiffSet(a, b) {
}
async function migrateIdsFromCheckToFetch(tableName, fieldName, insertSql = null) {
try {
// console.log(`更新待爬取列表: ${tableName}`);
let stepLength = 5000;
@@ -41,34 +42,39 @@ async function migrateIdsFromCheckToFetch(tableName, fieldName, insertSql = null
// console.log(result);
}
// 从待检查表中删除
if (ids.length > 0)
await dbUtils.query(`DELETE FROM wait_check_${tableName} WHERE id IN ?`, [[ids]]);
console.log(`table: ${tableName}\t| ${fill(ids[0], 10)} - ${fill(ids.slice(-1)[0], 10)} ${fill(`(${finalIds.length}/${ids.length})`, 10, ' ', true)}\t| affected: ${result?.affectedRows}`);
}
} catch (e) {
console.error(e);
}
}
async function getPromise(tableName, fieldName, insertSql) {
try {
return new Promise(async function (resolve) {
await migrateIdsFromCheckToFetch(tableName, fieldName, insertSql);
resolve();
});
} catch (e) {
console.error(e);
await sleepUtils.sleep(10 * 1000);
}
}
async function updateWaitTable() {
console.log(`更新待爬取列表`);
await Promise.all([
getPromise("song", "song_id"),
getPromise("lyric", "song_id"),
getPromise("comment", "song_id", `INSERT IGNORE INTO comment_progress (song_id) VALUES ?`),
getPromise("album", "album_id"),
getPromise("artist", "artist_id")
]);
// 不同时操作多张表,减少死锁概率
await migrateIdsFromCheckToFetch("song", "song_id");
await migrateIdsFromCheckToFetch("lyric", "song_id");
await migrateIdsFromCheckToFetch("comment", "song_id", `INSERT IGNORE INTO comment_progress (song_id) VALUES ?`);
await migrateIdsFromCheckToFetch("album", "album_id");
await migrateIdsFromCheckToFetch("artist", "artist_id");
// await Promise.all([
// getPromise("song", "song_id"),
// getPromise("lyric", "song_id"),
// getPromise("comment", "song_id", `INSERT IGNORE INTO comment_progress (song_id) VALUES ?`),
// getPromise("album", "album_id"),
// getPromise("artist", "artist_id")
// ]);
console.log("All done.\n");
}