Параллельное исполнение запросов в MySQL при разработке сетевых демонов::Журнал СА 10.2013
www.samag.ru
Журнал «БИТ. Бизнес&Информационные технологии»      
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
Журнал "Системный администратор"
Журнал «БИТ»
Подписка
Архив номеров
Где купить
Наука и технологии
Авторам
Рекламодателям
Контакты
   

  Опросы
  Статьи

Работа с Debian  

О Linux с любовью или Debian: через знание к любви

Конечно, одним лишь перечислением замечательных качеств любовь к Linux не возникнет. Для

 Читать далее...

Опрос  

Защита личных и клиентских данных: как мошенники используют ИИ и как защититься?

По данным RED Security, общее число кибератак на российские компании в 2024

 Читать далее...

Опрос  

Облачные инструменты для разработчиков

Эксперты ИТ-отрасли отвечают на вопросы «Системного администратора» > Как с помощью облака сделать

 Читать далее...

Опрос  

Рынок мобильных приложений: что будет актуальным в 2025 году?

Эксперты ИТ-отрасли отвечают на вопросы «Системного администратора» > Ваши прогнозы: чего ожидать от

 Читать далее...

Рынок труда  

Как успешно пройти все этапы собеседования на ИТ-должность?

По оценкам государства, дефицит ИТ-специалистов составляет от 740 тысяч до 1 миллиона

 Читать далее...

1001 и 1 книга  
19.03.2018г.
Просмотров: 7608
Комментарии: 0
Машинное обучение с использованием библиотеки Н2О

 Читать далее...

12.03.2018г.
Просмотров: 7865
Комментарии: 0
Особенности киберпреступлений в России: инструменты нападения и защита информации

 Читать далее...

12.03.2018г.
Просмотров: 5223
Комментарии: 0
Глубокое обучение с точки зрения практика

 Читать далее...

12.03.2018г.
Просмотров: 3350
Комментарии: 0
Изучаем pandas

 Читать далее...

12.03.2018г.
Просмотров: 4145
Комментарии: 0
Программирование на языке Rust (Цветное издание)

 Читать далее...

19.12.2017г.
Просмотров: 4156
Комментарии: 0
Глубокое обучение

 Читать далее...

19.12.2017г.
Просмотров: 6655
Комментарии: 0
Анализ социальных медиа на Python

 Читать далее...

19.12.2017г.
Просмотров: 3492
Комментарии: 0
Основы блокчейна

 Читать далее...

19.12.2017г.
Просмотров: 3771
Комментарии: 0
Java 9. Полный обзор нововведений

 Читать далее...

16.02.2017г.
Просмотров: 7645
Комментарии: 0
Опоздавших не бывает, или книга о стеке

 Читать далее...

17.05.2016г.
Просмотров: 11010
Комментарии: 0
Теория вычислений для программистов

 Читать далее...

30.03.2015г.
Просмотров: 12734
Комментарии: 0
От математики к обобщенному программированию

 Читать далее...

18.02.2014г.
Просмотров: 14518
Комментарии: 0
Рецензия на книгу «Читаем Тьюринга»

 Читать далее...

13.02.2014г.
Просмотров: 9454
Комментарии: 0
Читайте, размышляйте, действуйте

 Читать далее...

12.02.2014г.
Просмотров: 7418
Комментарии: 0
Рисуем наши мысли

 Читать далее...

10.02.2014г.
Просмотров: 5701
Комментарии: 4
Страна в цифрах

 Читать далее...

18.12.2013г.
Просмотров: 4906
Комментарии: 0
Большие данные меняют нашу жизнь

 Читать далее...

18.12.2013г.
Просмотров: 3761
Комментарии: 0
Компьютерные технологии – корень зла для точки роста

 Читать далее...

04.12.2013г.
Просмотров: 3440
Комментарии: 0
Паутина в облаках

 Читать далее...

03.12.2013г.
Просмотров: 3672
Комментарии: 1
Рецензия на книгу «MongoDB в действии»

 Читать далее...

Друзья сайта  

 Параллельное исполнение запросов в MySQL при разработке сетевых демонов

Архив номеров / 2013 / Выпуск №10 (131) / Параллельное исполнение запросов в MySQL при разработке сетевых демонов

Рубрика: Разработка /  Оптимизация

Александр Календарев АЛЕКСАНДР КАЛЕНДАРЕВ, системный программист, занимался разработкой и внедрением нестандартных решений для систем с высокой нагрузкой. Эксперт по SQL-решениям и серверам очередей. Автор ряда Open Source-решений, используемых в веб-проектах с высокими нагрузками

Параллельное исполнение запросов в MySQL
при разработке сетевых демонов

Большинство серверов приложений используют обращения к БД. И, как правило, большей частью основного цикла исполнения является ожидание итогов запроса к БД. А можно ли как-то уменьшить издержки времени? Эффективность исполнения была бы гораздо выше, если бы мы смогли распараллелить выполнение запросов

Асинхронное выполнение параллельных запросов

Имеется два типа ввода/вывода: синхронный и асинхронный. Асинхронный ввод/вывод также называется перекрывающим, так как, пока происходит ожидание приема/передачи данных из одного источника, можно принять/передать иобработать данные из другого источника.

При синхронном (synchronous I/O) поток запускает операцию ввода/вывода и сразу входит в ждущий режим до тех пор, пока запрос не завершится.

Поток, выполняющий асинхронный ввод/вывод (asynchronous I/O), отправляет запрос ядру. Если он принят, поток продолжает заниматься другим заданием до тех пор, пока ядро не подаст сигналы, что операция ввода/вывода (I/O) полностью завершилась. Тогда поток прерывает текущую работу и обрабатывает данные от операции ввода/вывода (I/O) по мере необходимости.

Под «асинхронным вводом/выводом» также понимается возможность выполнять ввод/вывод из нескольких источников одновременно.

Асинхронные операции позволяют выполнять ресурсоемкие операции без отключения от основного потока. Это особенно важно там, где длительные операции ввода/вывода могут блокировать другие рабочие потоки, что вызовет задержку выполнения всего приложения.

Если рассмотреть исходники Си Client MySQL, то по ним можно определить, что libmysqlclient внутри себя использует операции асинхронного ввода/вывода. К сожалению, такие операции в MySQL сообществом не были доведены до ума ина практике в общем АПИ не представлены.

На просторах Интернета можно найти несколько проектов асинхронных MySQL-коннекторов [3, 4]. Стоит отметить новый проект от автора MySQL Monty и его коннектор к MariaDb [2], который полностью совместим как с протоколом MySQL, так и с MySQL API, за небольшим исключением: в prepared statements некорректно работает преобразование строки в тип float.

Принципиально для реализации асинхронного ввода/вывода можно использовать и его.

Однако программист Jan Kneschke в своем блоге [1] изложил результаты исследования, как можно реализовать асинхронный ввод/вывод для mysqlclient. По его материалу и был реализован mysql-модуль [5] для node.js.

Cуть его подхода – в использовании скрытых возможностей API libmysqlclient.

Статью целиком читайте в журнале «Системный администратор», №10 за 2013 г. на страницах 62-67.


Комментарии отсутствуют

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-45
E-mail: sa@samag.ru