Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Node.js: performance optimization, streams, sql optimization, queue

Представь есть очень толстый сложный запрос (загрузка видео или в бд). Что делать в Node.js? А если в SQL?

Вопрос проверяет понимание подходов к обработке тяжелых операций в разных контекстах.

Короткий ответ

В Node.js для тяжелых операций используйте асинхронную обработку, потоки и очередь задач. Для SQL-запросов оптимизируйте запросы, добавляйте индексы и используйте пагинацию. В обоих случаях важно не блокировать event loop и эффективно использовать ресурсы.

Длинный ответ

Обработка тяжелых операций требует разных подходов в зависимости от контекста.

В Node.js:

  1. Использование потоков (Streams) для обработки больших файлов:

    const fs = require('fs');
    
    const readStream = fs.createReadStream('largefile.mp4');
    const writeStream = fs.createWriteStream('copy.mp4');
    
    readStream.pipe(writeStream);
  2. Очереди задач (например, с Bull или RabbitMQ):

    // Добавление задачи в очередь
    queue.add('process-video', { videoId: 123 });
  3. Worker threads для CPU-intensive операций:

    const { Worker } = require('worker_threads');
    
    const worker = new Worker('./video-processor.js');
    worker.postMessage(videoData);

В SQL:

  1. Оптимизация запросов:

    • Добавление индексов на часто используемые поля

    • Избегание N+1 запросов

    • Использование EXPLAIN для анализа запросов

  2. Пагинация для больших результатов:

    SELECT * FROM large_table 
    ORDER BY id 
    LIMIT 100 OFFSET 200;
  3. Пакетная обработка для больших операций:

    -- Вместо одного большого UPDATE
    UPDATE large_table SET status = 'processed' 
    WHERE id BETWEEN 1 AND 1000;

Общие принципы:

  • Не блокируйте event loop

  • Используйте асинхронные операции

  • Мониторьте производительность

  • Аватар

    Node.js Guru

    Demetra

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    2

  • Сложность:

    7

Навыки

  • Node.js

    Node.js

Ключевые слова

#performance optimization

#streams

#sql optimization

#queue

Подпишись на Node.js Developer в телеграм

  • Аватар

    Node.js Guru

    Demetra

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.