Sobes.tech
Junior — Middle

Aké prístupy je potrebné použiť na zvýšenie efektívnosti vykonávania dopytov do databázy?

sobes.tech AI

Odpoveď od AI

Na zlepšenie efektívnosti dopytov do databázy v Node.js môžete použiť nasledujúce prístupy:

  • Indexovanie: vytvárajte indexy na často používaných poliach v podmienkach vyhľadávania, aby ste zrýchlili výbery.

  • Stránkovanie a obmedzenie: neukladajte všetky dáta naraz, používajte LIMIT a OFFSET alebo kurzory na načítanie častí dát.

  • Optimalizácia dopytov: vyhýbajte sa nadbytočným JOIN-om, vyberajte len potrebné polia (SELECT konkrétnych stĺpcov namiesto SELECT *).

  • Caching: používajte cache pre často požadované dáta (napríklad Redis).

  • Pool pripojení: používajte pool pripojení k databáze, aby ste sa vyhli nákladom na vytváranie spojení.

  • Paralelné dopyty: ak je to možné, spúšťajte nezávislé dopyty paralelne.

  • Chytré používanie ORM: ak používate ORM, sledujte počet a zložitosť generovaných dopytov.

  • Profilovanie a monitorovanie: analyzujte pomalé dopyty a optimalizujte ich.

Príklad použitia poolu pripojení s mysql2:

const mysql = require('mysql2/promise');
const pool = mysql.createPool({
  host: 'localhost',
  user: 'root',
  database: 'test',
  waitForConnections: true,
  connectionLimit: 10,
  queueLimit: 0
});

async function getUsers(limit) {
  const [rows] = await pool.query('SELECT id, name FROM users LIMIT ?', [limit]);
  return rows;
}

Tento prístup znižuje čakaciu dobu na spojenia a zlepšuje celkový výkon.