План запроса — это последовательность шагов для доступа к данным в базе данных SQL. Каждый SQL-запрос, отправляемый в базу данных, преобразуется в план запроса.
Процесс выглядит примерно следующим образом:
• Анализ SQL
• Оптимизация SQL
• Выходной план запроса
Важнейшим компонентом этого процесса является оптимизатор запросов. Он отвечает за поиск в возможном пространстве плана запроса и нахождение оптимального плана запроса.
В оптимизаторе запросов, основанном на стоимости, каждый план запроса имеет соответствующую стоимость. Лучший план запроса — это тот, который имеет наименьшую стоимость.
Еще одна оптимизация, которую выполняют SQL-движки, — кэширование часто используемых планов запросов. Важно писать запросы так, чтобы их можно было кэшировать. Например, запрос с параметрами можно кэшировать, а план запроса использовать повторно.
#sql
Процесс выглядит примерно следующим образом:
• Анализ SQL
• Оптимизация SQL
• Выходной план запроса
Важнейшим компонентом этого процесса является оптимизатор запросов. Он отвечает за поиск в возможном пространстве плана запроса и нахождение оптимального плана запроса.
В оптимизаторе запросов, основанном на стоимости, каждый план запроса имеет соответствующую стоимость. Лучший план запроса — это тот, который имеет наименьшую стоимость.
Еще одна оптимизация, которую выполняют SQL-движки, — кэширование часто используемых планов запросов. Важно писать запросы так, чтобы их можно было кэшировать. Например, запрос с параметрами можно кэшировать, а план запроса использовать повторно.
#sql
👍14❤2🔥2
Наиболее применяемые команды Git для повседневного использования #git
🙏13👏4🔥3
5 распространенных стратегий кэширования:
1. 𝐑𝐞𝐚𝐝 𝐓𝐡𝐫𝐨𝐮𝐠𝐡 : Приложение всегда сначала запрашивает кэш. Если данные отсутствуют в кэше, кэш сам извлекает их из базы данных и сохраняет для будущих запросов
2. 𝐂𝐚𝐜𝐡𝐞 𝐀𝐬𝐢𝐝𝐞 ( 𝐋𝐚𝐳𝐲 𝐋𝐨𝐚𝐝𝐢𝐧𝐠): Приложение сначала проверяет кэш. Если данные не найдены в кэше, извлекает данные из БД и сохраняет в кэше для последующих запросов.
3. 𝐖𝐫𝐢𝐭𝐞 𝐓𝐡𝐫𝐨𝐮𝐠𝐡 : Каждая операция записи сначала сохраняется в кэше, а затем немедленно записывается в БД
4. 𝐖𝐫𝐢𝐭𝐞 𝐀𝐫𝐨𝐮𝐧𝐝 : Приложение напрямую пишет в базу данных, минуя кэш. Кэш обновляется только при запросе на чтение.
5. 𝐖𝐫𝐢𝐭𝐞 𝐁𝐚𝐜𝐤 : Данные сначала записываются в кэш, а кэш асинхронно обновляет БД в фоновом режиме
Какую стратегию использовать?
- Если чтения происходят чаще → Read-Through / Cache-Aside
- Если записи должны быть последовательными → Write-Through
- Если надо минимизировать ненужное кэширование → Write-Around
- Если нужна сверхбыстрая запись → Write-Back
1. 𝐑𝐞𝐚𝐝 𝐓𝐡𝐫𝐨𝐮𝐠𝐡 : Приложение всегда сначала запрашивает кэш. Если данные отсутствуют в кэше, кэш сам извлекает их из базы данных и сохраняет для будущих запросов
2. 𝐂𝐚𝐜𝐡𝐞 𝐀𝐬𝐢𝐝𝐞 ( 𝐋𝐚𝐳𝐲 𝐋𝐨𝐚𝐝𝐢𝐧𝐠): Приложение сначала проверяет кэш. Если данные не найдены в кэше, извлекает данные из БД и сохраняет в кэше для последующих запросов.
3. 𝐖𝐫𝐢𝐭𝐞 𝐓𝐡𝐫𝐨𝐮𝐠𝐡 : Каждая операция записи сначала сохраняется в кэше, а затем немедленно записывается в БД
4. 𝐖𝐫𝐢𝐭𝐞 𝐀𝐫𝐨𝐮𝐧𝐝 : Приложение напрямую пишет в базу данных, минуя кэш. Кэш обновляется только при запросе на чтение.
5. 𝐖𝐫𝐢𝐭𝐞 𝐁𝐚𝐜𝐤 : Данные сначала записываются в кэш, а кэш асинхронно обновляет БД в фоновом режиме
Какую стратегию использовать?
- Если чтения происходят чаще → Read-Through / Cache-Aside
- Если записи должны быть последовательными → Write-Through
- Если надо минимизировать ненужное кэширование → Write-Around
- Если нужна сверхбыстрая запись → Write-Back
👍5🔥1👏1
8 концепций языка Python, которые могут запутать/сбить с толку разработчика #python
👍7🥰1👏1🤮1
Компания Azul опубликовал свой отчет о состоянии Java за 2025 год. Отчет основан на ответах 2039 специалистов Java из компаний всех размеров
Согласно отчету, довольно много респондентов до сих пор используют древние версии Java. Так, Java 8, вышедшая в 2014 году, до сих пор применяется 23%, хотя в прошлом году этот показатель составлял 40%. Наиболее используемой версией является Java 17 LTS (выпущенная в 2021 году), за которой следует Java 21 LTS 2023 года.
Уязвимость Log4Shell в популярной библиотеке журналирования Log4j, обнаруженная в 2021 году, продолжает оставаться проблемой: 49 процентов респондентов заявили, что они по-прежнему сталкиваются с уязвимостями безопасности Log4j.
Spring Boot остается самой популярной средой микросервисов, но не намного. В 2023 году Spring Boot пользовался 61 процентом использования, но в текущем опросе он составил 42%, немного опережая Micronaut с 39%.
https://devclass.com/2025/01/30/state-of-java-report-shows-strong-migration-from-java-8-rise-of-apache-spark/
Согласно отчету, довольно много респондентов до сих пор используют древние версии Java. Так, Java 8, вышедшая в 2014 году, до сих пор применяется 23%, хотя в прошлом году этот показатель составлял 40%. Наиболее используемой версией является Java 17 LTS (выпущенная в 2021 году), за которой следует Java 21 LTS 2023 года.
Уязвимость Log4Shell в популярной библиотеке журналирования Log4j, обнаруженная в 2021 году, продолжает оставаться проблемой: 49 процентов респондентов заявили, что они по-прежнему сталкиваются с уязвимостями безопасности Log4j.
Spring Boot остается самой популярной средой микросервисов, но не намного. В 2023 году Spring Boot пользовался 61 процентом использования, но в текущем опросе он составил 42%, немного опережая Micronaut с 39%.
https://devclass.com/2025/01/30/state-of-java-report-shows-strong-migration-from-java-8-rise-of-apache-spark/
👍2🔥1👏1
Теорема CAP базируется на трех понятиях:
Согласованность (Consistency): все клиенты видят одни и те же данные одновременно, независимо от того, к какому узлу они подключаются
Доступность (Availability): любой клиент, запрашивающий данные, получает ответ, даже если некоторые из узлов не работают
Устойчивость к разделению (Partition Tolerance): система продолжает работать, несмотря на разделение связей между узлами
Причем теорема CAP утверждает, что в распределенных системах одновременно могут быть достигнуты только два из этих трех свойств одновременно. Учитывая, что обычно разделение сети неизбежно, часто приходится выбирать между согласованностью и доступностью. Соответствено проектирование системы предполагает балансировку компромиссов.
Согласованность (Consistency): все клиенты видят одни и те же данные одновременно, независимо от того, к какому узлу они подключаются
Доступность (Availability): любой клиент, запрашивающий данные, получает ответ, даже если некоторые из узлов не работают
Устойчивость к разделению (Partition Tolerance): система продолжает работать, несмотря на разделение связей между узлами
Причем теорема CAP утверждает, что в распределенных системах одновременно могут быть достигнуты только два из этих трех свойств одновременно. Учитывая, что обычно разделение сети неизбежно, часто приходится выбирать между согласованностью и доступностью. Соответствено проектирование системы предполагает балансировку компромиссов.
👍10❤1🔥1
Онлайн-кинотеатр Wink (совместное предприятие «Ростелекома» и НМГ) запустит свой аналог YouTube в 2025 году
Сервис позволит создателям контента монетизировать свои труды. Проект заработает в первом квартале 2025 года.
Для привлечения авторов на новый сервис запущен отдельный лендинг (веб-страница), где блогеры могут оставить заявку и начать переговоры с сервисом, уточнили в Wink: «Он пока не распространяется широко, только по узкому кругу блогеров». Сейчас сервис обсуждает сотрудничество с десятками авторов контента, ожидает подписания контрактов в ближайшее время.
https://www.kommersant.ru/doc/7479310
Сервис позволит создателям контента монетизировать свои труды. Проект заработает в первом квартале 2025 года.
Для привлечения авторов на новый сервис запущен отдельный лендинг (веб-страница), где блогеры могут оставить заявку и начать переговоры с сервисом, уточнили в Wink: «Он пока не распространяется широко, только по узкому кругу блогеров». Сейчас сервис обсуждает сотрудничество с десятками авторов контента, ожидает подписания контрактов в ближайшее время.
https://www.kommersant.ru/doc/7479310
Коммерсантъ
Это нишево, блогер
Онлайн-кинотеатры тестируют публикацию контента от сторонних авторов
🤡15🤮3❤2🔥1👏1
This media is not supported in your browser
VIEW IN TELEGRAM
Как сделать подцветку строк в таблице (элементе <table>) с помощью селектора :has() в CSS
td:has(~ td:hover), /* предыдущие сестринские ячейки */
table:has(td:nth-of-type(3):hover) /* стобец */
tr:not(:first-of-type):has(~ tr:hover)
td:nth-of-type(3) {
background: var(--highlighted);
}
td:has(~ td:hover), /* предыдущие сестринские ячейки */
table:has(td:nth-of-type(3):hover) /* стобец */
tr:not(:first-of-type):has(~ tr:hover)
td:nth-of-type(3) {
background: var(--highlighted);
}
🔥27👍7👏2
Российских программистов прекращают нанимать на бессрочный договор. Теперь их просто арендуют на полгода-год или даже меньше
ИТ-специалисты столкнулись в России с новым трендом – компании стали все чаще нанимать их лишь на короткое время, а бессрочный трудовой договор предлагает лишь каждая восьмая компания. Работодатели гораздо охотнее нанимают ИТ-шников на полгода-год.
По итогам 2024 г. примерно каждая восьмая компания (12%) подписывает с ИТ-шником трудовой договор, в котором нет четко указанного срока его действия.
Фирм, принимающих ИТ-работников в штат на полгода-год, оказалось 35%. Год назад их было около 20%.
Российские компании, ищущие в свой штат ИТ-специалиста, в подавляющем своем большинстве даже не смотрят на джунов – работников с базовым или вовсе отсутствующим опытом работы. В 2024 г., как и в 2023 г., таковых насчитывалось лишь около 2%.
Две трети компаний, около 66%, в 2024 г. искали ИТ-специалистов только высокого уровня – лидов, сеньоров или продвинутых мидлов. Годом ранее их было 75%.
В 2024 г. работодатели проявляли гораздо больший интерес к обычным мидлам, нежели в 2023 г. Спрос на специалистов среднего уровня увеличился в 2024 г. до 32% против 23% в 2023 г.
https://www.cnews.ru/news/top/2025-02-06_rossijskih_programmistov
ИТ-специалисты столкнулись в России с новым трендом – компании стали все чаще нанимать их лишь на короткое время, а бессрочный трудовой договор предлагает лишь каждая восьмая компания. Работодатели гораздо охотнее нанимают ИТ-шников на полгода-год.
По итогам 2024 г. примерно каждая восьмая компания (12%) подписывает с ИТ-шником трудовой договор, в котором нет четко указанного срока его действия.
Фирм, принимающих ИТ-работников в штат на полгода-год, оказалось 35%. Год назад их было около 20%.
Российские компании, ищущие в свой штат ИТ-специалиста, в подавляющем своем большинстве даже не смотрят на джунов – работников с базовым или вовсе отсутствующим опытом работы. В 2024 г., как и в 2023 г., таковых насчитывалось лишь около 2%.
Две трети компаний, около 66%, в 2024 г. искали ИТ-специалистов только высокого уровня – лидов, сеньоров или продвинутых мидлов. Годом ранее их было 75%.
В 2024 г. работодатели проявляли гораздо больший интерес к обычным мидлам, нежели в 2023 г. Спрос на специалистов среднего уровня увеличился в 2024 г. до 32% против 23% в 2023 г.
https://www.cnews.ru/news/top/2025-02-06_rossijskih_programmistov
CNews.ru
Российских программистов прекращают нанимать на бессрочный договор. Теперь их просто арендуют на полгода-год или даже меньше -…
ИТ-специалисты столкнулись в России с новым трендом – компании стали все чаще нанимать их лишь на короткое время, а бессрочный формат найма предлагает лишь каждая восьмая компания. Работодатели...
🤡27👍3👏2😁2🔥1
7 Распространенных стратегий очистки кэша
1. 𝐋𝐞𝐚𝐬𝐭 𝐑𝐞𝐜𝐞𝐧𝐭𝐥𝐲 𝐔𝐬𝐞𝐝 ( 𝐋𝐑𝐔 )
- Сначала удаляет элемент, к которому раньше не обращались
- Хорошо работает, когда вероятность повторного использования старых данных мала
- Пример: кэш браузера, кэши в памяти, такие как Redis.
2. 𝐋𝐞𝐚𝐬𝐭 𝐅𝐫𝐞𝐪𝐮𝐞𝐧𝐭𝐥𝐲 𝐔𝐬𝐞𝐝 ( 𝐋𝐅𝐔 )
- Удаляет наименее используемые элементы
- Приоритет сохранения часто используемых элементов в кэше
- Пример: кэши выводов машинного обучения, системы рекомендаций
3. 𝐅𝐢𝐫𝐬𝐭 𝐈𝐧, 𝐅𝐢𝐫𝐬𝐭 𝐎𝐮𝐭 (𝐅𝐈𝐅𝐎)
- Сначала удаляет самый старый сохраненный элемент, независимо от его использования
- Прост в реализации, но может привести к удалению все еще актуальных данных
- Пример: простые системы кэширования на основе очередей.
4. 𝐑𝐚𝐧𝐝𝐨𝐦 𝐑𝐞𝐩𝐥𝐚𝐜𝐞𝐦𝐞𝐧𝐭 (𝐑𝐑)
- Случайным образом удаляет данные, если кэш заполнен
- Низкие накладные расходы, но менее предсказуемая производительность
- Пример: используется в некоторых сетевых маршрутизаторах
5. 𝐌𝐨𝐬𝐭 𝐑𝐞𝐜𝐞𝐧𝐭𝐥𝐲 𝐔𝐬𝐞𝐝 ( 𝐌𝐑𝐔 )
- Противоположность LRU – сначала удаляет последний использованный элемент
- Полезно, когда последние данные быстро устаревают
- Пример: буферы потокового видео, некоторые финансовые приложения
6. 𝐓𝐢𝐦𝐞 𝐭𝐨 𝐋𝐢𝐯𝐞 ( 𝐓𝐓𝐋 )
- Данные удаляются по истечении установленного срока
- Предотвращает устаревание данных, полезно в распределенных системах
- Пример: кэширование DNS, кэширование ответов API
7. 𝐓𝐰𝐨-𝐓𝐢𝐞𝐫𝐞𝐝 𝐂𝐚𝐜𝐡𝐢𝐧𝐠 (Двухуровневый кэш)
- Использует быстрый кэш в памяти (например, Redis) и более медленный постоянный кэш (например, на диске)
- Оптимизирует скорость и хранение за счет балансировки горячих и холодных данных
- Пример: кэширование CDN, гибридные облачные решения для хранения данных
1. 𝐋𝐞𝐚𝐬𝐭 𝐑𝐞𝐜𝐞𝐧𝐭𝐥𝐲 𝐔𝐬𝐞𝐝 ( 𝐋𝐑𝐔 )
- Сначала удаляет элемент, к которому раньше не обращались
- Хорошо работает, когда вероятность повторного использования старых данных мала
- Пример: кэш браузера, кэши в памяти, такие как Redis.
2. 𝐋𝐞𝐚𝐬𝐭 𝐅𝐫𝐞𝐪𝐮𝐞𝐧𝐭𝐥𝐲 𝐔𝐬𝐞𝐝 ( 𝐋𝐅𝐔 )
- Удаляет наименее используемые элементы
- Приоритет сохранения часто используемых элементов в кэше
- Пример: кэши выводов машинного обучения, системы рекомендаций
3. 𝐅𝐢𝐫𝐬𝐭 𝐈𝐧, 𝐅𝐢𝐫𝐬𝐭 𝐎𝐮𝐭 (𝐅𝐈𝐅𝐎)
- Сначала удаляет самый старый сохраненный элемент, независимо от его использования
- Прост в реализации, но может привести к удалению все еще актуальных данных
- Пример: простые системы кэширования на основе очередей.
4. 𝐑𝐚𝐧𝐝𝐨𝐦 𝐑𝐞𝐩𝐥𝐚𝐜𝐞𝐦𝐞𝐧𝐭 (𝐑𝐑)
- Случайным образом удаляет данные, если кэш заполнен
- Низкие накладные расходы, но менее предсказуемая производительность
- Пример: используется в некоторых сетевых маршрутизаторах
5. 𝐌𝐨𝐬𝐭 𝐑𝐞𝐜𝐞𝐧𝐭𝐥𝐲 𝐔𝐬𝐞𝐝 ( 𝐌𝐑𝐔 )
- Противоположность LRU – сначала удаляет последний использованный элемент
- Полезно, когда последние данные быстро устаревают
- Пример: буферы потокового видео, некоторые финансовые приложения
6. 𝐓𝐢𝐦𝐞 𝐭𝐨 𝐋𝐢𝐯𝐞 ( 𝐓𝐓𝐋 )
- Данные удаляются по истечении установленного срока
- Предотвращает устаревание данных, полезно в распределенных системах
- Пример: кэширование DNS, кэширование ответов API
7. 𝐓𝐰𝐨-𝐓𝐢𝐞𝐫𝐞𝐝 𝐂𝐚𝐜𝐡𝐢𝐧𝐠 (Двухуровневый кэш)
- Использует быстрый кэш в памяти (например, Redis) и более медленный постоянный кэш (например, на диске)
- Оптимизирует скорость и хранение за счет балансировки горячих и холодных данных
- Пример: кэширование CDN, гибридные облачные решения для хранения данных
👍7