Как долговременное хранение влияет на производительность Redis за долговременное хранение отвечают режимы RDB и AOF RDB по расписанию сохраняет снимки содержимого БД AOF записывает в журнал все операции, необходимые…
Как query planner помогает выявлять причины проблем с производительностью? исследование плана выполнения SQL-операций обнаружение узких мест: полнотекстовый скан, джойны, индексы оценка стоимости (cost) и расчетного…
физическое выполнение SQL JOIN Nested Loops Join: вложенный перебор строк и проверка всех возможных пар подходит для небольших таблиц и случаев с доступными индексами Hash Join: формирование хеш-таблицы меньшей…
Почему асинхронность повышает число запросов, обрабатываемых одним потоком? Асинхронность — это модель выполнения, при которой операции могут идти без блокировки потока Пока I/O-операция не завершена, поток не…
Ограничения UNIQUE: запрещают повторение значений в столбце или их комбинации PRIMARY KEY: уникальный идентификатор строки, автоматически обеспечивающий UNQUE Уникальные индексы: ускоряют поиск и одновременно…
многозадачность Go поток блокируется корутиной, если она не передаёт управление через yield (например, отсутствует усыпление C) бесконечный цикл без операций ввода-вывода или вызова runtime.Gosched() полностью…
Как блокирующие операции влияют на Event Loop Event Loop — основа обработки асинхронных событий в JS Блокирующие операции приостанавливают цикл и замедляют выполнение задач Такие блокировки вызывают задержки UI и…
Браузер загружает и визуализирует веб-страницы По URL он отправляет серверу HTTP/HTTPS-запрос В ответ получает HTML, CSS, JS и прочие ресурсы Разбирает HTML и формирует DOM-дерево Обрабатывает CSS и создаёт…
Как быстро отправить 10 000 запросов: подходы и оптимизация параллельная отправка запросов с помощью многопоточности или асинхронности применение пулов соединений (connection pooling) для повторного использования TCP…
Как устроен Dictionary<TKey, TValue>: бакеты и коллизии Dictionary представляет собой хеш-таблицу, использующую массив бакетов Для ключа вычисляется индекс бакета: hash(key) % capacity В одном бакете оказываются…
Как в Go сократить число аллокаций при работе с рунами и слайсами? При работе со слайсами следует контролировать capacity, чтобы не допускать перераспределения памяти. Заранее задавайте capacity с помощью функции…
Memory barriers и атомарные операции в Go Memory barriers — это низкоуровневые инструкции процессора и компилятора, управляющие порядком операций с памятью. Они не позволяют CPU или компилятору переупорядочить чтения…